-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathhtypes.h
199 lines (169 loc) · 7.45 KB
/
htypes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
/* HTYPES.H (c) Copyright Roger Bowler, 1999-2012 */
/* Hercules Type Definitions */
/* */
/* Released under "The Q Public License Version 1" */
/* (http://www.hercules-390.org/herclic.html) as modifications to */
/* Hercules. */
#ifndef _HTYPES_H_
#define _HTYPES_H_
/*
Try to pull in as many typedef's as possible
from the provided system headers for whatever
system we're building on...
*/
#ifndef HAVE_INTTYPES_H
#ifdef HAVE_U_INT
#define uint8_t u_int8_t
#define uint16_t u_int16_t
#define uint32_t u_int32_t
#define uint64_t u_int64_t
#else
#error Unable to find fixed-size data types
#endif
#endif
#ifndef HAVE_U_INT8_T
#ifdef HAVE_INTTYPES_H
typedef uint8_t u_int8_t;
typedef uint16_t u_int16_t;
typedef uint32_t u_int32_t;
typedef uint64_t u_int64_t;
#else
#error Unable to define u_intNN_t data types
#endif
#endif
typedef int8_t S8; // signed 8-bits
typedef int16_t S16; // signed 16-bits
typedef int32_t S32; // signed 32-bits
typedef int64_t S64; // signed 64-bits
typedef uint8_t U8; // unsigned 8-bits
typedef uint16_t U16; // unsigned 16-bits
typedef uint32_t U32; // unsigned 32-bits
typedef uint64_t U64; // unsigned 64-bits
#ifndef _MSVC_ // (MSVC typedef's it too)
typedef uint8_t BYTE; // unsigned byte (1 byte)
#endif
typedef uint8_t HWORD[2]; // unsigned halfword (2 bytes)
typedef uint8_t FWORD[4]; // unsigned fullword (4 bytes)
typedef uint8_t DBLWRD[8]; // unsigned doubleword (8 bytes)
typedef uint8_t QWORD[16]; // unsigned quadword (16 bytes)
/*-------------------------------------------------------------------*/
/* Socket stuff */
/*-------------------------------------------------------------------*/
#ifndef _BSDTYPES_DEFINED
#ifndef HAVE_U_CHAR
typedef unsigned char u_char;
#endif
#ifndef HAVE_U_SHORT
typedef unsigned short u_short;
#endif
#ifndef HAVE_U_INT
typedef unsigned int u_int;
#endif
#ifndef HAVE_U_LONG
typedef unsigned long u_long;
#endif
#define _BSDTYPES_DEFINED
#endif
#ifndef HAVE_SOCKLEN_T
typedef unsigned int socklen_t;
#endif
#ifndef HAVE_IN_ADDR_T
typedef unsigned int in_addr_t;
#endif
/* FIXME : THAT'S WRONG ! BUT IT WORKS FOR THE TIME BEING */
#if defined(_MSVC_)
#ifndef HAVE_USECONDS_T
typedef long useconds_t;
#endif
#endif
#if !defined( HAVE_STRUCT_IN_ADDR_S_ADDR ) && !defined( _WINSOCK_H )
struct in_addr
{
in_addr_t s_addr;
};
#endif
// (The following are simply to silence some compile time warnings)
#ifdef _MSVC_
typedef char GETSET_SOCKOPT_T;
typedef const char *const *EXECV_ARG2_ARGV_T;
#else
typedef void GETSET_SOCKOPT_T;
typedef char *const *EXECV_ARG2_ARGV_T;
#endif
#if defined( OPTION_SCSI_TAPE ) && !defined( HAVE_SYS_MTIO_H )
struct mt_tape_info
{
long t_type; /* device type id (mt_type) */
char *t_name; /* descriptive name */
};
#define MT_TAPE_INFO { { 0, NULL } }
#endif
/*-------------------------------------------------------------------*/
/* Primary Hercules Control Structures */
/*-------------------------------------------------------------------*/
typedef struct SYSBLK SYSBLK; // System configuration block
typedef struct REGS REGS; // CPU register context
typedef struct VFREGS VFREGS; // Vector Facility Registers
typedef struct ZPBLK ZPBLK; // Zone Parameter Block
typedef struct TELNET TELNET; // Telnet Control Block
typedef struct DEVBLK DEVBLK; // Device configuration block
typedef struct CHPBLK CHPBLK; // Channel Path config block
typedef struct IOINT IOINT; // I/O interrupt queue
typedef struct GSYSINFO GSYSINFO; // Ebcdic machine information
typedef struct DEVDATA DEVDATA; // xxxxxxxxx
typedef struct DEVGRP DEVGRP; // xxxxxxxxx
typedef struct DEVHND DEVHND; // xxxxxxxxx
typedef struct SHRD SHRD; // xxxxxxxxx
#ifdef EXTERNALGUI
typedef struct GUISTAT GUISTAT; // EXTERNALGUI Device Status Ctl
#endif
/*-------------------------------------------------------------------*/
/* Secondary Device and I/O Control Related Structures */
/*-------------------------------------------------------------------*/
typedef struct CKDDASD_DEVHDR CKDDASD_DEVHDR; // Device header
typedef struct CKDDASD_TRKHDR CKDDASD_TRKHDR; // Track header
typedef struct CKDDASD_RECHDR CKDDASD_RECHDR; // Record header
typedef struct CCKDDASD_DEVHDR CCKDDASD_DEVHDR; // Compress device header
typedef struct CCKD_L2ENT CCKD_L2ENT; // Level 2 table entry
typedef struct CCKD_FREEBLK CCKD_FREEBLK; // Free block
typedef struct CCKD_IFREEBLK CCKD_IFREEBLK; // Free block (internal)
typedef struct CCKD_RA CCKD_RA; // Readahead queue entry
typedef struct CCKDBLK CCKDBLK; // Global cckd dasd block
typedef struct CCKDDASD_EXT CCKDDASD_EXT; // Ext for compressed ckd
typedef struct COMMADPT COMMADPT; // Comm Adapter
typedef struct bind_struct bind_struct; // Socket Device Ctl
typedef struct TAPEMEDIA_HANDLER TAPEMEDIA_HANDLER; // (see tapedev.h)
typedef struct TAPEAUTOLOADENTRY TAPEAUTOLOADENTRY; // (see tapedev.h)
typedef struct TAMDIR TAMDIR; // (see tapedev.h)
/*-------------------------------------------------------------------*/
/* Device handler function prototypes */
/*-------------------------------------------------------------------*/
typedef int DEVIF (DEVBLK *dev, int argc, char *argv[]);
typedef void DEVQF (DEVBLK *dev, char **devclass, int buflen,
char *buffer);
typedef void DEVXF (DEVBLK *dev, BYTE code, BYTE flags,
BYTE chained, U32 count,
BYTE prevcode, int ccwseq,
BYTE *iobuf, BYTE *more,
BYTE *unitstat, U32 *residual);
typedef void DEVHF (DEVBLK *dev);
typedef int DEVCF (DEVBLK *dev);
typedef void DEVSF (DEVBLK *dev);
typedef int DEVRF (DEVBLK *dev, int ix, BYTE *unitstat);
typedef int DEVWF (DEVBLK *dev, int rcd, int off, BYTE *buf,
int len, BYTE *unitstat);
typedef int DEVUF (DEVBLK *dev);
typedef void DEVRR (DEVBLK *dev);
typedef int DEVSA (DEVBLK *dev, U32 qmask);
typedef int DEVSAS (DEVBLK *dev, U32 oqmask, U32 iqmask);
typedef int DEVQD (DEVBLK *dev, void *desc);
typedef int DEVSR (DEVBLK *dev, void *file);
/*-------------------------------------------------------------------*/
/* Device handler description structures */
/*-------------------------------------------------------------------*/
typedef BYTE *DEVIM; /* Immediate CCW Codes Table */
/*-------------------------------------------------------------------*/
/* Read Configuration Data function */
/*-------------------------------------------------------------------*/
typedef int DEVRCD (DEVBLK *dev, BYTE *buffer, int bufsz);
#endif // _HTYPES_H_