Mercurial > ecos
annotate packages/hal/synth/arch/current/include/hal_io.h @ 2099:de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
structure match the kernel version otherwise the stack gets
corrupt and we die 'orribly. Added cyg_hal_sys_new_stat for when
using the new?stat() calls.
* src/synth_syscall.c (cyg_hal_sys_ftok): use the correct structure
member names and use the newstat system call so we get
values back which are compatible with glibc ftok() function.
* tests/ftok.c (new): Test case for the cyg_hal_sys_ftok()
function added in the previous patch.
| author | asl |
|---|---|
| date | Sat, 05 Nov 2005 19:43:24 +0000 |
| parents | e24eba6542a3 |
| children | 74dbf4c3f2e1 |
| 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 | 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 | 363 #define CYG_HAL_SYS_O_WRONLY 01 |
| 364 #define CYG_HAL_SYS_O_RDWR 02 | |
| 365 #define CYG_HAL_SYS_O_CREAT 0100 | |
| 366 #define CYG_HAL_SYS_O_EXCL 0200 | |
| 367 #define CYG_HAL_SYS_O_NOCTTY 0400 | |
| 368 #define CYG_HAL_SYS_O_TRUNC 01000 | |
| 369 #define CYG_HAL_SYS_O_APPEND 02000 | |
| 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 | 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 | 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 | 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 | 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 | 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 | 394 /* stat flags */ |
| 395 #define CYG_HAL_SYS_S_IFMT 0170000 /*bitmask for the file type bitfields*/ | |
| 396 #define CYG_HAL_SYS_S_IFSOCK 0140000 /*socket*/ | |
| 397 #define CYG_HAL_SYS_S_IFLNK 0120000 /*symbolic link*/ | |
| 398 #define CYG_HAL_SYS_S_IFREG 0100000 /*regular file*/ | |
| 399 #define CYG_HAL_SYS_S_IFBLK 0060000 /*block device*/ | |
| 400 #define CYG_HAL_SYS_S_IFDIR 0040000 /*directory*/ | |
| 401 #define CYG_HAL_SYS_S_IFCHR 0020000 /*character device*/ | |
| 402 #define CYG_HAL_SYS_S_IFIFO 0010000 /*fifo*/ | |
| 403 #define CYG_HAL_SYS_S_ISUID 0004000 /*set UID bit*/ | |
| 404 #define CYG_HAL_SYS_S_ISGID 0002000 /*set GID bit (see below)*/ | |
| 405 #define CYG_HAL_SYS_S_ISVTX 0001000 /*sticky bit (see below)*/ | |
| 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 | 427 struct cyg_hal_sys_dirent |
| 428 { | |
| 429 unsigned long d_ino; | |
| 430 unsigned long d_off; | |
| 431 unsigned short int d_reclen; | |
| 432 char d_name[256]; | |
| 433 }; | |
| 434 | |
| 435 struct cyg_hal_sys_timespec | |
| 436 { | |
| 437 unsigned int tv_sec; | |
| 438 unsigned int tv_nsec; | |
| 439 }; | |
| 440 | |
|
2099
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
441 // NOTE: This corresponds to __old_kernel_stat in the kernel sources |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
442 // and should be used with cyg_hal_sys_oldstat etc. |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
443 |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
444 struct cyg_hal_sys_old_stat |
| 1676 | 445 { |
|
2099
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
446 unsigned short st_dev; /* device */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
447 unsigned short st_ino; /* inode */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
448 unsigned short st_mode; /* protection */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
449 unsigned short st_nlink; /* number of hard links */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
450 unsigned short st_uid; /* user ID of owner */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
451 unsigned short st_gid; /* group ID of owner */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
452 unsigned short st_rdev; /* device type (if inode device) */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
453 unsigned long st_size; /* total size, in bytes */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
454 unsigned long st_atime; /* time of last access */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
455 unsigned long st_mtime; /* time of last modification */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
456 unsigned long st_ctime; /* time of last change */ |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
457 }; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
458 |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
459 struct cyg_hal_sys_new_stat |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
460 { |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
461 unsigned long st_dev; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
462 unsigned long st_ino; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
463 unsigned short st_mode; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
464 unsigned short st_nlink; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
465 unsigned short st_uid; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
466 unsigned short st_gid; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
467 unsigned long st_rdev; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
468 unsigned long st_size; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
469 unsigned long st_blksize; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
470 unsigned long st_blocks; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
471 unsigned long st_atime; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
472 unsigned long st_atime_nsec; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
473 unsigned long st_mtime; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
474 unsigned long st_mtime_nsec; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
475 unsigned long st_ctime; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
476 unsigned long st_ctime_nsec; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
477 unsigned long __unused4; |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
478 unsigned long __unused5; |
| 1676 | 479 }; |
| 480 | |
| 481 // System calls, or rather the subset that is needed internally or by | |
| 482 // applications which want to access the host OS. | |
| 483 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
484 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
|
485 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
|
486 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
|
487 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
|
488 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
|
489 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
|
490 const struct cyg_hal_sys_sigaction*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
491 struct cyg_hal_sys_sigaction*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
492 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
|
493 const cyg_hal_sys_sigset_t*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
494 cyg_hal_sys_sigset_t*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
495 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
|
496 struct cyg_hal_sys_fd_set*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
497 struct cyg_hal_sys_fd_set*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
498 struct cyg_hal_sys_fd_set*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
499 struct cyg_hal_sys_timeval*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
500 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
|
501 const struct cyg_hal_sys_itimerval*, |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
502 struct cyg_hal_sys_itimerval*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
503 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
|
504 struct cyg_hal_sys_timezone*); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
505 |
|
332
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
506 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
|
507 externC int cyg_hal_sys_fork(void); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
508 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
|
509 externC int cyg_hal_sys_pipe(int []); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
510 externC int cyg_hal_sys_close(int); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
511 externC int cyg_hal_sys_dup2(int, int); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
512 |
|
1862
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
513 #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
|
514 #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
|
515 #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
|
516 #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
|
517 #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
|
518 #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
|
519 #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
|
520 #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
|
521 #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
|
522 #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
|
523 #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
|
524 |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
525 /*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
|
526 functions. These may be unportable*/ |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
527 |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
528 // 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
|
529 // perform the following functions. |
|
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_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
|
531 int third, void* ptr); |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
532 //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
|
533 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
|
534 //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
|
535 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
|
536 int shmflg); |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
537 //detach from it again |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
538 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
|
539 |
|
2099
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
540 // Convert a pathname and an identifier into a System V IPC key |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
541 externC int cyg_hal_sys_ftok(const char* path, int id); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
542 |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
543 // 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
|
544 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
|
545 |
|
920b9b754b53
Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents:
161
diff
changeset
|
546 // 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
|
547 // not a char*. |
|
920b9b754b53
Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents:
161
diff
changeset
|
548 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
|
549 |
|
1862
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
550 // 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
|
551 // 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
|
552 // containing all the arguments. |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
553 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
|
554 |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
555 // 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
|
556 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
|
557 unsigned long length, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
558 unsigned long prot, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
559 unsigned long flags, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
560 unsigned long fd, |
|
d27de7fdbf21
* include/hal_io.h: Add cyg_hal_sys_shmget(), cyg_hal_sys_shmat()
asl
parents:
1698
diff
changeset
|
561 unsigned long off); |
|
202
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
199
diff
changeset
|
562 |
| 1676 | 563 externC int cyg_hal_sys_readdir(unsigned int fd, |
| 564 struct cyg_hal_sys_dirent *dp, | |
| 565 unsigned int count); | |
|
2099
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
566 // Old syscall versions |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
567 externC int cyg_hal_sys_oldlstat(const char* name, |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
568 struct cyg_hal_sys_old_stat *buf); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
569 externC int cyg_hal_sys_oldfstat(int fd, struct cyg_hal_sys_old_stat *buf); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
570 externC int cyg_hal_sys_oldstat(const char* name, |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
571 struct cyg_hal_sys_old_stat *buf); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
572 // New syscall versions |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
573 externC int cyg_hal_sys_newlstat(const char* name, |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
574 struct cyg_hal_sys_new_stat *buf); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
575 externC int cyg_hal_sys_newfstat(int fd, struct cyg_hal_sys_new_stat *buf); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
576 externC int cyg_hal_sys_newstat(const char* name, |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
577 struct cyg_hal_sys_old_stat *buf); |
|
de02720a095b
* include/hal_io.h (struct cyg_hal_sys_old_stat): Make the
asl
parents:
1908
diff
changeset
|
578 |
|
1698
9a9ce858560e
* include/hal_io.h: Add cyg_hal_sys_mkdir() system call
asl
parents:
1676
diff
changeset
|
579 externC int cyg_hal_sys_mkdir(const char* path, int mode); |
| 1676 | 580 |
|
260
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
581 // Access to environmental data |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
582 extern int cyg_hal_sys_argc; |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
583 extern const char** cyg_hal_sys_argv; |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
584 extern const char** cyg_hal_sys_environ; |
|
922ca26d90c4
Add variables cyg_hal_sys_argc/argv/environ, corresponding to the
bartv
parents:
210
diff
changeset
|
585 |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
586 // ---------------------------------------------------------------------------- |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
587 // Interaction between the application and the auxiliary. |
|
332
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
588 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
589 // 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
|
590 // 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
|
591 extern cyg_bool synth_auxiliary_running; |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
592 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
593 // 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
|
594 // 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
|
595 // indicates that no reply is expected. |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
596 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
|
597 int /* arg1 */, int /* arg2 */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
598 const unsigned char* /* txdata */, int /* txlen */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
599 int* /* response */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
600 unsigned char* /* rxdata */, int* /* actual_rxlen */, |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
601 int /* rxlen */); |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
602 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
603 // 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
|
604 // 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
|
605 // 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
|
606 // devs/eth/synth |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
607 // 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
|
608 // 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
|
609 // 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
|
610 // 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
|
611 // 5) device-specific initialization data. |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
612 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
|
613 |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
614 // Support for generating strings |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
615 #define SYNTH_MAKESTRING1(a) #a |
|
7c1c8dc43ba1
Now witness the firepower of this fully armed and operational
bartv
parents:
260
diff
changeset
|
616 #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
|
617 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
618 //----------------------------------------------------------------------------- |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
diff
changeset
|
619 #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
|
620 // End of hal_io.h |
