annotate packages/hal/synth/arch/current/include/hal_io.h @ 1908:e24eba6542a3

Modify signal handler return sequence to avoid problems with recent kernels. Clean up the clock configuration options.
author bartv
date Fri, 11 Mar 2005 19:04:06 +0000
parents d27de7fdbf21
children de02720a095b
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
1908
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
79 #include <cyg/hal/var_io.h> // Variant-specific definitions
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
80
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
81 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
82 // IO Register address.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
83 // 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
84
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
85 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
86
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
87 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
88 // BYTE Register access.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
89 // 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
90
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
91 #define HAL_READ_UINT8( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
92 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
93 ((_value_) = *((volatile CYG_BYTE *)(_register_))); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
94 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
95
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
96 #define HAL_WRITE_UINT8( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
97 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
98 (*((volatile CYG_BYTE *)(_register_)) = (_value_)); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
99 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
100
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
101 #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
102 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
103 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
104 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
105 (_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
106 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
107 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
108
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
109 #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
110 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
111 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
112 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
113 ((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
114 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
115 CYG_MACRO_END
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
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
118 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
119 // 16 bit access.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
120 // 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
121
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
122 #define HAL_READ_UINT16( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
123 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
124 ((_value_) = *((volatile CYG_WORD16 *)(_register_))); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
125 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
126
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
127 #define HAL_WRITE_UINT16( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
128 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
129 (*((volatile CYG_WORD16 *)(_register_)) = (_value_)); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
130 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
131
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
132 #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
133 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
134 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
135 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
136 (_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
137 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
138 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
139
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
140 #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
141 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
142 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
143 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
144 ((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
145 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
146 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
147
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
148 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
149 // 32 bit access.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
150 // 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
151
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
152 #define HAL_READ_UINT32( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
153 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
154 ((_value_) = *((volatile CYG_WORD32 *)(_register_))); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
155 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
156
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
157 #define HAL_WRITE_UINT32( _register_, _value_ ) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
158 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
159 (*((volatile CYG_WORD32 *)(_register_)) = (_value_)); \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
160 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
162 #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
163 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
164 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
165 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
166 (_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
167 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
168 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
169
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
170 #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
171 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
172 cyg_count32 _i_,_j_; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
173 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
174 ((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
175 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
176 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
177
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
178 // ----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
179 // 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
180 // 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
181 // 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
182 // 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
183 // 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
184 // changes in the Linux kernel API.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
185 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
186 // 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
187 // 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
188 // namespace pollution.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
189 //
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
190 // 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
191 // 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
192 // 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
193 // 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
194 // be extended.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
195
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
196 // Error codes.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
197 #define CYG_HAL_SYS_EINTR 4
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
198 #define CYG_HAL_SYS_EAGAIN 11
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
199
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
200 // Signal-related information
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
201 #define CYG_HAL_SYS_SIGHUP 1
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
202 #define CYG_HAL_SYS_SIGINT 2
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
203 #define CYG_HAL_SYS_SIGQUIT 3
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
204 #define CYG_HAL_SYS_SIGILL 4
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
205 #define CYG_HAL_SYS_SIGTRAP 5
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
206 #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
207 #define CYG_HAL_SYS_SIGBUS 7
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
208 #define CYG_HAL_SYS_SIGFPE 8
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
209 #define CYG_HAL_SYS_SIGKILL 9
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
210 #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
211 #define CYG_HAL_SYS_SIGSEGV 11
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
212 #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
213 #define CYG_HAL_SYS_SIGPIPE 13
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
214 #define CYG_HAL_SYS_SIGALRM 14
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
215 #define CYG_HAL_SYS_SIGTERM 15
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
216 #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
217 #define CYG_HAL_SYS_SIGCHLD 17
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
218 #define CYG_HAL_SYS_SIGCONT 18
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
219 #define CYG_HAL_SYS_SIGSTOP 19
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
220 #define CYG_HAL_SYS_SIGTSTP 20
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
221 #define CYG_HAL_SYS_SIGTTIN 21
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
222 #define CYG_HAL_SYS_SIGTTOU 22
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
223 #define CYG_HAL_SYS_SIGURG 23
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
224 #define CYG_HAL_SYS_SIGXCPU 24
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
225 #define CYG_HAL_SYS_SIGXFSZ 25
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
226 #define CYG_HAL_SYS_SIGVTALRM 26
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
227 #define CYG_HAL_SYS_SIGPROF 27
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
228 #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
229 #define CYG_HAL_SYS_SIGIO 29
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
230 #define CYG_HAL_SYS_SIGPWR 30
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
231 #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
232
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
233 #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
234 #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
235 #define CYG_HAL_SYS_SA_SIGINFO 0x00000004
1908
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
236 #define CYG_HAL_SYS_SA_RESTORER 0x04000000
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
237 #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
238 #define CYG_HAL_SYS_SA_NODEFER 0x40000000
1908
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
239
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
240 #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
241 #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
242 #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
243
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
244 #define CYG_HAL_SYS__NSIG 64
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
245 #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
246 #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
247 #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
248
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
249 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
250 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
251 } cyg_hal_sys_sigset_t;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
252
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
253 #define CYG_HAL_SYS_SIGFILLSET(_set_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
254 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
255 unsigned int __i; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
256 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
257 (_set_)->hal_sig_bits[__i] = ~0; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
258 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
259 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
260
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
261 #define CYG_HAL_SYS_SIGEMPTYSET(_set_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
262 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
263 unsigned int __i; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
264 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
265 (_set_)->hal_sig_bits[__i] = 0; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
266 } \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
267 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
268
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
269 #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
270 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
271 (_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
272 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
273
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
274 #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
275 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
276 (_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 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
278
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
279 #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
280 (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
281
1908
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
282 // The kernel sigaction structure has changed, to allow for >32
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
283 // signals. This is the old version, i.e. a struct old_sigaction, for
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
284 // use with the sigaction() system call rather than rt_sigaction(). It
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
285 // is preferred to the more modern version because gdb knows about
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
286 // rt_sigaction() and will start intercepting signals, but it seems to
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
287 // ignore sigaction().
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
288 struct cyg_hal_sys_sigaction {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
289 void (*hal_handler)(int);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
290 long hal_mask;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
291 int hal_flags;
1908
e24eba6542a3 Modify signal handler return sequence to avoid problems with recent
bartv
parents: 1862
diff changeset
292 void (*hal_restorer)(void);
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
293 };
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 // Time support.
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
296 struct cyg_hal_sys_timeval {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
297 long hal_tv_sec;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
298 long hal_tv_usec;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
299 };
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
300
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
301 struct cyg_hal_sys_timezone {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
302 int hal_tz_minuteswest;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
303 int hal_tz_dsttime;
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
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
306 // 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
307 #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
308 #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
309 #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
310 #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
311
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
312 struct cyg_hal_sys_fd_set {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
313 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
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_ZERO(_fdsp_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
316 do { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
317 unsigned int __i; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
318 for (__i = 0; \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
319 __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
320 __i++) { \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
321 (_fdsp_)->hal_fds_bits[__i] = 0; \
1671
61d6d4688f20 Added missing }
asl
parents: 1660
diff changeset
322 } \
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
323 } while (0);
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_SET(_fd_, _fdsp_) \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
326 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
327 (_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
328 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
329
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
330 #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
331 CYG_MACRO_START \
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
332 (_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
333 CYG_MACRO_END
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
334
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
335 #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
336 (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
337
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
338 // 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
339 #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
340 #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
341 #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
342
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
343 struct cyg_hal_sys_itimerval {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
344 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
345 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
346 };
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
347
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
348 // 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
349 // needed internally.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
350 #define CYG_HAL_SYS_R_OK 0x04
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
351 #define CYG_HAL_SYS_W_OK 0x02
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
352 #define CYG_HAL_SYS_X_OK 0x01
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
353 #define CYG_HAL_SYS_F_OK 0x00
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
354
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
355 /* lseek whence flags */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
356 #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
357 #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
358 #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
359
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
360 /* open/fcntl flags */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
361
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
362 #define CYG_HAL_SYS_O_RDONLY 0
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
363 #define CYG_HAL_SYS_O_WRONLY 01
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
364 #define CYG_HAL_SYS_O_RDWR 02
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
365 #define CYG_HAL_SYS_O_CREAT 0100
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
366 #define CYG_HAL_SYS_O_EXCL 0200
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
367 #define CYG_HAL_SYS_O_NOCTTY 0400
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
368 #define CYG_HAL_SYS_O_TRUNC 01000
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
369 #define CYG_HAL_SYS_O_APPEND 02000
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
370 #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
371 #define CYG_HAL_SYS_O_NDELAY CYG_HAL_SYS_O_NONBLOCK
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
372 #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
373 #define CYG_HAL_SYS_O_FSYNC CYG_HAL_SYS_O_SYNC
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
374 #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
375
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
376 /* open mode flags */
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
377 #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
378 #define CYG_HAL_SYS_S_IREAD CYG_HAL_SYS_S_IRUSR
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
379 #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
380 #define CYG_HAL_SYS_S_IWRITE CYG_HAL_SYS_S_IWUSR
1660
eb74917a64e1 * include/hal_io.h:
asl
parents: 332
diff changeset
381 #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
382 #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
383 #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
384 (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
385 #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
386 #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
387 #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
388 #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
389 #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
390 #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
391 #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
392 #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
393
1676
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
394 /* stat flags */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
395 #define CYG_HAL_SYS_S_IFMT 0170000 /*bitmask for the file type bitfields*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
396 #define CYG_HAL_SYS_S_IFSOCK 0140000 /*socket*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
397 #define CYG_HAL_SYS_S_IFLNK 0120000 /*symbolic link*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
398 #define CYG_HAL_SYS_S_IFREG 0100000 /*regular file*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
399 #define CYG_HAL_SYS_S_IFBLK 0060000 /*block device*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
400 #define CYG_HAL_SYS_S_IFDIR 0040000 /*directory*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
401 #define CYG_HAL_SYS_S_IFCHR 0020000 /*character device*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
402 #define CYG_HAL_SYS_S_IFIFO 0010000 /*fifo*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
403 #define CYG_HAL_SYS_S_ISUID 0004000 /*set UID bit*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
404 #define CYG_HAL_SYS_S_ISGID 0002000 /*set GID bit (see below)*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
405 #define CYG_HAL_SYS_S_ISVTX 0001000 /*sticky bit (see below)*/
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
406
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
407 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
408 unsigned long addr;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
409 unsigned long len;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
410 unsigned long prot;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
411 unsigned long flags;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
412 unsigned long fd;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
413 unsigned long offset;
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
414 };
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
415
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
416 /* Protection flags for mmap */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
417 #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
418 #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
419 #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
420 #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
421
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
422 /* Sharing types and other flags */
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
423 #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
424 #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
425 #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
426
1676
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
427 struct cyg_hal_sys_dirent
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
428 {
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
429 unsigned long d_ino;
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
430 unsigned long d_off;
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
431 unsigned short int d_reclen;
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
432 char d_name[256];
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
433 };
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
434
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
435 struct cyg_hal_sys_timespec
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
436 {
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
437 unsigned int tv_sec;
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
438 unsigned int tv_nsec;
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
439 };
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
440
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
441 struct cyg_hal_sys_stat
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
442 {
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
443 unsigned int dev; /* inode */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
444 unsigned long ino; /* device */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
445 unsigned short mode; /* protection */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
446 unsigned short nlink; /* number of hard links */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
447 unsigned short uid; /* user ID of owner */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
448 unsigned short gid; /* group ID of owner */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
449 unsigned long rdev; /* device type (if inode device) */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
450 unsigned long size; /* total size, in bytes */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
451 unsigned int blksize; /* blocksize for filesystem I/O */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
452 unsigned int blocks; /* number of blocks allocated */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
453 struct cyg_hal_sys_timespec atime; /* time of last access */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
454 struct cyg_hal_sys_timespec mtime; /* time of last modification */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
455 struct cyg_hal_sys_timespec ctime; /* time of last change */
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
456 };
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
457
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
458 // System calls, or rather the subset that is needed internally or by
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
459 // applications which want to access the host OS.
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
460
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
461 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
462 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
463 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
464 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
465 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
466 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
467 const struct cyg_hal_sys_sigaction*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
468 struct cyg_hal_sys_sigaction*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
469 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
470 const cyg_hal_sys_sigset_t*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
471 cyg_hal_sys_sigset_t*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
472 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
473 struct cyg_hal_sys_fd_set*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
474 struct cyg_hal_sys_fd_set*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
475 struct cyg_hal_sys_fd_set*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
476 struct cyg_hal_sys_timeval*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
477 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
478 const struct cyg_hal_sys_itimerval*,
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
479 struct cyg_hal_sys_itimerval*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
480 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
481 struct cyg_hal_sys_timezone*);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
482
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
483 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
484 externC int cyg_hal_sys_fork(void);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
485 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
486 externC int cyg_hal_sys_pipe(int []);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
487 externC int cyg_hal_sys_close(int);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
488 externC int cyg_hal_sys_dup2(int, int);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
489
1862
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
490 #define CYG_HAL_SYS_IPCOP_semop 1
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
491 #define CYG_HAL_SYS_IPCOP_semget 2
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
492 #define CYG_HAL_SYS_IPCOP_semctl 3
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
493 #define CYG_HAL_SYS_IPCOP_msgsnd 11
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
494 #define CYG_HAL_SYS_IPCOP_msgrcv 12
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
495 #define CYG_HAL_SYS_IPCOP_msgget 13
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
496 #define CYG_HAL_SYS_IPCOP_msgctl 14
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
497 #define CYG_HAL_SYS_IPCOP_shmat 21
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
498 #define CYG_HAL_SYS_IPCOP_shmdt 22
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
499 #define CYG_HAL_SYS_IPCOP_shmget 23
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
500 #define CYG_HAL_SYS_IPCOP_shmctl 24
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
501
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
502 /*The ipc system call, which is used by the following shmem
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
503 functions. These may be unportable*/
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
504
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
505 // Generic system call. Depending on the value of call, it will
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
506 // perform the following functions.
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
507 externC int cyg_hal_sys_ipc(int call, int first, int second,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
508 int third, void* ptr);
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
509 //get an identifier for a shared memory segment
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
510 externC int cyg_hal_sys_shmget (int key, int size, int shmflg);
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
511 //attach to an shared memory segment
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
512 externC void * cyg_hal_sys_shmat (int shmid, const void* shmaddr,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
513 int shmflg);
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
514 //detach from it again
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
515 externC int cyg_hal_sys_shmdt (const void* shmaddr);
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
516
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
517 // 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
518 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
519
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 161
diff changeset
520 // 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
521 // not a char*.
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 161
diff changeset
522 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
523
1862
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
524 // mmap on the "host" system - this may be unportable. This is the
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
525 // really system call into the kernel which passes one structure
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
526 // containing all the arguments.
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
527 externC int cyg_hal_sys_mmapx(struct cyg_hal_sys_mmap_args *);
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
528
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
529 // This is the mmap call that users are used to.
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
530 externC int cyg_hal_sys_mmap(void *addr,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
531 unsigned long length,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
532 unsigned long prot,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
533 unsigned long flags,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
534 unsigned long fd,
d27de7fdbf21 * include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents: 1698
diff changeset
535 unsigned long off);
202
353a011b23b8 Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents: 199
diff changeset
536
1676
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
537 externC int cyg_hal_sys_readdir(unsigned int fd,
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
538 struct cyg_hal_sys_dirent *dp,
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
539 unsigned int count);
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
540 externC int cyg_hal_sys_lstat(const char* name, struct cyg_hal_sys_stat *buf);
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
541 externC int cyg_hal_sys_fstat(int fd, struct cyg_hal_sys_stat *buf);
1698
9a9ce858560e * include/hal_io.h: Add cyg_hal_sys_mkdir() system call
asl
parents: 1676
diff changeset
542 externC int cyg_hal_sys_mkdir(const char* path, int mode);
1676
0f42ca5f04a9 * include/hal_io.h:
asl
parents: 1671
diff changeset
543
260
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
544 // Access to environmental data
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
545 extern int cyg_hal_sys_argc;
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
546 extern const char** cyg_hal_sys_argv;
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
547 extern const char** cyg_hal_sys_environ;
922ca26d90c4 Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents: 210
diff changeset
548
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
549 // ----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
550 // Interaction between the application and the auxiliary.
332
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
551
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
552 // 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
553 // 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
554 extern cyg_bool synth_auxiliary_running;
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
555
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
556 // 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
557 // 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
558 // indicates that no reply is expected.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
559 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
560 int /* arg1 */, int /* arg2 */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
561 const unsigned char* /* txdata */, int /* txlen */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
562 int* /* response */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
563 unsigned char* /* rxdata */, int* /* actual_rxlen */,
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
564 int /* rxlen */);
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
565
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
566 // 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
567 // 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
568 // 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
569 // devs/eth/synth
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
570 // 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
571 // 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
572 // 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
573 // 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
574 // 5) device-specific initialization data.
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
575 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
576
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
577 // Support for generating strings
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
578 #define SYNTH_MAKESTRING1(a) #a
7c1c8dc43ba1 Now witness the firepower of this fully armed and operational
bartv
parents: 260
diff changeset
579 #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
580
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
581 //-----------------------------------------------------------------------------
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff changeset
582 #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
583 // End of hal_io.h