]> git.proxmox.com Git - mirror_smartmontools-debian.git/blobdiff - os_freebsd.h
Imported Upstream version 5.38+svn2879
[mirror_smartmontools-debian.git] / os_freebsd.h
index a34dd8481b5b56fb62e975e52ec606ce2ff410bb..6793a43484e112a39b1aa52f61ab96e1e8bb35a1 100644 (file)
 #ifndef OS_FREEBSD_H_
 #define OS_FREEBSD_H_
 
-#define OS_FREEBSD_H_CVSID "$Id: os_freebsd.h,v 1.22 2008/03/04 22:09:47 ballen4705 Exp $\n"
+#define OS_FREEBSD_H_CVSID "$Id: os_freebsd.h,v 1.26 2009/01/14 02:39:00 sxzzsf Exp $\n"
 
 struct freebsd_dev_channel {
   int   channel;                // the ATA channel to work with
   int   device;                 // the device on the channel
+#ifndef IOCATAREQUEST
   int   atacommand;             // the ATA Command file descriptor (/dev/ata)
+#endif
   char* devname;                // the SCSI device name
   int   unitnum;                // the SCSI unit number
-  int   scsicontrol;            // the SCSI control interface
 };
 
 #define FREEBSD_MAXDEV 64
-#define FREEBSD_FDOFFSET 16;
+#define FREEBSD_FDOFFSET 16
 #define MAX_NUM_DEV 26
 
 #ifdef  HAVE_SYS_TWEREG_H
@@ -573,6 +574,56 @@ typedef struct tw_osli_ioctl_with_payload {
 
 #endif
 
+#define HPT_CTL_CODE(x) (x+0xFF00)
+#define HPT_IOCTL_GET_CHANNEL_INFO          HPT_CTL_CODE(3)
+#define HPT_IOCTL_GET_CHANNEL_INFO_V2       HPT_CTL_CODE(53)
+#define HPT_IOCTL_IDE_PASS_THROUGH          HPT_CTL_CODE(24)
+
+#define HPT_READ 1
+#define HPT_WRITE 2
+
+#define HPT_IOCTL_MAGIC   0xA1B2C3D4
+
+#define MAXDEV_PER_CHANNEL 2
+#define PMPORT_PER_CHANNEL 15 /* max devices connected to this channel via pmport */
+
+typedef struct _HPT_CHANNEL_INFO {
+  unsigned int reserve1;
+  unsigned int reserve2;
+  unsigned int devices[MAXDEV_PER_CHANNEL];
+} HPT_CHANNEL_INFO, *PHPT_CHANNEL_INFO;
+
+typedef struct _HPT_CHANNEL_INFO_V2 {
+  unsigned int reserve1;
+  unsigned int reserve2;
+  unsigned int devices[PMPORT_PER_CHANNEL];
+} HPT_CHANNEL_INFO_V2, *PHPT_CHANNEL_INFO_V2;
+
+typedef struct _HPT_IOCTL_PARAM {
+  unsigned int magic;     /* used to check if it's a valid ioctl packet */
+  unsigned int ctrl_code; /* operation control code */
+  void* in;               /* input data buffer */
+  unsigned int in_size;   /* size of input data buffer */
+  void* out;              /* output data buffer */
+  unsigned int out_size;  /* size of output data buffer */
+  void* returned_size;    /* count of chars returned */
+} HPT_IOCTL_PARAM, *PHPT_IOCTL_PARAM;
+#define HPT_DO_IOCONTROL       _IOW('H', 0, HPT_IOCTL_PARAM)
+
+typedef struct _HPT_PASS_THROUGH_HEADER {
+  unsigned int id;          /* disk ID */
+  unsigned char feature;
+  unsigned char sectorcount;
+  unsigned char lbalow;
+  unsigned char lbamid;
+  unsigned char lbahigh;
+  unsigned char driverhead;
+  unsigned char command;
+  unsigned char sectors;    /* data size in sectors, if the command has data transfer */
+  unsigned char protocol;   /* HPT_(READ,WRITE) or zero for non-DATA */
+  unsigned char reserve[3];
+}
+HPT_PASS_THROUGH_HEADER, *PHPT_PASS_THROUGH_HEADER;
 
 #ifndef __unused
 #define __unused __attribute__ ((__unused__))