dasd.h

来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 269 行

H
269
字号
/*  * File...........: linux/drivers/s390/block/dasd.c * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> * Bugreports.to..: <Linux390@de.ibm.com> * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 * * This file is the interface of the DASD device driver, which is exported to user space * any future changes wrt the API will result in a change of the APIVERSION reported * to userspace by the DASDAPIVER-ioctl * * $Revision: 1.6 $ * */#ifndef DASD_H#define DASD_H#include <linux/ioctl.h>#define DASD_IOCTL_LETTER 'D'#define DASD_API_VERSION 6/*  * struct dasd_information2_t * represents any data about the device, which is visible to userspace. *  including foramt and featueres. */typedef struct dasd_information2_t {        unsigned int devno;         /* S/390 devno */        unsigned int real_devno;    /* for aliases */        unsigned int schid;         /* S/390 subchannel identifier */        unsigned int cu_type  : 16; /* from SenseID */        unsigned int cu_model :  8; /* from SenseID */        unsigned int dev_type : 16; /* from SenseID */        unsigned int dev_model : 8; /* from SenseID */        unsigned int open_count;         unsigned int req_queue_len;         unsigned int chanq_len;     /* length of chanq */        char type[4];               /* from discipline.name, 'none' for unknown */        unsigned int status;        /* current device level */        unsigned int label_block;   /* where to find the VOLSER */        unsigned int FBA_layout;    /* fixed block size (like AIXVOL) */        unsigned int characteristics_size;        unsigned int confdata_size;        char characteristics[64];   /* from read_device_characteristics */        char configuration_data[256]; /* from read_configuration_data */        unsigned int format;          /* format info like formatted/cdl/ldl/... */        unsigned int features;        /* dasd features like 'ro',...            */        unsigned int reserved0;       /* reserved for further use ,...          */        unsigned int reserved1;       /* reserved for further use ,...          */        unsigned int reserved2;       /* reserved for further use ,...          */        unsigned int reserved3;       /* reserved for further use ,...          */        unsigned int reserved4;       /* reserved for further use ,...          */        unsigned int reserved5;       /* reserved for further use ,...          */        unsigned int reserved6;       /* reserved for further use ,...          */        unsigned int reserved7;       /* reserved for further use ,...          */} dasd_information2_t;/* * values to be used for dasd_information_t.format * 0x00: NOT formatted * 0x01: Linux disc layout * 0x02: Common disc layout */#define DASD_FORMAT_NONE 0#define DASD_FORMAT_LDL  1#define DASD_FORMAT_CDL  2/* * values to be used for dasd_information_t.features * 0x00: default features * 0x01: readonly (ro) * 0x02: use diag discipline (diag) */#define DASD_FEATURE_DEFAULT  0#define DASD_FEATURE_READONLY 1#define DASD_FEATURE_USEDIAG  2#define DASD_PARTN_BITS 2/*  * struct dasd_information_t * represents any data about the data, which is visible to userspace */typedef struct dasd_information_t {        unsigned int devno;         /* S/390 devno */        unsigned int real_devno;    /* for aliases */        unsigned int schid;         /* S/390 subchannel identifier */        unsigned int cu_type  : 16; /* from SenseID */        unsigned int cu_model :  8; /* from SenseID */        unsigned int dev_type : 16; /* from SenseID */        unsigned int dev_model : 8; /* from SenseID */        unsigned int open_count;         unsigned int req_queue_len;         unsigned int chanq_len;     /* length of chanq */        char type[4];               /* from discipline.name, 'none' for unknown */        unsigned int status;        /* current device level */        unsigned int label_block;   /* where to find the VOLSER */        unsigned int FBA_layout;    /* fixed block size (like AIXVOL) */        unsigned int characteristics_size;        unsigned int confdata_size;        char characteristics[64];   /* from read_device_characteristics */        char configuration_data[256]; /* from read_configuration_data */} dasd_information_t;/* * Read Subsystem Data - Perfomance Statistics */ typedef struct dasd_rssd_perf_stats_t {	unsigned char  invalid:1;	unsigned char  format:3;	unsigned char  data_format:4;	unsigned char  unit_address;	unsigned short device_status;	unsigned int   nr_read_normal;	unsigned int   nr_read_normal_hits;	unsigned int   nr_write_normal;	unsigned int   nr_write_fast_normal_hits;	unsigned int   nr_read_seq;	unsigned int   nr_read_seq_hits;	unsigned int   nr_write_seq;	unsigned int   nr_write_fast_seq_hits;	unsigned int   nr_read_cache;	unsigned int   nr_read_cache_hits;	unsigned int   nr_write_cache;	unsigned int   nr_write_fast_cache_hits;	unsigned int   nr_inhibit_cache;	unsigned int   nr_bybass_cache;	unsigned int   nr_seq_dasd_to_cache;	unsigned int   nr_dasd_to_cache;	unsigned int   nr_cache_to_dasd;	unsigned int   nr_delayed_fast_write;	unsigned int   nr_normal_fast_write;	unsigned int   nr_seq_fast_write;	unsigned int   nr_cache_miss;	unsigned char  status2;	unsigned int   nr_quick_write_promotes;	unsigned char  reserved;	unsigned short ssid;	unsigned char  reseved2[96];} __attribute__((packed)) dasd_rssd_perf_stats_t;/*  * struct profile_info_t * holds the profinling information  */typedef struct dasd_profile_info_t {        unsigned int dasd_io_reqs;	 /* number of requests processed at all */        unsigned int dasd_io_sects;	 /* number of sectors processed at all */        unsigned int dasd_io_secs[32];	 /* histogram of request's sizes */        unsigned int dasd_io_times[32];	 /* histogram of requests's times */        unsigned int dasd_io_timps[32];	 /* histogram of requests's times per sector */        unsigned int dasd_io_time1[32];	 /* histogram of time from build to start */        unsigned int dasd_io_time2[32];	 /* histogram of time from start to irq */        unsigned int dasd_io_time2ps[32]; /* histogram of time from start to irq */        unsigned int dasd_io_time3[32];	 /* histogram of time from irq to end */        unsigned int dasd_io_nr_req[32]; /* histogram of # of requests in chanq */} dasd_profile_info_t;/*  * struct format_data_t * represents all data necessary to format a dasd */typedef struct format_data_t {	int start_unit; /* from track */	int stop_unit;  /* to track */	int blksize;    /* sectorsize */        int intensity;  } format_data_t;/* * values to be used for format_data_t.intensity * 0/8: normal format * 1/9: also write record zero * 3/11: also write home address * 4/12: invalidate track */#define DASD_FMT_INT_FMT_R0 1 /* write record zero */#define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */#define DASD_FMT_INT_INVAL  4 /* invalidate tracks */#define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout *//*  * struct attrib_data_t * represents the operation (cache) bits for the device. * Used in DE to influence caching of the DASD. */typedef struct attrib_data_t {	unsigned char operation:3;     /* cache operation mode */	unsigned char reserved:5;      /* cache operation mode */	__u16         nr_cyl;          /* no of cyliners for read ahaed */	__u8          reserved2[29];   /* for future use */} __attribute__ ((packed)) attrib_data_t;/* definition of operation (cache) bits within attributes of DE */#define DASD_NORMAL_CACHE  0x0#define DASD_BYPASS_CACHE  0x1#define DASD_INHIBIT_LOAD  0x2#define DASD_SEQ_ACCESS    0x3#define DASD_SEQ_PRESTAGE  0x4#define DASD_REC_ACCESS    0x5/******************************************************************************** * SECTION: Definition of IOCTLs * * Here ist how the ioctl-nr should be used: *    0 -   31   DASD driver itself *   32 -  239   still open *  240 -  255   reserved for EMC  *******************************************************************************//* Disable the volume (for Linux) */#define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0) /* Enable the volume (for Linux) */#define BIODASDENABLE  _IO(DASD_IOCTL_LETTER,1)  /* Issue a reserve/release command, rsp. */#define BIODASDRSRV    _IO(DASD_IOCTL_LETTER,2) /* reserve */#define BIODASDRLSE    _IO(DASD_IOCTL_LETTER,3) /* release */#define BIODASDSLCK    _IO(DASD_IOCTL_LETTER,4) /* steal lock *//* reset profiling information of a device */#define BIODASDPRRST   _IO(DASD_IOCTL_LETTER,5)/* Quiesce IO on device */#define BIODASDQUIESCE _IO(DASD_IOCTL_LETTER,6) /* Resume IO on device */#define BIODASDRESUME  _IO(DASD_IOCTL_LETTER,7) /* retrieve API version number */#define DASDAPIVER     _IOR(DASD_IOCTL_LETTER,0,int)/* Get information on a dasd device */#define BIODASDINFO    _IOR(DASD_IOCTL_LETTER,1,dasd_information_t)/* retrieve profiling information of a device */#define BIODASDPRRD    _IOR(DASD_IOCTL_LETTER,2,dasd_profile_info_t)/* Get information on a dasd device (enhanced) */#define BIODASDINFO2   _IOR(DASD_IOCTL_LETTER,3,dasd_information2_t)/* Performance Statistics Read */#define BIODASDPSRD    _IOR(DASD_IOCTL_LETTER,4,dasd_rssd_perf_stats_t)/* Get Attributes (cache operations) */#define BIODASDGATTR   _IOR(DASD_IOCTL_LETTER,5,attrib_data_t) /* #define BIODASDFORMAT  _IOW(IOCTL_LETTER,0,format_data_t) , deprecated */#define BIODASDFMT     _IOW(DASD_IOCTL_LETTER,1,format_data_t) /* Set Attributes (cache operations) */#define BIODASDSATTR   _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) #endif				/* DASD_H *//* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only.  This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-indent-level: 4  * c-brace-imaginary-offset: 0 * c-brace-offset: -4 * c-argdecl-indent: 4 * c-label-offset: -4 * c-continued-statement-offset: 4 * c-continued-brace-offset: 0 * indent-tabs-mode: nil * tab-width: 8 * End: */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?