dasd.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:5k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* 
  2.  * File...........: linux/drivers/s390/block/dasd.c
  3.  * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
  4.  * Bugreports.to..: <Linux390@de.ibm.com>
  5.  * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
  6.  *
  7.  * This file is the interface of the DASD device driver, which is exported to user space
  8.  * any future changes wrt the API will result in a change of the APIVERSION reported
  9.  * to userspace by the DASDAPIVER-ioctl
  10.  *
  11.  * History of changes (starts July 2000)
  12.  * 05/04/01 created by moving the kernel interface to drivers/s390/block/dasd_int.h
  13.  */
  14. #ifndef DASD_H
  15. #define DASD_H
  16. #include <linux/ioctl.h>
  17. #define DASD_IOCTL_LETTER 'D'
  18. #if (DASD_API_VERSION == 0)
  19. #define DASD_PARTN_BITS 2
  20. /* 
  21.  * struct profile_info_t
  22.  * holds the profinling information 
  23.  */
  24. typedef struct dasd_profile_info_t {
  25.         unsigned int dasd_io_reqs;  /* number of requests processed at all */
  26.         unsigned int dasd_io_sects;  /* number of sectors processed at all */
  27.         unsigned int dasd_io_secs[32];  /* histogram of request's sizes */
  28.         unsigned int dasd_io_times[32];  /* histogram of requests's times */
  29.         unsigned int dasd_io_timps[32];  /* histogram of requests's times per sector */
  30.         unsigned int dasd_io_time1[32];  /* histogram of time from build to start */
  31.         unsigned int dasd_io_time2[32];  /* histogram of time from start to irq */
  32.         unsigned int dasd_io_time2ps[32]; /* histogram of time from start to irq */
  33.         unsigned int dasd_io_time3[32];  /* histogram of time from irq to end */
  34.         unsigned int dasd_io_nr_req[32]; /* histogram of # of requests in chanq */
  35. } dasd_profile_info_t;
  36. /* 
  37.  * struct format_data_t
  38.  * represents all data necessary to format a dasd
  39.  */
  40. typedef struct format_data_t {
  41. int start_unit; /* from track */
  42. int stop_unit;  /* to track */
  43. int blksize;    /* sectorsize */
  44.         int intensity;  
  45. } format_data_t;
  46. /*
  47.  * values to be used for format_data_t.intensity
  48.  * 0/8: normal format
  49.  * 1/9: also write record zero
  50.  * 3/11: also write home address
  51.  * 4/12: invalidate track
  52.  */
  53. #define DASD_FMT_INT_FMT_R0 1 /* write record zero */
  54. #define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */
  55. #define DASD_FMT_INT_INVAL  4 /* invalidate tracks */
  56. #define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */
  57. /* 
  58.  * struct dasd_information_t
  59.  * represents any data about the data, which is visible to userspace
  60.  */
  61. typedef struct dasd_information_t {
  62.         unsigned int devno; /* S/390 devno */
  63.         unsigned int real_devno; /* for aliases */
  64.         unsigned int schid; /* S/390 subchannel identifier */
  65.         unsigned int cu_type  : 16; /* from SenseID */
  66.         unsigned int cu_model :  8; /* from SenseID */
  67.         unsigned int dev_type : 16; /* from SenseID */
  68.         unsigned int dev_model : 8; /* from SenseID */
  69.         unsigned int open_count; 
  70.         unsigned int req_queue_len; 
  71.         unsigned int chanq_len;
  72.         char type[4]; /* from discipline.name, 'none' for unknown */
  73.         unsigned int status; /* current device level */
  74.         unsigned int label_block; /* where to find the VOLSER */
  75.         unsigned int FBA_layout; /* fixed block size (like AIXVOL) */
  76.         unsigned int characteristics_size;
  77.         unsigned int confdata_size;
  78.         char characteristics[64]; /* from read_device_characteristics */
  79.         char configuration_data[256]; /* from read_configuration_data */
  80. } dasd_information_t;
  81. /* Disable the volume (for Linux) */
  82. #define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0) 
  83. /* Enable the volume (for Linux) */
  84. #define BIODASDENABLE  _IO(DASD_IOCTL_LETTER,1)  
  85. /* Issue a reserve/release command, rsp. */
  86. #define BIODASDRSRV    _IO(DASD_IOCTL_LETTER,2) /* reserve */
  87. #define BIODASDRLSE    _IO(DASD_IOCTL_LETTER,3) /* release */
  88. #define BIODASDSLCK    _IO(DASD_IOCTL_LETTER,4) /* steal lock */
  89. /* reset profiling information of a device */
  90. #define BIODASDPRRST   _IO(DASD_IOCTL_LETTER,5)
  91. /* retrieve API version number */
  92. #define DASDAPIVER     _IOR(DASD_IOCTL_LETTER,0,int)
  93. /* Get information on a dasd device */
  94. #define BIODASDINFO    _IOR(DASD_IOCTL_LETTER,1,dasd_information_t)
  95. /* retrieve profiling information of a device */
  96. #define BIODASDPRRD    _IOR(DASD_IOCTL_LETTER,2,dasd_profile_info_t)
  97. /* #define BIODASDFORMAT  _IOW(IOCTL_LETTER,0,format_data_t) , deprecated */
  98. #define BIODASDFMT     _IOW(DASD_IOCTL_LETTER,1,format_data_t) 
  99. #endif /* DASD_API_VERSION */
  100. #endif /* DASD_H */
  101. /*
  102.  * Overrides for Emacs so that we follow Linus's tabbing style.
  103.  * Emacs will notice this stuff at the end of the file and automatically
  104.  * adjust the settings for this buffer only.  This must remain at the end
  105.  * of the file.
  106.  * ---------------------------------------------------------------------------
  107.  * Local variables:
  108.  * c-indent-level: 4 
  109.  * c-brace-imaginary-offset: 0
  110.  * c-brace-offset: -4
  111.  * c-argdecl-indent: 4
  112.  * c-label-offset: -4
  113.  * c-continued-statement-offset: 4
  114.  * c-continued-brace-offset: 0
  115.  * indent-tabs-mode: nil
  116.  * tab-width: 8
  117.  * End:
  118.  */