Module Name: src Committed By: martin Date: Mon Mar 22 16:49:41 UTC 2010
Modified Files: src/sys/dev/scsipi: cd.c src/sys/sys: dkio.h Log Message: Add a DIOCTUR (test unit ready) ioctl, to allow userland to easily (and silently) check for presence of media. While this would be easy to implement via SCIOCCOMMAND, our kernel has quirks for this command, which otherwise would not be readily available to userland applications. To generate a diff of this commit: cvs rdiff -u -r1.298 -r1.299 src/sys/dev/scsipi/cd.c cvs rdiff -u -r1.15 -r1.16 src/sys/sys/dkio.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/scsipi/cd.c diff -u src/sys/dev/scsipi/cd.c:1.298 src/sys/dev/scsipi/cd.c:1.299 --- src/sys/dev/scsipi/cd.c:1.298 Thu Mar 11 04:00:36 2010 +++ src/sys/dev/scsipi/cd.c Mon Mar 22 16:49:41 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cd.c,v 1.298 2010/03/11 04:00:36 mrg Exp $ */ +/* $NetBSD: cd.c,v 1.299 2010/03/22 16:49:41 martin Exp $ */ /*- * Copyright (c) 1998, 2001, 2003, 2004, 2005, 2008 The NetBSD Foundation, @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.298 2010/03/11 04:00:36 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.299 2010/03/22 16:49:41 martin Exp $"); #include "rnd.h" @@ -1270,6 +1270,7 @@ case ODIOCEJECT: case DIOCEJECT: case DIOCCACHESYNC: + case DIOCTUR: case SCIOCIDENTIFY: case OSCIOCIDENTIFY: case SCIOCCOMMAND: @@ -1397,6 +1398,15 @@ return error; #endif + case DIOCTUR: { + /* test unit ready */ + error = scsipi_test_unit_ready(cd->sc_periph, XS_CTL_SILENT); + *((int*)addr) = (error == 0); + if (error == ENODEV || error == EIO || error == 0) + return 0; + return error; + } + case CDIOCPLAYTRACKS: { /* PLAY_MSF command */ struct ioc_play_track *args = addr; Index: src/sys/sys/dkio.h diff -u src/sys/sys/dkio.h:1.15 src/sys/sys/dkio.h:1.16 --- src/sys/sys/dkio.h:1.15 Tue Dec 22 18:55:25 2009 +++ src/sys/sys/dkio.h Mon Mar 22 16:49:41 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: dkio.h,v 1.15 2009/12/22 18:55:25 pooka Exp $ */ +/* $NetBSD: dkio.h,v 1.16 2010/03/22 16:49:41 martin Exp $ */ /* * Copyright (c) 1987, 1988, 1993 @@ -105,4 +105,7 @@ /* get disk-info dictionary */ #define DIOCGDISKINFO _IOR('d', 127, struct plistref) + +#define DIOCTUR _IOR('d', 128, int) /* test unit ready */ + #endif /* _SYS_DKIO_H_ */