1: /*
2: * Copyright (c) 1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)mscp.h 1.2 (2.11BSD) 1998/1/28
7: */
8:
9: /*
10: * Definitions for the Mass Storage Control Protocol
11: *
12: * Unused mscp definitions are commented out because of the
13: * limited symbol table size in the V7 C compiler,
14: * `too many defines'.
15: * Lots of strangeness in mscp packet definitions, i.e.,
16: * dealing with longs as hi & lo words. This is due to the
17: * way the PDP-11 stores a long, i.e., high order word
18: * in low memory word and low order word in high memory word.
19: * The UDA does not like that at all !
20: *
21: * Fred Canter 10/22/83
22: */
23:
24: #include "pdp/mscp_common.h"
25:
26: /*
27: * An MSCP packet
28: */
29:
30: struct mscp {
31: struct mscp_header m_header; /* device specific header */
32: u_short m_cmdref; /* command reference number */
33: u_short m_elref; /* plus error log reference number */
34: u_short m_unit; /* unit number */
35: u_short m_xxx1; /* unused */
36: u_char m_opcode; /* opcode */
37: u_char m_flags; /* end message flags */
38: u_short m_modifier; /* modifiers */
39: union {
40: struct {
41: u_short Ms_bytecnt; /* byte count */
42: u_short Ms_zzz2; /* 64kb max on V7 */
43: u_short Ms_buf_l; /* buffer descriptor low word */
44: u_short Ms_buf_h; /* buffer descriptor hi word */
45: long Ms_xx2[2]; /* unused */
46: u_short Ms_lbn_l; /* logical block number low word */
47: u_short Ms_lbn_h; /* logical bhock number hi word */
48: long Ms_xx4; /* unused */
49: long *Ms_dscptr; /* pointer to descriptor (software) */
50: long Ms_sftwds[4]; /* software words, padding */
51: } m_generic;
52: struct {
53: u_short Ms_version; /* MSCP version */
54: u_short Ms_cntflgs; /* controller flags */
55: u_short Ms_hsttmo; /* host timeout */
56: u_short Ms_usefrac; /* use fraction */
57: long Ms_time; /* time and date */
58: } m_setcntchar;
59: struct {
60: u_short Ms_multunt; /* multi-unit code */
61: u_short Ms_unitflgs; /* unit flags */
62: long Ms_hostid; /* host identifier */
63: quad Ms_unitid; /* unit identifier */
64: long Ms_mediaid; /* media type identifier */
65: u_short Ms_shdwunt; /* shadow unit */
66: u_short Ms_shdwsts; /* shadow status */
67: u_short Ms_track; /* track size */
68: u_short Ms_group; /* group size */
69: u_short Ms_cylinder; /* cylinder size */
70: u_short Ms_xx3; /* reserved */
71: u_short Ms_rctsize; /* RCT table size */
72: char Ms_rbns; /* RBNs / track */
73: char Ms_rctcpys; /* RCT copies */
74: } m_getunitsts;
75: } m_un;
76: int m_msgpad[3]; /* pad msg length to 64 bytes */
77: /* required by UQ bus port spec */
78: };
79:
80: /*
81: * generic packet
82: */
83:
84: #define m_zzz2 m_un.m_generic.Ms_zzz2
85: #define m_bytecnt m_un.m_generic.Ms_bytecnt
86: #define m_buf_l m_un.m_generic.Ms_buf_l
87: #define m_buf_h m_un.m_generic.Ms_buf_h
88: #define m_lbn_l m_un.m_generic.Ms_lbn_l
89: #define m_lbn_h m_un.m_generic.Ms_lbn_h
90: #define m_dscptr m_un.m_generic.Ms_dscptr
91: #define m_sftwds m_un.m_generic.Ms_sftwds
92: #define m_status m_modifier
93:
94: /*
95: * Abort / Get Command Status packet
96: */
97:
98: #define m_outref m_bytecnt
99:
100: /*
101: * Online / Set Unit Characteristics packet
102: */
103:
104: #define m_elgfll m_lbn_l
105: #define m_elgflh m_lbn_h
106: #define m_copyspd m_shdwsts
107:
108: /*
109: * Replace packet
110: */
111:
112: #define m_rbn m_bytecnt
113:
114: /*
115: * Set Controller Characteristics packet
116: */
117:
118: #define m_version m_un.m_setcntchar.Ms_version
119: #define m_cntflgs m_un.m_setcntchar.Ms_cntflgs
120: #define m_hsttmo m_un.m_setcntchar.Ms_hsttmo
121: #define m_usefrac m_un.m_setcntchar.Ms_usefrac
122: #define m_time m_un.m_setcntchar.Ms_time
123:
124: /*
125: * Get Unit Status end packet
126: */
127:
128: #define m_multunt m_un.m_getunitsts.Ms_multunt
129: #define m_unitflgs m_un.m_getunitsts.Ms_unitflgs
130: #define m_hostid m_un.m_getunitsts.Ms_hostid
131: #define m_unitid m_un.m_getunitsts.Ms_unitid
132: #define m_mediaid m_un.m_getunitsts.Ms_mediaid
133: #define m_shdwunt m_un.m_getunitsts.Ms_shdwunt
134: #define m_shdwsts m_un.m_getunitsts.Ms_shdwsts
135: #define m_track m_un.m_getunitsts.Ms_track
136: #define m_group m_un.m_getunitsts.Ms_group
137: #define m_cylinder m_un.m_getunitsts.Ms_cylinder
138: #define m_rctsize m_un.m_getunitsts.Ms_rctsize
139: #define m_rbns m_un.m_getunitsts.Ms_rbns
140: #define m_rctcpys m_un.m_getunitsts.Ms_rctcpys
141:
142: /*
143: * Online / Set Unit Characteristics end packet
144: */
145:
146: #define m_uslow m_un.m_getunitsts.Ms_track
147: #define m_ushigh m_un.m_getunitsts.Ms_group
148: #define m_volser m_sftwds[0]
149:
150: /*
151: * Set Controller Characteristics end packet
152: */
153:
154: #define m_cnttmo m_hsttmo
155: #define m_cntcmdl m_usefrac
156: #define m_cntid m_unitid
157:
158: /*
159: * MSCP Error Log packet
160: *
161: * NOTE: MSCP packet must be padded to this size.
162: */
163:
164: struct mslg {
165: struct mscp_header me_header; /* device specific header */
166: int me_cmdref; /* command reference number */
167: int me_elref; /* error log reference number */
168: short me_unit; /* unit number */
169: short me_seqnum; /* sequence number */
170: u_char me_format; /* format */
171: u_char me_flags; /* error log message flags */
172: short me_event; /* event code */
173: quad me_cntid; /* controller id */
174: u_char me_cntsvr; /* controller software version */
175: u_char me_cnthvr; /* controller hardware version */
176: short me_multunt; /* multi-unit code */
177: quad me_unitid; /* unit id */
178: u_char me_unitsvr; /* unit software version */
179: u_char me_unithvr; /* unit hardware version */
180: short me_group; /* group; retry + level */
181: int me_volser[2]; /* volume serial number */
182: int me_hdr[2]; /* header */
183: char me_sdistat[12]; /* SDI status information */
184: };
185:
186: #define me_busaddr me_unitid
187: #define me_sdecyl me_group
Defined struct's
mscp
defined in line
30; used 56 times
- in /usr/src/sys/pdpstand/ra.c line
49-50(4),
136(2),
146-147(4),
193(2),
247(2)
- in /usr/src/sys/pdpuba/ra.c line
184-185(4),
251(2),
353(2),
702(2),
816(2),
936(2),
948-954(6),
961-965(4),
989(2),
1020(2),
1031(2),
1168(2),
1250-1251(4),
1357-1362(4),
1372(2)
mslg
defined in line
164; used 4 times
Defined macros
Usage of this include