2005-04-16 15:20:36 -07:00
# ifndef S390_CMB_H
# define S390_CMB_H
/**
2007-10-12 16:11:16 +02:00
* struct cmbdata - channel measurement block data for user space
* @ size : size of the stored data
* @ elapsed_time : time since last sampling
* @ ssch_rsch_count : number of ssch and rsch
* @ sample_count : number of samples
* @ device_connect_time : time of device connect
* @ function_pending_time : time of function pending
* @ device_disconnect_time : time of device disconnect
* @ control_unit_queuing_time : time of control unit queuing
* @ device_active_only_time : time of device active only
* @ device_busy_time : time of device busy ( ext . format )
* @ initial_command_response_time : initial command response time ( ext . format )
2005-04-16 15:20:36 -07:00
*
2007-10-12 16:11:16 +02:00
* All values are stored as 64 bit for simplicity , especially
2005-04-16 15:20:36 -07:00
* in 32 bit emulation mode . All time values are normalized to
* nanoseconds .
* Currently , two formats are known , which differ by the size of
* this structure , i . e . the last two members are only set when
* the extended channel measurement facility ( first shipped in
* z990 machines ) is activated .
2007-10-12 16:11:16 +02:00
* Potentially , more fields could be added , which would result in a
2005-04-16 15:20:36 -07:00
* new ioctl number .
2007-10-12 16:11:16 +02:00
*/
2005-04-16 15:20:36 -07:00
struct cmbdata {
__u64 size ;
__u64 elapsed_time ;
/* basic and exended format: */
__u64 ssch_rsch_count ;
__u64 sample_count ;
__u64 device_connect_time ;
__u64 function_pending_time ;
__u64 device_disconnect_time ;
__u64 control_unit_queuing_time ;
__u64 device_active_only_time ;
/* extended format only: */
__u64 device_busy_time ;
__u64 initial_command_response_time ;
} ;
/* enable channel measurement */
2007-10-12 16:11:15 +02:00
# define BIODASDCMFENABLE _IO(DASD_IOCTL_LETTER, 32)
2005-04-16 15:20:36 -07:00
/* enable channel measurement */
2007-10-12 16:11:15 +02:00
# define BIODASDCMFDISABLE _IO(DASD_IOCTL_LETTER, 33)
2005-04-16 15:20:36 -07:00
/* read channel measurement data */
2007-10-12 16:11:15 +02:00
# define BIODASDREADALLCMB _IOWR(DASD_IOCTL_LETTER, 33, struct cmbdata)
2005-04-16 15:20:36 -07:00
# ifdef __KERNEL__
2005-05-01 08:58:59 -07:00
struct ccw_device ;
2005-04-16 15:20:36 -07:00
extern int enable_cmf ( struct ccw_device * cdev ) ;
extern int disable_cmf ( struct ccw_device * cdev ) ;
extern u64 cmf_read ( struct ccw_device * cdev , int index ) ;
2007-10-12 16:11:15 +02:00
extern int cmf_readall ( struct ccw_device * cdev , struct cmbdata * data ) ;
2005-04-16 15:20:36 -07:00
# endif /* __KERNEL__ */
# endif /* S390_CMB_H */