home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-s390 / cmb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.8 KB  |  99 lines

  1. #ifndef S390_CMB_H
  2. #define S390_CMB_H
  3. /**
  4.  * struct cmbdata -- channel measurement block data for user space
  5.  *
  6.  * @size:    size of the stored data
  7.  * @ssch_rsch_count: XXX
  8.  * @sample_count:
  9.  * @device_connect_time:
  10.  * @function_pending_time:
  11.  * @device_disconnect_time:
  12.  * @control_unit_queuing_time:
  13.  * @device_active_only_time:
  14.  * @device_busy_time:
  15.  * @initial_command_response_time:
  16.  *
  17.  * all values are stored as 64 bit for simplicity, especially
  18.  * in 32 bit emulation mode. All time values are normalized to
  19.  * nanoseconds.
  20.  * Currently, two formats are known, which differ by the size of
  21.  * this structure, i.e. the last two members are only set when
  22.  * the extended channel measurement facility (first shipped in
  23.  * z990 machines) is activated.
  24.  * Potentially, more fields could be added, which results in a
  25.  * new ioctl number.
  26.  **/
  27. struct cmbdata {
  28.     __u64 size;
  29.     __u64 elapsed_time;
  30.  /* basic and exended format: */
  31.     __u64 ssch_rsch_count;
  32.     __u64 sample_count;
  33.     __u64 device_connect_time;
  34.     __u64 function_pending_time;
  35.     __u64 device_disconnect_time;
  36.     __u64 control_unit_queuing_time;
  37.     __u64 device_active_only_time;
  38.  /* extended format only: */
  39.     __u64 device_busy_time;
  40.     __u64 initial_command_response_time;
  41. };
  42.  
  43. /* enable channel measurement */
  44. #define BIODASDCMFENABLE    _IO(DASD_IOCTL_LETTER,32)
  45. /* enable channel measurement */
  46. #define BIODASDCMFDISABLE    _IO(DASD_IOCTL_LETTER,33)
  47. /* reset channel measurement block */
  48. #define BIODASDRESETCMB        _IO(DASD_IOCTL_LETTER,34)
  49. /* read channel measurement data */
  50. #define BIODASDREADCMB        _IOWR(DASD_IOCTL_LETTER,32,__u64)
  51. /* read channel measurement data */
  52. #define BIODASDREADALLCMB    _IOWR(DASD_IOCTL_LETTER,33,struct cmbdata)
  53.  
  54. #ifdef __KERNEL__
  55. struct ccw_device;
  56. /**
  57.  * enable_cmf() - switch on the channel measurement for a specific device
  58.  *  @cdev:    The ccw device to be enabled
  59.  *  returns 0 for success or a negative error value.
  60.  *
  61.  *  Context:
  62.  *    non-atomic
  63.  **/
  64. extern int enable_cmf(struct ccw_device *cdev);
  65.  
  66. /**
  67.  * disable_cmf() - switch off the channel measurement for a specific device
  68.  *  @cdev:    The ccw device to be disabled
  69.  *  returns 0 for success or a negative error value.
  70.  *
  71.  *  Context:
  72.  *    non-atomic
  73.  **/
  74. extern int disable_cmf(struct ccw_device *cdev);
  75.  
  76. /**
  77.  * cmf_read() - read one value from the current channel measurement block
  78.  * @cmf:    the channel to be read
  79.  * @index:    the name of the value that is read
  80.  *
  81.  *  Context:
  82.  *    any
  83.  **/
  84.  
  85. extern u64 cmf_read(struct ccw_device *cdev, int index);
  86. /**
  87.  * cmf_readall() - read one value from the current channel measurement block
  88.  * @cmf:    the channel to be read
  89.  * @data:    a pointer to a data block that will be filled
  90.  *
  91.  *  Context:
  92.  *    any
  93.  **/
  94. extern int cmf_readall(struct ccw_device *cdev, struct cmbdata*data);
  95. extern void cmf_reset(struct ccw_device *cdev);
  96.  
  97. #endif /* __KERNEL__ */
  98. #endif /* S390_CMB_H */
  99.