|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /* @(#)insertmsg.h 2.0 02/14/90 (c) 1990 NeXT
26: *
27: * insertmsg.h -- Structs used for "Disk Inserted" messages.
28: *
29: * HISTORY
30: * 01-Oct-90 Doug Mitchell
31: * Added in_flags, IND_FLAGS_REMOVABLE
32: * 23-Apr-90 Doug Mitchell
33: * Added oid_dev_str to of_insert_notify_dev
34: * 14-Feb-90 Doug Mitchell at NeXT
35: * Created.
36: *
37: */
38:
39: #ifndef _INSERTMSG_
40: #define _INSERTMSG_
41:
42: #import <sys/types.h>
43: #import <mach/message.h>
44:
45: #define SUPPORT_PORT_DEVICE 0
46:
47: /*
48: * msg_id's for messages used by vol driver.
49: */
50: #define VOL_MSG_ID 0x355
51: #define VOL_CHECK_MSG_ID (VOL_MSG_ID+0) /* new disk insert */
52: #define VOL_PANEL_REQ (VOL_MSG_ID+1) /* panel request */
53: #define VOL_PANEL_RESP (VOL_MSG_ID+2) /* panel response */
54: #define VOL_PANEL_CANCEL (VOL_MSG_ID+3) /* panel cancel */
55:
56: #define FORM_TYPE_LENGTH 64
57:
58: /*
59: * New disk insertion notification (msg_id == VOL_CHECK_MSG_ID).
60: */
61: struct insert_notify {
62: msg_header_t in_header;
63: msg_type_t in_vd_type;
64: int in_vol_state; /* IND_VS_xxx */
65: int in_dev_desc; /* IND_DD_xxx */
66: msg_type_t in_flags_type;
67: int in_flags; /* IND_FLAGS_xxx */
68: msg_type_t in_ft_type;
69: /*
70: * in_form_type contains the legal densities with with the
71: * given media can be formatted, sprintf'd as decimal numbers
72: * of KBytes and separated by spaces. String is empty if disk
73: * if formatted.
74: */
75: char in_form_type[FORM_TYPE_LENGTH];
76: /*
77: * dev_t or port follows...
78: */
79: };
80:
81: /*
82: * This struct will be used by fd, od, and SCSI drivers.
83: */
84: #define OID_DEVSTR_LEN 16
85:
86: struct of_insert_notify_dev {
87: struct insert_notify oid_header;
88: msg_type_t oid_dev_type;
89: dev_t oid_bdev_t; /* block device */
90: dev_t oid_cdev_t; /* raw device */
91: msg_type_t oid_ds_type;
92: char oid_dev_str[OID_DEVSTR_LEN];
93: /* e.g., "fd0", "fd1" */
94: };
95:
96: #if SUPPORT_PORT_DEVICE
97:
98: /*
99: * For loadable drivers.
100: */
101: struct of_insert_notify_port {
102: struct insert_notify oip_header;
103: msg_type_t oip_p_type;
104: port_t oip_port; /* describes other devices */
105: };
106:
107: #endif /* SUPPORT_PORT_DEVICE */
108:
109: /*
110: * in_vol_state values
111: */
112: #define IND_VS_LABEL 0x00 /* volume contains valid Mach
113: * label */
114: #define IND_VS_FORMATTED 0x01 /* volume is formatted but
115: * contains no label */
116: #define IND_VS_UNFORMATTED 0x02 /* unformatted */
117:
118: /*
119: * in_dev_desc values
120: */
121: #define IND_DD_DEV 0x00 /* oin_dev_t contains a dev_t
122: * for a device in /dev */
123: #define IND_DD_PORT 0x01 /* oin_port contains a port
124: * for a loadable server */
125:
126: /*
127: * in_flags values
128: */
129: #define IND_FLAGS_REMOVABLE 0x00000001 /* 1 = removable; 0 = fixed */
130: #define IND_FLAGS_FIXED 0x00000000
131: #define IND_FLAGS_WP 0x00000002 /* 1 = write protected */
132:
133: /*
134: * Panel request (msg_id == VOL_PANEL_REQ)
135: */
136: #define VP_STRING_LEN 40
137:
138: struct vol_panel_req {
139: msg_header_t pr_header;
140: msg_type_t pr_int_desc; /* describes following 7
141: * fields */
142: int pr_panel_type; /* PR_PT_xxx */
143: int pr_resp_type; /* PR_RT_xxx */
144: int pr_tag; /* identifies this panel */
145: /*
146: * meanings of these parameters vary per pr_panel_type.
147: */
148: int pr_p1;
149: int pr_p2;
150: int pr_p3;
151: int pr_p4;
152: msg_type_t pr_string_desc; /* describes following 2
153: * fields */
154: char pr_string1[VP_STRING_LEN];
155: char pr_string2[VP_STRING_LEN];
156: };
157:
158: /*
159: * pr_panel_type values
160: */
161: #define PR_PT_DISK_NUM 0 /* insert disk <p1> in
162: * <p2>(scsi|floppy|optical) drive <p3>
163: */
164: #define PR_PT_DISK_LABEL 1 /* insert disk <string1> in
165: * <p2>(scsi|floppy|optical) drive <p3>
166: */
167: #define PR_PT_DISK_NUM_W 2 /* wrong disk - insert disk <p1> in
168: * <p2>(scsi|floppy|optical) drive <p3>
169: */
170: #define PR_PT_DISK_LABEL_W 3 /* wrong disk - insert disk <string1>
171: * in <p2>(scsi|floppy|optical) drive
172: * <p3>
173: */
174: #define PR_PT_SWAPDEV_FULL 4 /* swap device full */
175: #define PR_PT_FILESYS_FULL 5 /* file system <string1> full */
176: #define PR_RT_EJECT_REQ 6 /* eject disk in <p2> drive <p3> */
177:
178: /*
179: * p2 values for PR_PT_DISK_NUM / PR_PT_DISK_LABEL
180: */
181: #define PR_DRIVE_FLOPPY 0 /* floppy disk */
182: #define PR_DRIVE_OPTICAL 1 /* OMD-1 (5.25") optical */
183: #define PR_DRIVE_SCSI 2 /* removable SCSI disk */
184:
185: /*
186: * pr_response_type values. Describes both format of panel and expected
187: * response by Workspace Manager.
188: */
189: #define PR_RT_NONE 0 /* no acknowledgement expected, no
190: * cancel necesary */
191: #define PR_RT_CANCEL 1 /* no ack; leave panel up until
192: * vol_panel_cancel message */
193: #define PR_RT_ACK 2 /* just "OK" ack */
194: #define PR_RT_INT 3 /* integer value expected */
195:
196: /*
197: * Examples:
198: * 'Insert floppy disk 3 in drive 0'
199: * pr_panel_type = PR_PT_DISK_NUM
200: * p1 = 3
201: * p2 = PR_DRIVE_FLOPPY
202: * p3 = 0
203: * pr_response_type = PR_RT_ACK (acknowledgement means "disk not
204: * avaliable")
205: *
206: * 'Insert Optical disk "MyDisk" in drive 1'
207: * pr_panel_type = PR_PT_DISK_LABEL
208: * string1 = "MyDisk"
209: * p2 = PR_DRIVE_OPTICAL
210: * p3 = 1
211: * pr_response_type = PR_RT_ACK (acknowledgement means "disk not
212: * avaliable")
213: *
214: * 'Swap Device Full'
215: * pr_panel_type = PR_PT_SWAPDEV_FULL
216: * pr_response_type = PR_RT_ACK (acknowledgement means "OK to send more
217: * of these messages")
218: */
219:
220: /*
221: * Panel response (msg_id == VOL_PANEL_RESP). Sent by Workspace Manager to
222: * vol driver when use responds to panels with pr_response_type of PR_RT_ACK
223: * and PR_RT_INT.
224: */
225: struct vol_panel_resp {
226: msg_header_t ps_header;
227: msg_type_t ps_int_desc; /* describes following 2
228: * fields */
229: int ps_tag; /* identifies panel request */
230: int ps_value; /* n/u for PR_RT_ACK requests;
231: * integer for PR_RT_INT */
232: };
233:
234: /*
235: * Panel cancel request (msg_id == VOL_PANEL_CANCEL). Sent by vol driver to
236: * remove existing panel.
237: */
238: struct vol_panel_cancel {
239: msg_header_t pc_header;
240: msg_type_t pc_int_desc; /* describes following field */
241: int pc_tag; /* identifies panel request */
242: };
243:
244: #endif /* _INSERTMSG_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.