source: rtems/cpukit/sapi/include/rtems/io.h @ 3a4ae6c

4.104.114.84.95
Last change on this file since 3a4ae6c was 3a4ae6c, checked in by Joel Sherrill <joel.sherrill@…>, on Sep 11, 1995 at 7:35:39 PM

The word "RTEMS" almost completely removed from the core.

Configuration Table Template file added and all tests
modified to use this. All gvar.h and conftbl.h files
removed from test directories.

Configuration parameter maximum_devices added.

Core semaphore and mutex handlers added and RTEMS API Semaphore
Manager updated to reflect this.

Initialization sequence changed to invoke API specific initialization
routines. Initialization tasks table now owned by RTEMS Tasks Manager.

Added user extension for post-switch.

Utilized user extensions to implement API specific functionality
like signal dispatching.

Added extensions to the System Initialization Thread so that an
API can register a function to be invoked while the system
is being initialized. These are largely equivalent to the
pre-driver and post-driver hooks.

Added the Modules file oar-go32_p5, modified oar-go32, and modified
the file make/custom/go32.cfg to look at an environment varable which
determines what CPU model is being used.

All BSPs updated to reflect named devices and clock driver's IOCTL
used by the Shared Memory Driver. Also merged clock isr into
main file and removed ckisr.c where possible.

Updated spsize to reflect new and moved variables.

Makefiles for the executive source and include files updated to show
break down of files into Core, RTEMS API, and Neither.

Header and inline files installed into subdirectory based on whether
logically in the Core or a part of the RTEMS API.

  • Property mode set to 100644
File size: 5.6 KB
Line 
1/*  io.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the Input/Output Manager.  This manager provides a well defined
5 *  mechanism for accessing device drivers and a structured methodology for
6 *  organizing device drivers.
7 *
8 *  Directives provided are:
9 *
10 *     + initialize a device driver
11 *     + open a device driver
12 *     + close a device driver
13 *     + read from a device driver
14 *     + write to a device driver
15 *     + special device services
16 *
17 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
18 *  On-Line Applications Research Corporation (OAR).
19 *  All rights assigned to U.S. Government, 1994.
20 *
21 *  This material may be reproduced by or for the U.S. Government pursuant
22 *  to the copyright license under the clause at DFARS 252.227-7013.  This
23 *  notice must appear in all copies of this file and its derivatives.
24 *
25 *  $Id$
26 */
27
28#ifndef __RTEMS_IO_h
29#define __RTEMS_IO_h
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#include <rtems/rtems/status.h>
36
37/*
38 *
39 *  The following defines the types for:
40 *
41 *    + major and minor numbers
42 *    + the return type of a device driver entry
43 *    + a pointer to a device driver entry
44 *    + an entry in the the Device Driver Address Table.  Each entry in this
45 *      table corresponds to an application provided device driver and
46 *      defines the entry points for that device driver.
47 */
48 
49typedef unsigned32 rtems_device_major_number;
50typedef unsigned32 rtems_device_minor_number;
51 
52typedef rtems_status_code rtems_device_driver;
53 
54typedef rtems_device_driver ( *rtems_device_driver_entry )(
55                 rtems_device_major_number,
56                 rtems_device_minor_number,
57                 void *
58             );
59
60typedef struct {
61  rtems_device_driver_entry initialization; /* initialization procedure */
62  rtems_device_driver_entry open;           /* open request procedure */
63  rtems_device_driver_entry close;          /* close request procedure */
64  rtems_device_driver_entry read;           /* read request procedure */
65  rtems_device_driver_entry write;          /* write request procedure */
66  rtems_device_driver_entry control;        /* special functions procedure */
67}   rtems_driver_address_table;
68 
69/*
70 * Table for the io device names
71 */
72
73typedef struct {
74    char                     *device_name;
75    unsigned32                device_name_length;
76    rtems_device_major_number major;
77    rtems_device_minor_number minor;
78} rtems_driver_name_t;
79
80/*
81 *  This is the table of device names.
82 */
83
84/*
85 *  The following declare the data required to manage the Driver
86 *  Address Table and Device Name Table.
87 */
88
89EXTERN unsigned32                  _IO_Number_of_drivers;
90EXTERN rtems_driver_address_table *_IO_Driver_address_table;
91EXTERN unsigned32                  _IO_Number_of_devices;
92EXTERN rtems_driver_name_t        *_IO_Driver_name_table;
93
94/*
95 *  _IO_Manager_initialization
96 *
97 *  DESCRIPTION:
98 *
99 *  This routine performs the initialization necessary for this manager.
100 */
101
102STATIC INLINE void _IO_Manager_initialization(
103  rtems_driver_address_table *driver_table,
104  unsigned32                  number_of_drivers,
105  unsigned32                  number_of_devices
106);
107
108/*
109 *  rtems_io_register_name
110 *
111 *  DESCRIPTION:
112 *
113 *  Associate a name with a driver.
114 *
115 */
116
117rtems_status_code rtems_io_register_name(
118    char *device_name,
119    rtems_device_major_number major,
120    rtems_device_minor_number minor
121);
122
123
124/*
125 *  rtems_io_lookup_name
126 *
127 *  DESCRIPTION:
128 *
129 *  Find what driver "owns" this name
130 */
131
132rtems_status_code rtems_io_lookup_name(
133    const char *pathname,
134    rtems_driver_name_t **rnp
135);
136
137
138/*
139 *  rtems_io_initialize
140 *
141 *  DESCRIPTION:
142 *
143 *  This routine implements the rtems_io_initialize directive.  It is invoked
144 *  to initialize a device driver or an individual device.
145 */
146
147rtems_status_code rtems_io_initialize(
148  rtems_device_major_number  major,
149  rtems_device_minor_number  minor,
150  void             *argument
151);
152
153/*
154 *  rtems_io_open
155 *
156 *  DESCRIPTION:
157 *
158 *  This routine implements the rtems_io_open directive.  It is invoked
159 *  to open a device.
160 */
161
162rtems_status_code rtems_io_open(
163  rtems_device_major_number  major,
164  rtems_device_minor_number  minor,
165  void             *argument
166);
167
168/*
169 *  rtems_io_close
170 *
171 *  DESCRIPTION:
172 *
173 *  This routine implements the rtems_io_close directive.  It is invoked
174 *  to close a device.
175 */
176
177rtems_status_code rtems_io_close(
178  rtems_device_major_number  major,
179  rtems_device_minor_number  minor,
180  void             *argument
181);
182
183/*
184 *  rtems_io_read
185 *
186 *  DESCRIPTION:
187 *
188 *  This routine implements the rtems_io_read directive.  It is invoked
189 *  to read from a device.
190 */
191
192rtems_status_code rtems_io_read(
193  rtems_device_major_number  major,
194  rtems_device_minor_number  minor,
195  void             *argument
196);
197
198/*
199 *  rtems_io_write
200 *
201 *  DESCRIPTION:
202 *
203 *  This routine implements the rtems_io_write directive.  It is invoked
204 *  to write to a device.
205 */
206
207rtems_status_code rtems_io_write(
208  rtems_device_major_number  major,
209  rtems_device_minor_number  minor,
210  void             *argument
211);
212
213/*
214 *  rtems_io_control
215 *
216 *  DESCRIPTION:
217 *
218 *  This routine implements the rtems_io_control directive.  It is invoked
219 *  to perform a device specific operation on a device.
220 */
221
222rtems_status_code rtems_io_control(
223  rtems_device_major_number  major,
224  rtems_device_minor_number  minor,
225  void             *argument
226);
227
228/*
229 *  _IO_Initialize_all_drivers
230 *
231 *  DESCRIPTION:
232 *
233 *  This routine initializes all of the device drivers configured
234 *  in the Device Driver Address Table.
235 */
236
237void _IO_Initialize_all_drivers( void );
238
239#include <rtems/io.inl>
240
241#ifdef __cplusplus
242}
243#endif
244
245#endif
246/* end of include file */
Note: See TracBrowser for help on using the repository browser.