Mercurial > ecos
annotate packages/hal/synth/arch/current/include/hal_io.h @ 1862:d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
and cyg_hal_sys_shmdt() system calls
* src/synth_syscalls.c: Implementations of cyg_hal_sys_shmget(),
cyg_hal_sys_shmat() and cyg_hal_sys_shmdt(). Moved
cyg_hal_sys_mmap() from the flash driver to here.
| author | asl |
|---|---|
| date | Wed, 15 Dec 2004 14:01:38 +0000 |
| parents | 9a9ce858560e |
| children | e24eba6542a3 |
| 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 | 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 | 353 #define CYG_HAL_SYS_O_WRONLY 01 |
| 354 #define CYG_HAL_SYS_O_RDWR 02 | |
| 355 #define CYG_HAL_SYS_O_CREAT 0100 | |
| 356 #define CYG_HAL_SYS_O_EXCL 0200 | |
| 357 #define CYG_HAL_SYS_O_NOCTTY 0400 | |
| 358 #define CYG_HAL_SYS_O_TRUNC 01000 | |
| 359 #define CYG_HAL_SYS_O_APPEND 02000 | |
| 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 | 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 | 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 | 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 | 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 | 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 |
| 1676 | 384 /* stat flags */ |
| 385 #define CYG_HAL_SYS_S_IFMT 0170000 /*bitmask for the file type bitfields*/ | |
| 386 #define CYG_HAL_SYS_S_IFSOCK 0140000 /*socket*/ | |
| 387 #define CYG_HAL_SYS_S_IFLNK 0120000 /*symbolic link*/ | |
| 388 #define CYG_HAL_SYS_S_IFREG 0100000 /*regular file*/ | |
| 389 #define CYG_HAL_SYS_S_IFBLK 0060000 /*block device*/ | |
| 390 #define CYG_HAL_SYS_S_IFDIR 0040000 /*directory*/ | |
| 391 #define CYG_HAL_SYS_S_IFCHR 0020000 /*character device*/ | |
| 392 #define CYG_HAL_SYS_S_IFIFO 0010000 /*fifo*/ | |
| 393 #define CYG_HAL_SYS_S_ISUID 0004000 /*set UID bit*/ | |
| 394 #define CYG_HAL_SYS_S_ISGID 0002000 /*set GID bit (see below)*/ | |
| 395 #define CYG_HAL_SYS_S_ISVTX 0001000 /*sticky bit (see below)*/ | |
| 396 | |
|
202
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
397 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
|
398 unsigned long addr; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
399 unsigned long len; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
400 unsigned long prot; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
401 unsigned long flags; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
402 unsigned long fd; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
403 unsigned long offset; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
404 }; |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
405 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
406 /* Protection flags for mmap */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
407 #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
|
408 #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
|
409 #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
|
410 #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
|
411 |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
412 /* Sharing types and other flags */ |
|
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
413 #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
|
414 #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
|
415 #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
|
416 |
| 1676 | 417 struct cyg_hal_sys_dirent |
| 418 { | |
| 419 unsigned long d_ino; | |
| 420 unsigned long d_off; | |
| 421 unsigned short int d_reclen; | |
| 422 char d_name[256]; | |
| 423 }; | |
| 424 | |
| 425 struct cyg_hal_sys_timespec | |
| 426 { | |
| 427 unsigned int tv_sec; | |
| 428 unsigned int tv_nsec; | |
| 429 }; | |
| 430 | |
| 431 struct cyg_hal_sys_stat | |
| 432 { | |
| 433 unsigned int dev; /* inode */ | |
| 434 unsigned long ino; /* device */ | |
| 435 unsigned short mode; /* protection */ | |
| 436 unsigned short nlink; /* number of hard links */ | |
| 437 unsigned short uid; /* user ID of owner */ | |
| 438 unsigned short gid; /* group ID of owner */ | |
| 439 unsigned long rdev; /* device type (if inode device) */ | |
| 440 unsigned long size; /* total size, in bytes */ | |
| 441 unsigned int blksize; /* blocksize for filesystem I/O */ | |
| 442 unsigned int blocks; /* number of blocks allocated */ | |
| 443 struct cyg_hal_sys_timespec atime; /* time of last access */ | |
| 444 struct cyg_hal_sys_timespec mtime; /* time of last modification */ | |
| 445 struct cyg_hal_sys_timespec ctime; /* time of last change */ | |
| 446 }; | |
| 447 | |
| 448 // System calls, or rather the subset that is needed internally or by | |
| 449 // applications which want to access the host OS. | |
| 450 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
451 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
|
452 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
|
453 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
|
454 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
|
455 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
|
456 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
|
457 const struct cyg_hal_sys_sigaction*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
458 struct cyg_hal_sys_sigaction*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
459 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
|
460 const cyg_hal_sys_sigset_t*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
461 cyg_hal_sys_sigset_t*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
462 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
|
463 struct cyg_hal_sys_fd_set*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
464 struct cyg_hal_sys_fd_set*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
465 struct cyg_hal_sys_fd_set*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
466 struct cyg_hal_sys_timeval*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
467 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
|
468 const struct cyg_hal_sys_itimerval*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
469 struct cyg_hal_sys_itimerval*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
470 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
|
471 struct cyg_hal_sys_timezone*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
472 |
|
332
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
473 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
|
474 externC int cyg_hal_sys_fork(void); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
475 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
|
476 externC int cyg_hal_sys_pipe(int []); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
477 externC int cyg_hal_sys_close(int); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
478 externC int cyg_hal_sys_dup2(int, int); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
479 |
|
1862
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
480 #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
|
481 #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
|
482 #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
|
483 #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
|
484 #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
|
485 #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
|
486 #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
|
487 #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
|
488 #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
|
489 #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
|
490 #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
|
491 |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
492 /*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
|
493 functions. These may be unportable*/ |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
494 |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
495 // 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
|
496 // perform the following functions. |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
497 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
|
498 int third, void* ptr); |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
499 //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
|
500 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
|
501 //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
|
502 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
|
503 int shmflg); |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
504 //detach from it again |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
505 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
|
506 |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
507 // 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
|
508 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
|
509 |
|
920b9b754b53
Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents:
161
diff
changeset
|
510 // 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
|
511 // not a char*. |
|
920b9b754b53
Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents:
161
diff
changeset
|
512 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
|
513 |
|
1862
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
514 // 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
|
515 // 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
|
516 // containing all the arguments. |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
517 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
|
518 |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
519 // 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
|
520 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
|
521 unsigned long length, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
522 unsigned long prot, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
523 unsigned long flags, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
524 unsigned long fd, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
525 unsigned long off); |
|
202
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
526 |
| 1676 | 527 externC int cyg_hal_sys_readdir(unsigned int fd, |
| 528 struct cyg_hal_sys_dirent *dp, | |
| 529 unsigned int count); | |
| 530 externC int cyg_hal_sys_lstat(const char* name, struct cyg_hal_sys_stat *buf); | |
| 531 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
|
532 externC int cyg_hal_sys_mkdir(const char* path, int mode); |
| 1676 | 533 |
|
260
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
534 // Access to environmental data |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
535 extern int cyg_hal_sys_argc; |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
536 extern const char** cyg_hal_sys_argv; |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
537 extern const char** cyg_hal_sys_environ; |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
538 |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
539 // ---------------------------------------------------------------------------- |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
540 // Interaction between the application and the auxiliary. |
|
332
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
541 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
542 // 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
|
543 // 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
|
544 extern cyg_bool synth_auxiliary_running; |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
545 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
546 // 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
|
547 // 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
|
548 // indicates that no reply is expected. |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
549 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
|
550 int /* arg1 */, int /* arg2 */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
551 const unsigned char* /* txdata */, int /* txlen */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
552 int* /* response */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
553 unsigned char* /* rxdata */, int* /* actual_rxlen */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
554 int /* rxlen */); |
|
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 // 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
|
557 // 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
|
558 // 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
|
559 // devs/eth/synth |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
560 // 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
|
561 // 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
|
562 // 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
|
563 // 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
|
564 // 5) device-specific initialization data. |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
565 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
|
566 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
567 // Support for generating strings |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
568 #define SYNTH_MAKESTRING1(a) #a |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
569 #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
|
570 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
571 //----------------------------------------------------------------------------- |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
572 #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
|
573 // End of hal_io.h |
