libblkid-tiny: Update the code from util-linux's libblkid
[project/fstools.git] / libblkid-tiny / blkdev.h
index 6b18879..c994795 100644 (file)
@@ -1,3 +1,9 @@
+/*
+ * No copyright is claimed.  This code is in the public domain; do with
+ * it what you wish.
+ *
+ * Written by Karel Zak <kzak@redhat.com>
+ */
 #ifndef BLKDEV_H
 #define BLKDEV_H
 
@@ -16,7 +22,7 @@
 #define DEFAULT_SECTOR_SIZE       512
 
 #ifdef __linux__
-/* very basic ioclts, should be available everywhere */
+/* very basic ioctls, should be available everywhere */
 # ifndef BLKROSET
 #  define BLKROSET   _IO(0x12,93)      /* set device read-only (0 = read-write) */
 #  define BLKROGET   _IO(0x12,94)      /* get read-only status (0 = read_write) */
 #  define FITHAW     _IOWR('X', 120, int)    /* Thaw */
 # endif
 
+/* uniform CD-ROM information */
+# ifndef CDROM_GET_CAPABILITY
+#  define CDROM_GET_CAPABILITY 0x5331
+# endif
+
 #endif /* __linux */
 
+
 #ifdef APPLE_DARWIN
 # define BLKGETSIZE DKIOCGETBLOCKCOUNT32
 #endif
 #  define HDIO_GETGEO 0x0301
 # endif
 
-/* uniform CD-ROM information */
-#ifndef CDROM_GET_CAPABILITY
-# define CDROM_GET_CAPABILITY 0x5331
-#endif
-
 struct hd_geometry {
        unsigned char heads;
        unsigned char sectors;
        unsigned short cylinders;       /* truncated */
        unsigned long start;
 };
-#endif
+#endif /* HDIO_GETGEO */
+
 
 /* are we working with block device? */
 int is_blkdev(int fd);
@@ -110,4 +118,29 @@ int blkdev_get_physector_size(int fd, int *sector_size);
 /* is the device cdrom capable? */
 int blkdev_is_cdrom(int fd);
 
+/* get device's geometry - legacy */
+int blkdev_get_geometry(int fd, unsigned int *h, unsigned int *s);
+
+/* SCSI device types.  Copied almost as-is from kernel header.
+ * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/scsi/scsi.h */
+#define SCSI_TYPE_DISK                 0x00
+#define SCSI_TYPE_TAPE                 0x01
+#define SCSI_TYPE_PRINTER              0x02
+#define SCSI_TYPE_PROCESSOR            0x03    /* HP scanners use this */
+#define SCSI_TYPE_WORM                 0x04    /* Treated as ROM by our system */
+#define SCSI_TYPE_ROM                  0x05
+#define SCSI_TYPE_SCANNER              0x06
+#define SCSI_TYPE_MOD                  0x07    /* Magneto-optical disk - treated as SCSI_TYPE_DISK */
+#define SCSI_TYPE_MEDIUM_CHANGER       0x08
+#define SCSI_TYPE_COMM                 0x09    /* Communications device */
+#define SCSI_TYPE_RAID                 0x0c
+#define SCSI_TYPE_ENCLOSURE            0x0d    /* Enclosure Services Device */
+#define SCSI_TYPE_RBC                  0x0e
+#define SCSI_TYPE_OSD                  0x11
+#define SCSI_TYPE_NO_LUN               0x7f
+
+/* convert scsi type code to name */
+const char *blkdev_scsi_type_to_name(int type);
+
+
 #endif /* BLKDEV_H */