ATAng stage 3: sync additional atang from 4.x, mostly non-opertional changes,
[dragonfly.git] / sys / dev / disk / ata / atapi-tape.c
index 77c49fb..ce0efbf 100644 (file)
@@ -26,6 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-tape.c,v 1.36.2.12 2002/07/31 11:19:26 sos Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-tape.c,v 1.36.2.12 2002/07/31 11:19:26 sos Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-tape.c,v 1.9 2004/02/18 01:35:59 dillon Exp $
  */
 
 #include "opt_ata.h"
  */
 
 #include "opt_ata.h"
 #include <sys/mtio.h>
 #include <sys/disklabel.h>
 #include <sys/devicestat.h>
 #include <sys/mtio.h>
 #include <sys/disklabel.h>
 #include <sys/devicestat.h>
-#include <dev/ata/ata-all.h>
-#include <dev/ata/atapi-all.h>
-#include <dev/ata/atapi-tape.h>
+#include <machine/bus.h>
+#include <sys/proc.h>
+#include <sys/buf2.h>
+#include "ata-all.h"
+#include "atapi-all.h"
+#include "atapi-tape.h"
 
 /* device structures */
 static d_open_t        astopen;
 static d_close_t       astclose;
 static d_ioctl_t       astioctl;
 static d_strategy_t    aststrategy;
 
 /* device structures */
 static d_open_t        astopen;
 static d_close_t       astclose;
 static d_ioctl_t       astioctl;
 static d_strategy_t    aststrategy;
+
 static struct cdevsw ast_cdevsw = {
 static struct cdevsw ast_cdevsw = {
+       /* name */      "ast",
+       /* maj */       119,
+       /* flags */     D_TAPE | D_TRACKCLOSE,
+       /* port */      NULL,
+       /* autoq */     0,
+
        /* open */      astopen,
        /* close */     astclose,
        /* read */      physread,
        /* open */      astopen,
        /* close */     astclose,
        /* read */      physread,
@@ -58,11 +69,8 @@ static struct cdevsw ast_cdevsw = {
        /* poll */      nopoll,
        /* mmap */      nommap,
        /* strategy */  aststrategy,
        /* poll */      nopoll,
        /* mmap */      nommap,
        /* strategy */  aststrategy,
-       /* name */      "ast",
-       /* maj */       119,
        /* dump */      nodump,
        /* dump */      nodump,
-       /* psize */     nopsize,
-       /* flags */     D_TAPE | D_TRACKCLOSE,
+       /* psize */     nopsize
 };
 
 /* prototypes */
 };
 
 /* prototypes */
@@ -92,7 +100,7 @@ astattach(struct ata_device *atadev)
     struct ast_readposition position;
     dev_t dev;
 
     struct ast_readposition position;
     dev_t dev;
 
-    stp = malloc(sizeof(struct ast_softc), M_AST, M_NOWAIT | M_ZERO);
+    stp = malloc(sizeof(struct ast_softc), M_AST, M_WAITOK | M_ZERO);
     if (!stp) {
        ata_prtdev(atadev, "out of memory\n");
        return 0;
     if (!stp) {
        ata_prtdev(atadev, "out of memory\n");
        return 0;
@@ -245,7 +253,7 @@ ast_describe(struct ast_softc *stp)
 }
 
 static int
 }
 
 static int
-astopen(dev_t dev, int flags, int fmt, struct proc *p)
+astopen(dev_t dev, int flags, int fmt, struct thread *td)
 {
     struct ast_softc *stp = dev->si_drv1;
 
 {
     struct ast_softc *stp = dev->si_drv1;
 
@@ -270,7 +278,7 @@ astopen(dev_t dev, int flags, int fmt, struct proc *p)
 }
 
 static int 
 }
 
 static int 
-astclose(dev_t dev, int flags, int fmt, struct proc *p)
+astclose(dev_t dev, int flags, int fmt, struct thread *td)
 {
     struct ast_softc *stp = dev->si_drv1;
 
 {
     struct ast_softc *stp = dev->si_drv1;
 
@@ -298,7 +306,7 @@ astclose(dev_t dev, int flags, int fmt, struct proc *p)
 }
 
 static int 
 }
 
 static int 
-astioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p)
+astioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td)
 {
     struct ast_softc *stp = dev->si_drv1;
     int error = 0;
 {
     struct ast_softc *stp = dev->si_drv1;
     int error = 0;
@@ -626,7 +634,7 @@ ast_load_unload(struct ast_softc *stp, u_int8_t function)
     error = atapi_queue_cmd(stp->device, ccb, NULL, 0, 0, 10, NULL, NULL);
     if (error)
        return error;
     error = atapi_queue_cmd(stp->device, ccb, NULL, 0, 0, 10, NULL, NULL);
     if (error)
        return error;
-    tsleep((caddr_t)&error, PRIBIO, "astlu", 1 * hz);
+    tsleep((caddr_t)&error, 0, "astlu", 1 * hz);
     if (function == SS_EJECT)
        return 0;
     return atapi_wait_dsc(stp->device, 60*60);
     if (function == SS_EJECT)
        return 0;
     return atapi_wait_dsc(stp->device, 60*60);