date and time created 92/07/10 00:14:44 by torek
authorChris Torek <torek@ucbvax.Berkeley.EDU>
Fri, 10 Jul 1992 15:14:44 +0000 (07:14 -0800)
committerChris Torek <torek@ucbvax.Berkeley.EDU>
Fri, 10 Jul 1992 15:14:44 +0000 (07:14 -0800)
SCCS-vsn: sys/sys/disk.h 5.1

usr/src/sys/sys/disk.h [new file with mode: 0644]

diff --git a/usr/src/sys/sys/disk.h b/usr/src/sys/sys/disk.h
new file mode 100644 (file)
index 0000000..e6786e7
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 1992 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This software was developed by the Computer Systems Engineering group
+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ * contributed to Berkeley.
+ *
+ * %sccs.include.redist.c%
+ *
+ *     @(#)disk.h      5.1 (Berkeley) %G%
+ *
+ * from: $Header: disk.h,v 1.1 92/07/10 07:13:43 torek Exp $ (LBL)
+ */
+
+/*
+ * Disk device structures.
+ *
+ * Note that this is only a preliminary outline.  The final disk structures
+ * may be somewhat different.
+ */
+struct buf;
+
+struct dkdevice {
+       struct  device dk_dev;          /* base device */
+       struct  dkdevice *dk_next;      /* list of disks; not yet used */
+       int     dk_wpms;                /* xfer rate */
+       int     dk_bopenmask;           /* block devices open */
+       int     dk_copenmask;           /* character devices open */
+       int     dk_openmask;            /* composite (bopen|copen) */
+       int     dk_state;               /* label state   ### */
+       int     dk_blkshift;            /* shift to convert DEV_BSIZE to blks */
+       int     dk_byteshift;           /* shift to convert bytes to blks */
+       struct  dkdriver *dk_driver;    /* pointer to driver */
+       daddr_t dk_labelsector;         /* sector containing label */
+       struct  disklabel dk_label;     /* label */
+};
+
+struct dkdriver {
+       void    (*d_strategy) __P((struct buf *));
+#ifdef notyet
+       int     (*d_open) __P((dev_t dev, int ifmt, int, struct proc *));
+       int     (*d_close) __P((dev_t dev, int, int ifmt, struct proc *));
+       int     (*d_ioctl) __P((dev_t dev, int cmd, caddr_t data, int fflag,
+                               struct proc *));
+       int     (*d_dump) __P((dev_t));
+#endif
+       void    (*d_start) __P((struct buf *, daddr_t));
+       int     (*d_mklabel) __P((struct dkdevice *));
+};
+
+/* states */
+#define        DK_CLOSED       0               /* drive is closed */
+#define        DK_WANTOPEN     1               /* drive being opened */
+#define        DK_WANTOPENRAW  2               /* drive being opened */
+#define        DK_RDLABEL      3               /* label being read */
+#define        DK_OPEN         4               /* label read, drive open */
+#define        DK_OPENRAW      5               /* open without label */
+
+#ifdef DISKSORT_STATS
+/*
+ * Stats from disksort().
+ */
+struct disksort_stats {
+       long    ds_newhead;             /* # new queue heads created */
+       long    ds_newtail;             /* # new queue tails created */
+       long    ds_midfirst;            /* # insertions into sort list */
+       long    ds_endfirst;            /* # insertions at end of sort list */
+       long    ds_newsecond;           /* # inversions (2nd lists) created */
+       long    ds_midsecond;           /* # insertions into 2nd list */
+       long    ds_endsecond;           /* # insertions at end of 2nd list */
+};
+#endif
+
+#ifdef KERNEL
+void   disksort __P((struct buf *, struct buf *));
+char   *readdisklabel __P((struct dkdevice *, int));
+int    setdisklabel __P((struct dkdevice *, struct disklabel *));
+int    writedisklabel __P((struct dkdevice *, int));
+int    diskerr __P((struct dkdevice *, struct buf *, char *, int, int));
+#endif