@@ -25,35 +25,29 @@ typedef struct CCKD_EXT CCKD_EXT; // CCKD Extension block
25
25
typedef struct SPCTAB SPCTAB ; // Space table
26
26
27
27
/*-------------------------------------------------------------------*/
28
- /* Structure definitions for CKD headers */
28
+ /* Structure definitions for CKD headers */
29
+ /*-------------------------------------------------------------------*/
30
+ /* NOTE: The dh_heads, dh_trksize and dh_highcyl */
31
+ /* values are always kept in LITTLE endian format. */
29
32
/*-------------------------------------------------------------------*/
30
33
struct CKD_DEVHDR /* Device header */
31
34
{
32
- BYTE devhdrid [8 ]; /* ASCII Device Header id;
35
+ BYTE dh_devid [8 ]; /* ASCII Device Header id;
33
36
see dasdblks.h for list */
34
-
35
- FWORD heads ; /* CKD: heads per cylinder
36
- CFBA: number of sectors
37
- (bytes in reverse order) */
38
-
39
- FWORD trksize ; /* CKD: track size
40
- CFBA: sector size
41
- (bytes in reverse order) */
42
-
43
- BYTE dvtyp ; /* Low byte of hex device type
37
+ FWORD dh_heads ; /* CKD: heads per cylinder
38
+ CFBA: number of sectors */
39
+ FWORD dh_trksize ; /* CKD: track size
40
+ CFBA: sector size */
41
+ BYTE dh_devtyp ; /* Low byte of hex device type
44
42
(x80=3380, x90=3390, etc) */
45
-
46
- BYTE fileseq ; /* CKD: image file sequence no.
43
+ BYTE dh_fileseq ; /* CKD: image file sequence no.
47
44
(0=only file, 1=first file
48
45
of multiple files)
49
46
CFBA: 0 (not used) */
50
-
51
- HWORD highcyl ; /* CKD: Highest cylinder number
47
+ HWORD dh_highcyl ; /* CKD: Highest cylinder number
52
48
on this file, or zero if this
53
49
is the last or only file.
54
- CFBA: zero (not used)
55
- (bytes in reverse order) */
56
-
50
+ CFBA: zero (not used) */
57
51
BYTE resv [492 ]; /* Reserved */
58
52
};
59
53
@@ -92,45 +86,41 @@ struct CKD_RECHDR { /* Record header */
92
86
#define CKD_NULLTRK_SIZE2 (5 + 8 + 8 + (12 * (8 + 4096)) + 8)
93
87
94
88
/*-------------------------------------------------------------------*/
95
- /* Structure definitions for Compressed CCKD/CFBA devices */
89
+ /* Structure definitions for Compressed CCKD/CFBA devices */
90
+ /*-------------------------------------------------------------------*/
91
+ /* NOTE: The num_L1tab, num_L2tab, cyls, cdh_size, cdh_used, */
92
+ /* free_off, free_total, free_largest, free_num, free_imbed, */
93
+ /* and cmp_parm fields are kept in LITTLE endian format. */
96
94
/*-------------------------------------------------------------------*/
97
95
struct CCKD_DEVHDR /* Compress device header */
98
96
{
99
- /* 0 */ BYTE vrm [3 ]; /* Version Release Modifier */
100
- /* 3 */ BYTE opts ; /* Options byte */
101
-
97
+ /* 0 */ BYTE cdh_vrm [3 ]; /* Version Release Modifier */
98
+ /* 3 */ BYTE cdh_opts ; /* Options byte */
102
99
/* 4 */ S32 num_L1tab ; /* Number of L1tab entries */
103
100
/* 8 */ S32 num_L2tab ; /* Number of L2tab entries */
104
-
105
101
/* 12 */ U32 cdh_size ; /* File size */
106
102
/* 16 */ U32 cdh_used ; /* File used */
107
-
108
103
/* 20 */ U32 free_off ; /* Offset to free space */
109
104
/* 24 */ U32 free_total ; /* Total free space */
110
105
/* 28 */ U32 free_largest ; /* Largest free space */
111
106
/* 32 */ S32 free_num ; /* Number free spaces */
112
107
/* 36 */ U32 free_imbed ; /* Imbedded free space */
113
-
114
- /* 40 */ FWORD cyls ; /* CCKD: Cylinders on device
108
+ /* 40 */ FWORD cdh_cyls ; /* CCKD: Cylinders on device
115
109
CFBA: Sectors on device */
116
-
117
- /* 44 */ BYTE nullfmt ; /* Null track format */
118
-
110
+ /* 44 */ BYTE cdh_nullfmt ; /* Null track format */
119
111
/* 45 */ BYTE cmp_algo ; /* Compression algorithm */
120
112
/* 46 */ S16 cmp_parm ; /* Compression parameter */
121
-
122
113
/* 48 */ BYTE resv2 [464 ]; /* Reserved */
123
114
};
124
115
125
116
#define CCKD_VERSION 0
126
117
#define CCKD_RELEASE 3
127
118
#define CCKD_MODLVL 1
128
119
129
- #define CCKD_BIGENDIAN 2
130
- #define CCKD_SPERRS 32 /* Space errors detected */
131
- #define CCKD_ORDWR 64 /* Opened read/write since
132
- last chkdsk */
133
- #define CCKD_OPENED 128
120
+ #define CCKD_OPT_BIGEND 0x02 /* file in BIG endian format */
121
+ #define CCKD_OPT_SPERRS 0x20 /* Space errors detected */
122
+ #define CCKD_OPT_OPENRW 0x40 /* Opened R/W since last chkdsk */
123
+ #define CCKD_OPT_OPENED 0x80
134
124
135
125
#define CCKD_COMPRESS_NONE 0x00
136
126
#define CCKD_COMPRESS_ZLIB 0x01
@@ -147,17 +137,30 @@ struct CCKD_DEVHDR /* Compress device header */
147
137
#define CCKD_STRESS_PARM2 2
148
138
149
139
struct CCKD_L2ENT { /* Level 2 table entry */
140
+
141
+ /* NOTE: all fields are numeric and always in LITTLE endian format. */
142
+
150
143
U32 L2_trkoff ; /* Offset to track image */
151
144
U16 L2_len ; /* Track length */
152
145
U16 L2_size ; /* Track size (size >= len) */
153
146
};
154
147
155
148
struct CCKD_FREEBLK { /* Free block (file) */
149
+
150
+ /* NOTE: all fields are numeric and always in LITTLE endian format. */
151
+
156
152
U32 fb_offnxt ; /* Offset to next free blk */
157
153
U32 fb_len ; /* Length this free blk */
158
154
};
159
155
160
156
struct CCKD_IFREEBLK { /* Free block (internal) */
157
+
158
+ /* NOTE: because this control block is an INTERNAL control block */
159
+ /* which does not actually exist in the emulated dasd image file */
160
+ /* (i.e. it is only used internally), all of its fields are always */
161
+ /* in *HOST* endian format (little endian on little endian hosts */
162
+ /* and big endian on big endian hosts). */
163
+
161
164
U32 ifb_offnxt ; /* Offset to next free blk */
162
165
U32 ifb_len ; /* Length this free blk */
163
166
int ifb_idxprv ; /* Index to prev free blk */
@@ -206,6 +209,7 @@ typedef char CCKD_TRACE[128]; /* Trace table entry */
206
209
#define CCKD_MAX_RA 9 /* Max readahead threads */
207
210
#define CCKD_MAX_WRITER 9 /* Max writer threads */
208
211
#define CCKD_MAX_GCOL 1 /* Max garbage collectors */
212
+ #define CCKD_DEF_TRACE 3 /* Def nbr trace entries */
209
213
#define CCKD_MAX_TRACE 200000 /* Max nbr trace entries */
210
214
#define CCKD_MAX_FREEPEND 4 /* Max free pending cycles */
211
215
@@ -224,20 +228,15 @@ typedef char CCKD_TRACE[128]; /* Trace table entry */
224
228
#define CCKD_DEF_READAHEADS 2 /* Default nbr to read ahead */
225
229
#define CCKD_DEF_FREEPEND -1 /* Default freepend cycles */
226
230
227
- #define CFBA_BLKGRP_BLKS 120 /* Number fba blocks / group */
228
- #define CFBA_BLKGRP_SIZE 61440 /* Size of a block group 60k */
229
- /* Number of bytes in an fba
230
- block group. Probably
231
- should be a multiple of 512
232
- but has to be < 64K */
233
-
234
231
/*-------------------------------------------------------------------*/
235
232
/* Global CCKD dasd block */
236
233
/*-------------------------------------------------------------------*/
237
234
struct CCKDBLK { /* Global cckd dasd block */
238
235
BYTE id [8 ]; /* "CCKDBLK " */
236
+ #define CCKDBLK_ID "CCKDBLK " /* "CCKDBLK " */
239
237
DEVBLK * dev1st ; /* 1st device in cckd queue */
240
238
unsigned int batch :1 , /* 1=called in batch mode */
239
+ debug :1 , /* 1=CCW trace debug msgs */
241
240
sfmerge :1 , /* 1=sf-* merge */
242
241
sfforce :1 ; /* 1=sf-* force */
243
242
int sflevel ; /* sfk xxxx level */
@@ -414,4 +413,10 @@ struct SPCTAB
414
413
#define SPCTAB_FREE 7 /* Space is free block */
415
414
#define SPCTAB_EOF 8 /* Space is end-of-file */
416
415
416
+ /*-------------------------------------------------------------------*/
417
+ /* CCKD64 structs and definitions */
418
+ /*-------------------------------------------------------------------*/
419
+
420
+ #include "cckd64.h" /* 64-bit CCKD64 structs/constants */
421
+
417
422
#endif // _CCKD_H_
0 commit comments