diff --git a/sys/dev/scsipi/cd.c b/sys/dev/scsipi/cd.c index f5e68c836ccb..eb432d3a3986 100644 --- a/sys/dev/scsipi/cd.c +++ b/sys/dev/scsipi/cd.c @@ -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 -__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 @@ cdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l) case ODIOCEJECT: case DIOCEJECT: case DIOCCACHESYNC: + case DIOCTUR: case SCIOCIDENTIFY: case OSCIOCIDENTIFY: case SCIOCCOMMAND: @@ -1397,6 +1398,15 @@ cdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l) 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; diff --git a/sys/sys/dkio.h b/sys/sys/dkio.h index 517df3222105..a6c3a72528fc 100644 --- a/sys/sys/dkio.h +++ b/sys/sys/dkio.h @@ -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_ */