]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - doc/html/ref/io-package-intro.html
Initial revision
[karo-tx-redboot.git] / doc / html / ref / io-package-intro.html
1 <!-- Copyright (C) 2003 Red Hat, Inc.                                -->
2 <!-- This material may be distributed only subject to the terms      -->
3 <!-- and conditions set forth in the Open Publication License, v1.0  -->
4 <!-- or later (the latest version is presently available at          -->
5 <!-- http://www.opencontent.org/openpub/).                           -->
6 <!-- Distribution of the work or derivative of the work in any       -->
7 <!-- standard (paper) book form is prohibited unless prior           -->
8 <!-- permission is obtained from the copyright holder.               -->
9 <HTML
10 ><HEAD
11 ><TITLE
12 >Introduction</TITLE
13 ><meta name="MSSmartTagsPreventParsing" content="TRUE">
14 <META
15 NAME="GENERATOR"
16 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
17 "><LINK
18 REL="HOME"
19 TITLE="eCos Reference Manual"
20 HREF="ecos-ref.html"><LINK
21 REL="UP"
22 TITLE="I/O Package (Device Drivers)"
23 HREF="io.html"><LINK
24 REL="PREVIOUS"
25 TITLE="I/O Package (Device Drivers)"
26 HREF="io.html"><LINK
27 REL="NEXT"
28 TITLE="User API"
29 HREF="io-user-api.html"></HEAD
30 ><BODY
31 CLASS="CHAPTER"
32 BGCOLOR="#FFFFFF"
33 TEXT="#000000"
34 LINK="#0000FF"
35 VLINK="#840084"
36 ALINK="#0000FF"
37 ><DIV
38 CLASS="NAVHEADER"
39 ><TABLE
40 SUMMARY="Header navigation table"
41 WIDTH="100%"
42 BORDER="0"
43 CELLPADDING="0"
44 CELLSPACING="0"
45 ><TR
46 ><TH
47 COLSPAN="3"
48 ALIGN="center"
49 >eCos Reference Manual</TH
50 ></TR
51 ><TR
52 ><TD
53 WIDTH="10%"
54 ALIGN="left"
55 VALIGN="bottom"
56 ><A
57 HREF="io.html"
58 ACCESSKEY="P"
59 >Prev</A
60 ></TD
61 ><TD
62 WIDTH="80%"
63 ALIGN="center"
64 VALIGN="bottom"
65 ></TD
66 ><TD
67 WIDTH="10%"
68 ALIGN="right"
69 VALIGN="bottom"
70 ><A
71 HREF="io-user-api.html"
72 ACCESSKEY="N"
73 >Next</A
74 ></TD
75 ></TR
76 ></TABLE
77 ><HR
78 ALIGN="LEFT"
79 WIDTH="100%"></DIV
80 ><DIV
81 CLASS="CHAPTER"
82 ><H1
83 ><A
84 NAME="IO-PACKAGE-INTRO">Chapter 14. Introduction</H1
85 ><P
86 >The I/O package is designed as a general purpose framework for
87 supporting device drivers. This includes all classes of
88 drivers from simple serial to networking stacks and beyond.</P
89 ><P
90 >Components of the I/O package, such as device drivers, are
91 configured into the system just like all other components.
92 Additionally, end users may add their own drivers to this set.</P
93 ><P
94 >While the set of drivers (and the devices they represent) may be
95 considered static, they must be accessed via an opaque
96 &#8220;handle&#8221;. Each device in the system has a unique name and
97 the <TT
98 CLASS="FUNCTION"
99 >cyg_io_lookup()</TT
100 > function is used to map that
101 name onto the handle for the device. This &#8220;hiding&#8221; of the
102 device implementation allows for generic, named devices, as well as
103 more flexibility. Also, the <TT
104 CLASS="FUNCTION"
105 >cyg_io_lookup()</TT
106 >
107 function provides drivers the opportunity to initialize the device
108 when usage actually starts.</P
109 ><P
110 >All devices have a name. The standard provided devices use names such
111 as <TT
112 CLASS="FILENAME"
113 >&#8220;/dev/console&#8221;</TT
114 > and
115 <TT
116 CLASS="FILENAME"
117 >&#8220;/dev/serial0&#8221;</TT
118 >, where the
119 <TT
120 CLASS="FILENAME"
121 >&#8220;/dev/&#8221;</TT
122 > prefix indicates that this is
123 the name of a device.</P
124 ><P
125 >The entire I/O package API, as well as the standard
126 set of provided drivers, is written in C. </P
127 ><P
128 >Basic functions are provided to send data to and receive data
129 from a device. The details of how this is done is left to the device [class] itself.
130 For example, writing data to a block device like a disk drive may
131 have different semantics than writing to a serial port. </P
132 ><P
133 >Additional functions are provided to manipulate the state
134 of the driver and/or the actual device. These functions
135 are, by design, quite specific to the actual driver. </P
136 ><P
137 >This driver model supports layering; in other words, a device
138 may actually be created &#8220;on top of&#8221; another device.
139 For example, the &#8220;tty&#8221; (terminal-like) devices are
140 built on top of simple serial devices. The upper layer then has
141 the flexibility to add features and functions not found at the lower
142 layers. In this case the &#8220;tty&#8221; device provides
143 for line buffering and editing not available from the simple serial
144 drivers.</P
145 ><P
146 >Some drivers will support visibility of the layers they depend
147 upon. The &#8220;tty&#8221; driver allows information about
148 the actual serial device to be manipulated by passing get/set
149 config calls that use a serial driver &#8220;key&#8221; down
150 to the serial driver itself. </P
151 ></DIV
152 ><DIV
153 CLASS="NAVFOOTER"
154 ><HR
155 ALIGN="LEFT"
156 WIDTH="100%"><TABLE
157 SUMMARY="Footer navigation table"
158 WIDTH="100%"
159 BORDER="0"
160 CELLPADDING="0"
161 CELLSPACING="0"
162 ><TR
163 ><TD
164 WIDTH="33%"
165 ALIGN="left"
166 VALIGN="top"
167 ><A
168 HREF="io.html"
169 ACCESSKEY="P"
170 >Prev</A
171 ></TD
172 ><TD
173 WIDTH="34%"
174 ALIGN="center"
175 VALIGN="top"
176 ><A
177 HREF="ecos-ref.html"
178 ACCESSKEY="H"
179 >Home</A
180 ></TD
181 ><TD
182 WIDTH="33%"
183 ALIGN="right"
184 VALIGN="top"
185 ><A
186 HREF="io-user-api.html"
187 ACCESSKEY="N"
188 >Next</A
189 ></TD
190 ></TR
191 ><TR
192 ><TD
193 WIDTH="33%"
194 ALIGN="left"
195 VALIGN="top"
196 >I/O Package (Device Drivers)</TD
197 ><TD
198 WIDTH="34%"
199 ALIGN="center"
200 VALIGN="top"
201 ><A
202 HREF="io.html"
203 ACCESSKEY="U"
204 >Up</A
205 ></TD
206 ><TD
207 WIDTH="33%"
208 ALIGN="right"
209 VALIGN="top"
210 >User API</TD
211 ></TR
212 ></TABLE
213 ></DIV
214 ></BODY
215 ></HTML
216 >