-
Notifications
You must be signed in to change notification settings - Fork 41
/
chsc.h
73 lines (64 loc) · 3.4 KB
/
chsc.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
/* CHSC.H (c) Copyright Jan Jaeger, 1999-2000 */
/* Channel Subsystem interface fields */
#if !defined(_CHSC_H)
#define _CHSC_H
// #if defined(FEATURE_CHSC)
typedef struct _CHSC_REQ {
HWORD length; /* Offset to response field */
HWORD req; /* Request code */
FWORD resv[3];
} CHSC_REQ;
typedef struct _CHSC_REQ4 {
HWORD length; /* Offset to response field */
HWORD req; /* Request code */
#define CHSC_REQ_SCHDESC 0x04
#define CHSC_REQ_CSSINFO 0x10
HWORD resv1;
HWORD f_sch; /* First subchannel */
HWORD resv2;
HWORD l_sch; /* Last subchannel */
FWORD resv3;
} CHSC_REQ4;
typedef struct _CHSC_RSP {
HWORD length; /* Length of response field */
HWORD rsp; /* Reponse code */
#define CHSC_REQ_OK 0x0001 /* No error */
#define CHSC_REQ_INVALID 0x0002 /* Invalid request */
#define CHSC_REQ_ERRREQ 0x0003 /* Error in request block */
#define CHSC_REQ_NOTSUPP 0x0004 /* Request not supported */
FWORD info;
} CHSC_RSP;
typedef struct _CHSC_RSP4 {
BYTE sch_val : 1; /* Subchannel valid */
BYTE dev_val : 1; /* Device number valid */
BYTE st : 3; /* Subchannel type */
#define CHSC_RSP4_ST_IO 0 /* I/O Subchannel; all fields
have a meaning */
#define CHSC_RSP4_ST_CHSC 1 /* CHSC Subchannel only sch_val
st and sch have a meaning */
#define CHSC_RSP4_ST_MSG 2 /* MSG Subchannel; all fields
except unit_addr have a
meaning */
#define CHSC_RPS4_ST_ADM 3 /* ADM Subchannel; Only sch_val
st and sch have a meaning */
BYTE zeros : 3;
BYTE unit_addr; /* Unit address */
HWORD devno; /* Device number */
BYTE path_mask; /* Valid path mask */
BYTE fla_valid_mask; /* Valid link mask */
HWORD sch; /* Subchannel number */
BYTE chpid[8]; /* Channel path array */
BYTE fla[8]; /* Full link address array */
} CHSC_RSP4;
typedef struct _CHSC_RSP10 {
FWORD general_char[510];
FWORD chsc_char[508]; /* ZZ: Linux/390 code indicates
this field has a length of
518, however, that would
mean that the entire CHSC
request would be 4K + 16
in length which is probably
an error - *JJ/10/10/04*/
} CHSC_RSP10;
// #endif /*defined(FEATURE_CHSC)*/
#endif /*!defined(_CHSC_H)*/