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

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef DASD_ECKD_H
  2. #define DASD_ECKD_H
  3. #include "dasd_3990_erp.h"
  4. #include "dasd_9343_erp.h"
  5. #define DASD_ECKD_CCW_WRITE 0x05
  6. #define DASD_ECKD_CCW_READ 0x06
  7. #define DASD_ECKD_CCW_WRITE_HOME_ADDRESS 0x09
  8. #define DASD_ECKD_CCW_READ_HOME_ADDRESS 0x0a
  9. #define DASD_ECKD_CCW_WRITE_KD 0x0d
  10. #define DASD_ECKD_CCW_READ_KD 0x0e
  11. #define DASD_ECKD_CCW_ERASE 0x11
  12. #define DASD_ECKD_CCW_READ_COUNT 0x12
  13. #define DASD_ECKD_CCW_WRITE_RECORD_ZERO 0x15
  14. #define DASD_ECKD_CCW_READ_RECORD_ZERO 0x16
  15. #define DASD_ECKD_CCW_WRITE_CKD 0x1d
  16. #define DASD_ECKD_CCW_READ_CKD 0x1e
  17. #define DASD_ECKD_CCW_LOCATE_RECORD 0x47
  18. #define DASD_ECKD_CCW_DEFINE_EXTENT 0x63
  19. #define DASD_ECKD_CCW_WRITE_MT 0x85
  20. #define DASD_ECKD_CCW_READ_MT 0x86
  21. #define DASD_ECKD_CCW_WRITE_KD_MT 0x8d
  22. #define DASD_ECKD_CCW_READ_KD_MT 0x8e
  23. #define DASD_ECKD_CCW_RELEASE 0x94
  24. #define DASD_ECKD_CCW_READ_CKD_MT 0x9e
  25. #define DASD_ECKD_CCW_WRITE_CKD_MT 0x9d
  26. #define DASD_ECKD_CCW_RESERVE 0xB4
  27. #define DASD_ECKD_CCW_SLCK 0x14 /* steal lock - unconditional reserve */
  28. typedef
  29.     struct eckd_count_t {
  30. __u16 cyl;
  31. __u16 head;
  32. __u8 record;
  33. __u8 kl;
  34. __u16 dl;
  35. } __attribute__ ((packed))
  36.     eckd_count_t;
  37. typedef
  38.     struct ch_t {
  39. __u16 cyl;
  40. __u16 head;
  41. } __attribute__ ((packed))
  42.     ch_t;
  43. typedef
  44.     struct chs_t {
  45. __u16 cyl;
  46. __u16 head;
  47. __u32 sector;
  48. } __attribute__ ((packed))
  49.     chs_t;
  50. typedef
  51.     struct chr_t {
  52. __u16 cyl;
  53. __u16 head;
  54. __u8 record;
  55. } __attribute__ ((packed))
  56.     chr_t;
  57. typedef
  58.     struct geom_t {
  59. __u16 cyl;
  60. __u16 head;
  61. __u32 sector;
  62. } __attribute__ ((packed))
  63.     geom_t;
  64. typedef struct eckd_home_t {
  65. __u8 skip_control[14];
  66. __u16 cell_number;
  67. __u8 physical_addr[3];
  68. __u8 flag;
  69. ch_t track_addr;
  70. __u8 reserved;
  71. __u8 key_length;
  72. __u8 reserved2[2];
  73. } __attribute__ ((packed))
  74.     eckd_home_t;
  75. typedef
  76.     struct DE_eckd_data_t {
  77. struct {
  78. unsigned char perm:2; /* Permissions on this extent */
  79. unsigned char reserved:1;
  80. unsigned char seek:2; /* Seek control */
  81. unsigned char auth:2; /* Access authorization */
  82. unsigned char pci:1; /* PCI Fetch mode */
  83. } __attribute__ ((packed)) mask;
  84. struct {
  85. unsigned char mode:2; /* Architecture mode */
  86. unsigned char ckd:1; /* CKD Conversion */
  87. unsigned char operation:3; /* Operation mode */
  88. unsigned char cfw:1; /* Cache fast write */
  89. unsigned char dfw:1; /* DASD fast write */
  90. } __attribute__ ((packed)) attributes;
  91. __u16 short blk_size; /* Blocksize */
  92. __u16 fast_write_id;
  93. __u8 unused;
  94. __u8 reserved;
  95. ch_t beg_ext;
  96. ch_t end_ext;
  97. } __attribute__ ((packed))
  98.     DE_eckd_data_t;
  99. typedef
  100.     struct LO_eckd_data_t {
  101. struct {
  102. unsigned char orientation:2;
  103. unsigned char operation:6;
  104. } __attribute__ ((packed)) operation;
  105. struct {
  106. unsigned char last_bytes_used:1;
  107. unsigned char reserved:6;
  108. unsigned char read_count_suffix:1;
  109. } __attribute__ ((packed)) auxiliary;
  110. __u8 unused;
  111. __u8 count;
  112. ch_t seek_addr;
  113. chr_t search_arg;
  114. __u8 sector;
  115. __u16 length;
  116. } __attribute__ ((packed))
  117.     LO_eckd_data_t;
  118. typedef
  119.     struct dasd_eckd_characteristics_t {
  120. __u16 cu_type;
  121. struct {
  122. unsigned char support:2;
  123. unsigned char async:1;
  124. unsigned char reserved:1;
  125. unsigned char cache_info:1;
  126. unsigned char model:3;
  127. } __attribute__ ((packed)) cu_model;
  128. __u16 dev_type;
  129. __u8 dev_model;
  130. struct {
  131. unsigned char mult_burst:1;
  132. unsigned char RT_in_LR:1;
  133. unsigned char reserved1:1;
  134. unsigned char RD_IN_LR:1;
  135. unsigned char reserved2:4;
  136. unsigned char reserved3:8;
  137. unsigned char defect_wr:1;
  138. unsigned char reserved4:2;
  139. unsigned char striping:1;
  140. unsigned char reserved5:4;
  141. unsigned char cfw:1;
  142. unsigned char reserved6:2;
  143. unsigned char cache:1;
  144. unsigned char dual_copy:1;
  145. unsigned char dfw:1;
  146. unsigned char reset_alleg:1;
  147. unsigned char sense_down:1;
  148. } __attribute__ ((packed)) facilities;
  149. __u8 dev_class;
  150. __u8 unit_type;
  151. __u16 no_cyl;
  152. __u16 trk_per_cyl;
  153. __u8 sec_per_trk;
  154. __u8 byte_per_track[3];
  155. __u16 home_bytes;
  156. __u8 formula;
  157. union {
  158. struct {
  159. __u8 f1;
  160. __u16 f2;
  161. __u16 f3;
  162. } __attribute__ ((packed)) f_0x01;
  163. struct {
  164. __u8 f1;
  165. __u8 f2;
  166. __u8 f3;
  167. __u8 f4;
  168. __u8 f5;
  169. } __attribute__ ((packed)) f_0x02;
  170. } __attribute__ ((packed)) factors;
  171. __u16 first_alt_trk;
  172. __u16 no_alt_trk;
  173. __u16 first_dia_trk;
  174. __u16 no_dia_trk;
  175. __u16 first_sup_trk;
  176. __u16 no_sup_trk;
  177. __u8 MDR_ID;
  178. __u8 OBR_ID;
  179. __u8 director;
  180. __u8 rd_trk_set;
  181. __u16 max_rec_zero;
  182. __u8 reserved1;
  183. __u8 RWANY_in_LR;
  184. __u8 factor6;
  185. __u8 factor7;
  186. __u8 factor8;
  187. __u8 reserved2[3];
  188. __u8 reserved3[10];
  189. } __attribute__ ((packed))
  190.     dasd_eckd_characteristics_t;
  191. typedef struct dasd_eckd_confdata_t {
  192. struct {
  193. struct {
  194. unsigned char identifier:2;
  195. unsigned char token_id:1;
  196. unsigned char sno_valid:1;
  197. unsigned char subst_sno:1;
  198. unsigned char recNED:1;
  199. unsigned char emuNED:1;
  200. unsigned char reserved:1;
  201. } __attribute__ ((packed)) flags;
  202. __u8 descriptor;
  203. __u8 dev_class;
  204. __u8 reserved;
  205. unsigned char dev_type[6];
  206. unsigned char dev_model[3];
  207. unsigned char HDA_manufacturer[3];
  208. unsigned char HDA_location[2];
  209. unsigned char HDA_seqno[12];
  210. __u16 ID;
  211. } __attribute__ ((packed)) ned1;
  212. struct {
  213. struct {
  214. unsigned char identifier:2;
  215. unsigned char token_id:1;
  216. unsigned char sno_valid:1;
  217. unsigned char subst_sno:1;
  218. unsigned char recNED:1;
  219. unsigned char emuNED:1;
  220. unsigned char reserved:1;
  221. } __attribute__ ((packed)) flags;
  222. __u8 descriptor;
  223. __u8 reserved[2];
  224. unsigned char dev_type[6];
  225. unsigned char dev_model[3];
  226. unsigned char DASD_manufacturer[3];
  227. unsigned char DASD_location[2];
  228. unsigned char DASD_seqno[12];
  229. __u16 ID;
  230. } __attribute__ ((packed)) ned2;
  231. struct {
  232. struct {
  233. unsigned char identifier:2;
  234. unsigned char token_id:1;
  235. unsigned char sno_valid:1;
  236. unsigned char subst_sno:1;
  237. unsigned char recNED:1;
  238. unsigned char emuNED:1;
  239. unsigned char reserved:1;
  240. } __attribute__ ((packed)) flags;
  241. __u8 descriptor;
  242. __u8 reserved[2];
  243. unsigned char cont_type[6];
  244. unsigned char cont_model[3];
  245. unsigned char cont_manufacturer[3];
  246. unsigned char cont_location[2];
  247. unsigned char cont_seqno[12];
  248. __u16 ID;
  249. } __attribute__ ((packed)) ned3;
  250. struct {
  251. struct {
  252. unsigned char identifier:2;
  253. unsigned char token_id:1;
  254. unsigned char sno_valid:1;
  255. unsigned char subst_sno:1;
  256. unsigned char recNED:1;
  257. unsigned char emuNED:1;
  258. unsigned char reserved:1;
  259. } __attribute__ ((packed)) flags;
  260. __u8 descriptor;
  261. __u8 reserved[2];
  262. unsigned char cont_type[6];
  263. unsigned char empty[3];
  264. unsigned char cont_manufacturer[3];
  265. unsigned char cont_location[2];
  266. unsigned char cont_seqno[12];
  267. __u16 ID;
  268. } __attribute__ ((packed)) ned4;
  269. unsigned char ned5[32];
  270. unsigned char ned6[32];
  271. unsigned char ned7[32];
  272. struct {
  273. struct {
  274. unsigned char identifier:2;
  275. unsigned char reserved:6;
  276. } __attribute__ ((packed)) flags;
  277. __u8 selector;
  278. __u16 interfaceID;
  279. __u32 reserved;
  280. __u16 subsystemID;
  281. struct {
  282. unsigned char sp0:1;
  283. unsigned char sp1:1;
  284. unsigned char reserved:5;
  285. unsigned char scluster:1;
  286. } __attribute__ ((packed)) spathID;
  287. __u8 unit_address;
  288. __u8 dev_ID;
  289. __u8 dev_address;
  290. __u8 adapterID;
  291. __u16 link_address;
  292. struct {
  293. unsigned char parallel:1;
  294. unsigned char escon:1;
  295. unsigned char reserved:1;
  296. unsigned char ficon:1;
  297. unsigned char reserved2:4;
  298. } __attribute__ ((packed)) protocol_type;
  299. struct {
  300. unsigned char PID_in_236:1;
  301. unsigned char reserved:7;
  302. } __attribute__ ((packed)) format_flags;
  303. __u8 log_dev_address;
  304. unsigned char reserved2[12];
  305. } __attribute__ ((packed)) neq;
  306. } __attribute__ ((packed))
  307.     dasd_eckd_confdata_t;
  308. int dasd_eckd_init (void);
  309. void dasd_eckd_cleanup (void);
  310. #endif /* DASD_ECKD_H */