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_ */

Reply via email to