|
|
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: /* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved.
25: *
26: * ConfigPrivate.h - private #defines for Config server.
27: *
28: * HISTORY
29: * 11-Apr-91 Doug Mitchell at NeXT
30: * Created.
31: */
32:
33: #ifndef _CONFIG_PRIVATE_H_
34: #define _CONFIG_PRIVATE_H_
35:
36: #import <bsd/sys/types.h>
37: #import <driverkit/debugging.h>
38: #import <kernserv/queue.h>
39: #import <mach/cthreads.h>
40: #import <bsd/sys/dir.h>
41:
42: /*
43: * Typedefs for identifying executable driver files.
44: */
45: typedef unsigned long file_id_t; // like fileno
46: #define FILENAME_SIZE (MAXNAMLEN+1)
47: typedef char filename_t[FILENAME_SIZE]; // human-readable name
48:
49: /*
50: * A list of these is maintained in driver_list. One driver_entry_t per driver.
51: * dev_list contains a list of dev_entry_t's, allowing mapping multiple devices
52: * to one driver.
53: */
54: typedef struct {
55: queue_head_t dev_list;
56: file_id_t executable_fid;
57: filename_t filename; // name of executable
58: port_t driver_port; // created by driver
59: port_t driver_sig_port; // created by us
60: port_t boot_requestor; // requestor_port for
61: // bootstrap_subset()
62: boolean_t running; // we've exec'd it
63: queue_chain_t link;
64: } driver_entry_t;
65:
66: /*
67: * One per dev_port to which driver has rights.
68: */
69: typedef struct {
70: port_t dev_port; // created by kernel
71: IODeviceType dev_type;
72: IOSlotId slot_id;
73: IODeviceNumber dev_number;
74: driver_entry_t *driver_entry; // in whose dev_list this
75: // resides
76: queue_chain_t link;
77: } dev_entry_t;
78:
79:
80: /*
81: * XPR control.
82: */
83: #define XPR_CONFIG_INDEX 0
84:
85: #ifdef DDM_DEBUG
86:
87: #define XPR_CONFIG 0x00000001
88: #define XPR_SERVER 0x00000002
89: #define XPR_COMMON 0x00000004
90: #define XPR_ERR 0x00000008
91:
92: #define xpr_config(x, a, b, c, d, e) { \
93: if(IODDMMasks[XPR_CONFIG_INDEX] & XPR_CONFIG) { \
94: IOAddDDMEntry(x, (int)a, (int)b, (int)c, (int)d, (int)e); \
95: if(verbose) \
96: printf(x, a, b, c, d, e); \
97: } \
98: }
99: #define xpr_server(x, a, b, c, d, e) { \
100: if(IODDMMasks[XPR_CONFIG_INDEX] & XPR_SERVER) { \
101: IOAddDDMEntry(x, (int)a, (int)b, (int)c, (int)d, (int)e); \
102: if(verbose) \
103: printf(x, a, b, c, d, e); \
104: } \
105: }
106: #define xpr_common(x, a, b, c, d, e) { \
107: if(IODDMMasks[XPR_CONFIG_INDEX] & XPR_COMMON) { \
108: IOAddDDMEntry(x, (int)a, (int)b, (int)c, (int)d, (int)e); \
109: if(verbose) \
110: printf(x, a, b, c, d, e); \
111: } \
112: }
113: #define xpr_err(x, a, b, c, d, e) { \
114: if(IODDMMasks[XPR_CONFIG_INDEX] & XPR_ERR) { \
115: IOAddDDMEntry(x, (int)a, (int)b, (int)c, (int)d, (int)e); \
116: } \
117: printf(x, a, b, c, d, e); \
118: }
119:
120: #else DDM_DEBUG
121:
122: #define xpr_config(x, a, b, c, d, e)
123: #define xpr_server(x, a, b, c, d, e)
124: #define xpr_common(x, a, b, c, d, e)
125: #define xpr_err(x, a, b, c, d, e)
126:
127: #endif DDM_DEBUG
128:
129: /*
130: * Externs.
131: */
132: extern queue_head_t driver_list;
133: extern mutex_t driver_list_lock;
134: extern condition_t driver_list_cond;
135: extern boolean_t driver_list_locked;
136: extern int verbose;
137: extern port_t device_master_port;
138:
139: #endif _CONFIG_PRIVATE_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.