annotate packages/hal/synth/arch/current/include/hal_io.h @ 1671:61d6d4688f20

Added missing }
author asl
date Fri, 18 Jun 2004 07:25:16 +0000
parents eb74917a64e1
children 0f42ca5f04a9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_HAL_HAL_IO_H
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
2 #define CYGONCE_HAL_HAL_IO_H
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
3
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
4 //=============================================================================
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
5 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
6 // hal_io.h
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
7 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
8 // HAL device IO register support.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
9 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
10 //=============================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
11 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
12 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
13 // This file is part of eCos, the Embedded Configurable Operating System.
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
14 // Copyright (C) 2002 Bart Veer
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
15 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
17 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
18 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
19 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
20 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
21 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
22 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
24 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
26 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
27 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
28 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
29 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
30 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
31 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
32 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
33 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
34 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
35 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
36 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
37 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
38 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
39 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
40 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
41 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
42 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
43 //####ECOSGPLCOPYRIGHTEND####
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
44 //=============================================================================
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
45 //#####DESCRIPTIONBEGIN####
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
46 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
47 // Author(s): nickg
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
48 // Contributors:nickg, bartv, alunn, jlarmour
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
49 // Date: 1998-02-17
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
50 // Purpose: Define IO register support
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
51 // Description: The macros defined here provide the HAL APIs for handling
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
52 // device IO control registers.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
53 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
54 // For the synthetic target these macros should never
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
55 // actually be used since the application will run as an
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
56 // ordinary user application and should not have
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
57 // permission to access any real hardware. Instead
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
58 // hardware access should go via the auxiliary. Possibly
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
59 // the macros should be #pragma poison'd, but some people
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
60 // may want to run the synthetic target in a way that
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
61 // does involve accessing real hardware.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
62 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
63 // The synthetic target provides some additional I/O
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
64 // facilities in the form of Linux system calls. A useful
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
65 // subset of these are prototyped here, together with
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
66 // associated constants. There are also I/O operations to
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
67 // interact with the auxiliary.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
68 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
69 // Usage:
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
70 // #include <cyg/hal/hal_io.h>
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
71 // ...
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
72 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
73 //####DESCRIPTIONEND####
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
74 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
75 //=============================================================================
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
76
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
77 #include <cyg/infra/cyg_type.h>
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
78
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
79 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
80 // IO Register address.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
81 // This type is for recording the address of an IO register.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
82
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
83 typedef volatile CYG_ADDRWORD HAL_IO_REGISTER;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
84
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
85 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
86 // BYTE Register access.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
87 // Individual and vectorized access to 8 bit registers.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
88
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
89 #define HAL_READ_UINT8( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
90 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
91 ((_value_) = *((volatile CYG_BYTE *)(_register_))); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
92 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
93
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
94 #define HAL_WRITE_UINT8( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
95 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
96 (*((volatile CYG_BYTE *)(_register_)) = (_value_)); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
97 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
98
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
99 #define HAL_READ_UINT8_VECTOR( _register_, _buf_, _count_, _step_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
100 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
101 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
102 for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
103 (_buf_)[_i_] = ((volatile CYG_BYTE *)(_register_))[_j_]; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
104 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
105 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
106
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
107 #define HAL_WRITE_UINT8_VECTOR( _register_, _buf_, _count_, _step_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
108 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
109 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
110 for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
111 ((volatile CYG_BYTE *)(_register_))[_j_] = (_buf_)[_i_]; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
112 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
113 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
114
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
115
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
116 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
117 // 16 bit access.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
118 // Individual and vectorized access to 16 bit registers.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
119
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
120 #define HAL_READ_UINT16( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
121 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
122 ((_value_) = *((volatile CYG_WORD16 *)(_register_))); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
123 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
124
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
125 #define HAL_WRITE_UINT16( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
126 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
127 (*((volatile CYG_WORD16 *)(_register_)) = (_value_)); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
128 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
129
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
130 #define HAL_READ_UINT16_VECTOR( _register_, _buf_, _count_, _step_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
131 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
132 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
133 for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
134 (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_))[_j_]; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
135 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
136 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
137
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
138 #define HAL_WRITE_UINT16_VECTOR( _register_, _buf_, _count_, _step_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
139 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
140 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
141 for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
142 ((volatile CYG_WORD16 *)(_register_))[_j_] = (_buf_)[_i_]; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
143 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
144 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
145
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
146 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
147 // 32 bit access.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
148 // Individual and vectorized access to 32 bit registers.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
149
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
150 #define HAL_READ_UINT32( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
151 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
152 ((_value_) = *((volatile CYG_WORD32 *)(_register_))); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
153 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
154
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
155 #define HAL_WRITE_UINT32( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
156 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
157 (*((volatile CYG_WORD32 *)(_register_)) = (_value_)); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
158 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
159
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
160 #define HAL_READ_UINT32_VECTOR( _register_, _buf_, _count_, _step_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
161 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
162 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
163 for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
164 (_buf_)[_i_] = ((volatile CYG_WORD32 *)(_register_))[_j_]; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
165 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
166 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
167
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
168 #define HAL_WRITE_UINT32_VECTOR( _register_, _buf_, _count_, _step_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
169 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
170 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
171 for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
172 ((volatile CYG_WORD32 *)(_register_))[_j_] = (_buf_)[_i_]; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
173 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
174 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
175
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
176 // ----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
177 // Linux system calls and associated structures and constants. This is
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
178 // by no means a complete list, but there is enough information for
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
179 // the needs of the relevant HAL packages. The information needs to be
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
180 // kept in synch with the Linux header files, but in practice
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
181 // divergence will be rare because that would imply incompatible
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
182 // changes in the Linux kernel API.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
183 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
184 // It may seem tempting to import the Linux header files directly, but
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
185 // that would prevent cross-compilation and introduce all kinds of
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
186 // namespace pollution.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
187 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
188 // The actual implementation lives in variant HAL packages since
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
189 // typically they involve direct system calls via bits of assembler.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
190 // Note that only a subset of system calls are actually implemented,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
191 // so the variant HALs may need to be updated if this list needs to
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
192 // be extended.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
193
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
194 // Error codes.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
195 #define CYG_HAL_SYS_EINTR 4
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
196 #define CYG_HAL_SYS_EAGAIN 11
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
197
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
198 // Signal-related information
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
199 #define CYG_HAL_SYS_SIGHUP 1
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
200 #define CYG_HAL_SYS_SIGINT 2
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
201 #define CYG_HAL_SYS_SIGQUIT 3
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
202 #define CYG_HAL_SYS_SIGILL 4
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
203 #define CYG_HAL_SYS_SIGTRAP 5
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
204 #define CYG_HAL_SYS_SIGABRT 6
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
205 #define CYG_HAL_SYS_SIGBUS 7
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
206 #define CYG_HAL_SYS_SIGFPE 8
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
207 #define CYG_HAL_SYS_SIGKILL 9
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
208 #define CYG_HAL_SYS_SIGUSR1 10
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
209 #define CYG_HAL_SYS_SIGSEGV 11
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
210 #define CYG_HAL_SYS_SIGUSR2 12
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
211 #define CYG_HAL_SYS_SIGPIPE 13
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
212 #define CYG_HAL_SYS_SIGALRM 14
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
213 #define CYG_HAL_SYS_SIGTERM 15
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
214 #define CYG_HAL_SYS_SIGSTKFLT 16
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
215 #define CYG_HAL_SYS_SIGCHLD 17
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
216 #define CYG_HAL_SYS_SIGCONT 18
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
217 #define CYG_HAL_SYS_SIGSTOP 19
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
218 #define CYG_HAL_SYS_SIGTSTP 20
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
219 #define CYG_HAL_SYS_SIGTTIN 21
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
220 #define CYG_HAL_SYS_SIGTTOU 22
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
221 #define CYG_HAL_SYS_SIGURG 23
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
222 #define CYG_HAL_SYS_SIGXCPU 24
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
223 #define CYG_HAL_SYS_SIGXFSZ 25
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
224 #define CYG_HAL_SYS_SIGVTALRM 26
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
225 #define CYG_HAL_SYS_SIGPROF 27
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
226 #define CYG_HAL_SYS_SIGWINCH 28
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
227 #define CYG_HAL_SYS_SIGIO 29
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
228 #define CYG_HAL_SYS_SIGPWR 30
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
229 #define CYG_HAL_SYS_SIGSYS 31
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
230
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
231 #define CYG_HAL_SYS_SA_NOCLDSTOP 0x00000001
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
232 #define CYG_HAL_SYS_SA_NOCLDWAIT 0x00000002
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
233 #define CYG_HAL_SYS_SA_SIGINFO 0x00000004
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
234 #define CYG_HAL_SYS_SA_RESTART 0x10000000
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
235 #define CYG_HAL_SYS_SA_NODEFER 0x40000000
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
236 #define CYG_HAL_SYS_SIG_BLOCK 0
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
237 #define CYG_HAL_SYS_SIG_UNBLOCK 1
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
238 #define CYG_HAL_SYS_SIG_SETMASK 2
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
239
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
240 #define CYG_HAL_SYS__NSIG 64
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
241 #define CYG_HAL_SYS__SIGBITS (8 * sizeof(unsigned long))
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
242 #define CYG_HAL_SYS__SIGELT(_d_) ((_d_) / CYG_HAL_SYS__SIGBITS)
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
243 #define CYG_HAL_SYS__SIGMASK(_d_) ((unsigned long)1 << ((_d_) % CYG_HAL_SYS__SIGBITS))
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
244
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
245 typedef struct cyg_hal_sys_sigset_t {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
246 unsigned long hal_sig_bits[CYG_HAL_SYS__NSIG / CYG_HAL_SYS__SIGBITS];
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
247 } cyg_hal_sys_sigset_t;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
248
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
249 #define CYG_HAL_SYS_SIGFILLSET(_set_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
250 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
251 unsigned int __i; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
252 for (__i = 0; __i < (CYG_HAL_SYS__NSIG / CYG_HAL_SYS__SIGBITS); __i++) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
253 (_set_)->hal_sig_bits[__i] = ~0; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
254 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
255 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
256
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
257 #define CYG_HAL_SYS_SIGEMPTYSET(_set_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
258 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
259 unsigned int __i; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
260 for (__i = 0; __i < (CYG_HAL_SYS__NSIG / CYG_HAL_SYS__SIGBITS); __i++) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
261 (_set_)->hal_sig_bits[__i] = 0; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
262 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
263 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
264
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
265 #define CYG_HAL_SYS_SIGADDSET(_set_, _bit_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
266 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
267 (_set_)->hal_sig_bits[CYG_HAL_SYS__SIGELT(_bit_ - 1)] |= CYG_HAL_SYS__SIGMASK(_bit_ - 1); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
268 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
269
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
270 #define CYG_HAL_SYS_SIGDELSET(_set_, _bit_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
271 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
272 (_set_)->hal_sig_bits[CYG_HAL_SYS__SIGELT(_bit_ - 1)] &= ~CYG_HAL_SYS__SIGMASK(_bit_ - 1); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
273 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
274
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
275 #define CYG_HAL_SYS_SIGISMEMBER(_set_, _bit_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
276 (0 != ((_set_)->hal_sig_bits[CYG_HAL_SYS__SIGELT(_bit_ - 1)] & CYG_HAL_SYS__SIGMASK(_bit_ - 1)))
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
277
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
278 struct cyg_hal_sys_sigaction {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
279 void (*hal_handler)(int);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
280 long hal_mask;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
281 int hal_flags;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
282 void (*hal_bogus)(int);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
283 };
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
284
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
285 // Time support.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
286 struct cyg_hal_sys_timeval {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
287 long hal_tv_sec;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
288 long hal_tv_usec;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
289 };
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
290
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
291 struct cyg_hal_sys_timezone {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
292 int hal_tz_minuteswest;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
293 int hal_tz_dsttime;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
294 };
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
295
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
296 // Select support. Initially this is used only by the idle handler.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
297 #define CYG_HAL_SYS_FD_SETSIZE 1024
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
298 #define CYG_HAL_SYS__NFDBITS (8 * sizeof(unsigned long))
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
299 #define CYG_HAL_SYS__FDELT(_d_) ((_d_) / CYG_HAL_SYS__NFDBITS)
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
300 #define CYG_HAL_SYS__FDMASK(_d_) ((unsigned long)1 << ((_d_) % CYG_HAL_SYS__NFDBITS))
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
301
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
302 struct cyg_hal_sys_fd_set {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
303 unsigned long hal_fds_bits[CYG_HAL_SYS_FD_SETSIZE / CYG_HAL_SYS__NFDBITS];
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
304 };
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
305 #define CYG_HAL_SYS_FD_ZERO(_fdsp_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
306 do { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
307 unsigned int __i; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
308 for (__i = 0; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
309 __i < (CYG_HAL_SYS_FD_SETSIZE / CYG_HAL_SYS__NFDBITS); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
310 __i++) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
311 (_fdsp_)->hal_fds_bits[__i] = 0; \
1671
61d6d4688f20 Added missing }
asl
parents: 1660
diff changeset
312 } \
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
313 } while (0);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
314
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
315 #define CYG_HAL_SYS_FD_SET(_fd_, _fdsp_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
316 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
317 (_fdsp_)->hal_fds_bits[CYG_HAL_SYS__FDELT(_fd_)] |= CYG_HAL_SYS__FDMASK(_fd_); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
318 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
319
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
320 #define CYG_HAL_SYS_FD_CLR(_fd_, _fdsp_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
321 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
322 (_fdsp_)->hal_fds_bits[CYG_HAL_SYS__FDELT(_fd_)] &= ~CYG_HAL_SYS__FDMASK(_fd_); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
323 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
324
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
325 #define CYG_HAL_SYS_FD_ISSET(_fd_, _fdsp_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
326 (0 != ((_fdsp_)->hal_fds_bits[CYG_HAL_SYS__FDELT(_fd_)] & CYG_HAL_SYS__FDMASK(_fd_)))
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
327
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
328 // Interval timer support, needed for the clock.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
329 #define CYG_HAL_SYS_ITIMER_REAL 0
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
330 #define CYG_HAL_SYS_ITIMER_VIRTUAL 1
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
331 #define CYG_HAL_SYS_ITIMER_PROF 2
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
332
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
333 struct cyg_hal_sys_itimerval {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
334 struct cyg_hal_sys_timeval hal_it_interval;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
335 struct cyg_hal_sys_timeval hal_it_value;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
336 };
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
337
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
338 // System calls and related constants, or rather the subset that is
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
339 // needed internally.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
340 #define CYG_HAL_SYS_R_OK 0x04
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
341 #define CYG_HAL_SYS_W_OK 0x02
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
342 #define CYG_HAL_SYS_X_OK 0x01
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
343 #define CYG_HAL_SYS_F_OK 0x00
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
344
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
345 /* lseek whence flags */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
346 #define CYG_HAL_SYS_SEEK_SET 0 /* Seek from beginning of file. */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
347 #define CYG_HAL_SYS_SEEK_CUR 1 /* Seek from current position. */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
348 #define CYG_HAL_SYS_SEEK_END 2 /* Seek from end of file. */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
349
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
350 /* open/fcntl flags */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
351
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
352 #define CYG_HAL_SYS_O_RDONLY 0
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
353 #define CYG_HAL_SYS_O_WRONLY 01
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
354 #define CYG_HAL_SYS_O_RDWR 02
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
355 #define CYG_HAL_SYS_O_CREAT 0100
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
356 #define CYG_HAL_SYS_O_EXCL 0200
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
357 #define CYG_HAL_SYS_O_NOCTTY 0400
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
358 #define CYG_HAL_SYS_O_TRUNC 01000
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
359 #define CYG_HAL_SYS_O_APPEND 02000
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
360 #define CYG_HAL_SYS_O_NONBLOCK 04000
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
361 #define CYG_HAL_SYS_O_NDELAY CYG_HAL_SYS_O_NONBLOCK
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
362 #define CYG_HAL_SYS_O_SYNC 010000
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
363 #define CYG_HAL_SYS_O_FSYNC CYG_HAL_SYS_O_SYNC
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
364 #define CYG_HAL_SYS_O_ASYNC 020000
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
365
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
366 /* open mode flags */
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
367 #define CYG_HAL_SYS_S_IRUSR 0400
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
368 #define CYG_HAL_SYS_S_IREAD CYG_HAL_SYS_S_IRUSR
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
369 #define CYG_HAL_SYS_S_IWUSR 0200
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
370 #define CYG_HAL_SYS_S_IWRITE CYG_HAL_SYS_S_IWUSR
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
371 #define CYG_HAL_SYS_S_IXUSR 0100
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
372 #define CYG_HAL_SYS_S_IEXEC CYG_HAL_SYS_S_IXUSR
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
373 #define CYG_HAL_SYS_S_IRWXU \
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
374 (CYG_HAL_SYS_S_IREAD|CYG_HAL_SYS_S_IWRITE|CYG_HAL_SYS_S_IEXEC)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
375 #define CYG_HAL_SYS_S_IRWXG (CYG_HAL_SYS_S_IRWXU>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
376 #define CYG_HAL_SYS_S_IRGRP (CYG_HAL_SYS_S_IRUSR>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
377 #define CYG_HAL_SYS_S_IWGRP (CYG_HAL_SYS_S_IWUSR>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
378 #define CYG_HAL_SYS_S_IXGRP (CYG_HAL_SYS_S_IXUSR>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
379 #define CYG_HAL_SYS_S_IRWXO (CYG_HAL_SYS_S_IRWXG>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
380 #define CYG_HAL_SYS_S_IROTH (CYG_HAL_SYS_S_IRGRP>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
381 #define CYG_HAL_SYS_S_IWOTH (CYG_HAL_SYS_S_IWGRP>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
382 #define CYG_HAL_SYS_S_IXOTH (CYG_HAL_SYS_S_IXGRP>>3)
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
383
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
384 struct cyg_hal_sys_mmap_args {
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
385 unsigned long addr;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
386 unsigned long len;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
387 unsigned long prot;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
388 unsigned long flags;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
389 unsigned long fd;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
390 unsigned long offset;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
391 };
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
392
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
393 /* Protection flags for mmap */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
394 #define CYG_HAL_SYS_PROT_READ 0x1 /* page can be read */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
395 #define CYG_HAL_SYS_PROT_WRITE 0x2 /* page can be written */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
396 #define CYG_HAL_SYS_PROT_EXEC 0x4 /* page can be executed */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
397 #define CYG_HAL_SYS_PROT_NONE 0x0 /* page can not be accessed */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
398
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
399 /* Sharing types and other flags */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
400 #define CYG_HAL_SYS_MAP_SHARED 0x01 /* Share changes. */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
401 #define CYG_HAL_SYS_MAP_PRIVATE 0x02 /* Changes are private. */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
402 #define CYG_HAL_SYS_MAP_FIXED 0x10 /* Interpret addr exactly. */
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
403
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
404 // System calls, or rather the subset that is needed internally.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
405 externC unsigned long cyg_hal_sys_write(int, const void*, long);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
406 externC unsigned long cyg_hal_sys_read(int, void*, long);
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
407 externC int cyg_hal_sys_lseek(int, int, int);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
408 externC int cyg_hal_sys_open(const char *,int,int);
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
409 externC int cyg_hal_sys_fdatasync(int);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
410 externC int cyg_hal_sys_sigaction(int,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
411 const struct cyg_hal_sys_sigaction*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
412 struct cyg_hal_sys_sigaction*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
413 externC int cyg_hal_sys_sigprocmask(int,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
414 const cyg_hal_sys_sigset_t*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
415 cyg_hal_sys_sigset_t*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
416 externC int cyg_hal_sys__newselect(int,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
417 struct cyg_hal_sys_fd_set*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
418 struct cyg_hal_sys_fd_set*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
419 struct cyg_hal_sys_fd_set*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
420 struct cyg_hal_sys_timeval*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
421 externC int cyg_hal_sys_setitimer(int,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
422 const struct cyg_hal_sys_itimerval*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
423 struct cyg_hal_sys_itimerval*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
424 externC int cyg_hal_sys_gettimeofday(struct cyg_hal_sys_timeval*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
425 struct cyg_hal_sys_timezone*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
426
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
427 externC int cyg_hal_sys_access(const char*, int);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
428 externC int cyg_hal_sys_fork(void);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
429 externC int cyg_hal_sys_execve(const char*, const char* [], const char* []);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
430 externC int cyg_hal_sys_pipe(int []);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
431 externC int cyg_hal_sys_close(int);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
432 externC int cyg_hal_sys_dup2(int, int);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
433
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
434 // The actual implementation appears to return the new brk() value.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
435 externC void* cyg_hal_sys_brk(void*);
199
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 161
diff changeset
436
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 161
diff changeset
437 // Returns the number of characters placed in the buffer or <0 for error,
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 161
diff changeset
438 // not a char*.
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 161
diff changeset
439 externC int cyg_hal_sys_getcwd(char*, int);
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
440
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
441 // mmap on the "host" system - this may be unportable.
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
442 externC int cyg_hal_sys_mmap(struct cyg_hal_sys_mmap_args *);
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
443
260
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
444 // Access to environmental data
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
445 extern int cyg_hal_sys_argc;
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
446 extern const char** cyg_hal_sys_argv;
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
447 extern const char** cyg_hal_sys_environ;
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
448
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
449 // ----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
450 // Interaction between the application and the auxiliary.
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
451
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
452 // Is the auxiliary actually in use/available? This flag should be tested by
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
453 // device drivers prior to attempting any communication with the auxiliary.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
454 extern cyg_bool synth_auxiliary_running;
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
455
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
456 // The fundamental I/O operation: sending a request to the auxiliary and
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
457 // optionally getting back a reply. A null pointer for the response field
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
458 // indicates that no reply is expected.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
459 externC void synth_auxiliary_xchgmsg(int /* devid */, int /* request */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
460 int /* arg1 */, int /* arg2 */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
461 const unsigned char* /* txdata */, int /* txlen */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
462 int* /* response */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
463 unsigned char* /* rxdata */, int* /* actual_rxlen */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
464 int /* rxlen */);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
465
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
466 // Request that the auxiliary instantiates a given device, loading appropriate
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
467 // support code as required. This function takes the following arguments:
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
468 // 1) the location of the package that should provide this device, e.g.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
469 // devs/eth/synth
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
470 // 2) the version of that package currently being used, e.g. "current"
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
471 // 3) the name of the device, e.g. "ethernet". This identifies the
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
472 // Tcl script that should be loaded to handle requests for this device.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
473 // 4) the name of the device instance, e.g. "eth0".
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
474 // 5) device-specific initialization data.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
475 externC int synth_auxiliary_instantiate(const char*, const char*, const char*, const char*, const char*);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
476
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
477 // Support for generating strings
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
478 #define SYNTH_MAKESTRING1(a) #a
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
479 #define SYNTH_MAKESTRING(a) SYNTH_MAKESTRING1(a)
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
480
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
481 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
482 #endif // ifndef CYGONCE_HAL_HAL_IO_H
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
483 // End of hal_io.h