annotate packages/kernel/current/include/kapidata.h @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents 74dbf4c3f2e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_KERNEL_KAPIDATA_H
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 #define CYGONCE_KERNEL_KAPIDATA_H
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 /*=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
6 // kapidata.h
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
8 // Native API data structures
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
11 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
12 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
13 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
15 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
16 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
17 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
18 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
19 // version.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
20 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
21 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
22 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
24 // for more details.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
25 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
26 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
27 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
28 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
29 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
30 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
31 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
32 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
33 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
34 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
35 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
36 // General Public License v2.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
37 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
38 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
39 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
40 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2348
diff changeset
41 // ####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
45 // Author(s): nickg
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
46 // Contributors: nickg
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
47 // Date: 1998-03-13
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
48 // Purpose: Native API data structures
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
49 // Description: This file defines the structures used in the native API. The
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 // sizes of these structures are dependent on the system
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 // configuration and must be kept in step with their real
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 // counterparts in the C++ headers.
148
8f2f7615e727 Merge from eCos master repository on 2001-01-12-06:43:03-GMT
jlarmour
parents: 115
diff changeset
53 // IMPORTANT: It is NOT guaranteed that the fields of these
8f2f7615e727 Merge from eCos master repository on 2001-01-12-06:43:03-GMT
jlarmour
parents: 115
diff changeset
54 // structures correspond to the equivalent fields in the
8f2f7615e727 Merge from eCos master repository on 2001-01-12-06:43:03-GMT
jlarmour
parents: 115
diff changeset
55 // C++ classes they shadow.
771
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
56 //
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
57 // One oddity with this file is that the way many of the "mirror"
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
58 // classes are defined with macros. The resulting structures
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
59 // then have a "flat" layout, rather than just declaring a
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
60 // member structure directly in the structure. The reason for
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
61 // this is that as of GCC 3.x, the C++ compiler will optimise
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
62 // classes by removing padding and reusing it for subsequent
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
63 // members defined in a derived class. This affects some targets
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
64 // (including PowerPC and MIPS at least) when a C++ base class
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
65 // includes a long long. By instead arranging for the C structure
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
66 // to just list all the members directly, the compiler will then
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
67 // behave the same for the C structures as the C++ classes.
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
68 //
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
69 // This means that care has to be taken to follow the same
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
70 // methodology if new stuff is added to this file. Even if
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
71 // it doesn't contain long longs for your target, it may for
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
72 // others, depending on HAL definitions.
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
73 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
74 // Usage: included by kapi.h
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 //==========================================================================*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
263
c0d53837cb68 Allow configurations which have the kernel but not the memalloc
bartv
parents: 210
diff changeset
80 #include <pkgconf/system.h>
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 #include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 #include <cyg/infra/cyg_type.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 #include <cyg/hal/hal_intr.h> // exception defines
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 #ifdef __cplusplus
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 extern "C" {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 #ifndef CYGNUM_KERNEL_SCHED_BITMAP_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 #if defined(CYGSEM_KERNEL_SCHED_MLQUEUE)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 #define CYGNUM_KERNEL_SCHED_BITMAP_SIZE 32
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 #elif defined(CYGSEM_KERNEL_SCHED_BITMAP)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 #define CYGNUM_KERNEL_SCHED_BITMAP_SIZE 32
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 #if CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 8
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 typedef cyg_ucount8 cyg_sched_bitmap;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 typedef cyg_ucount16 cyg_sched_bitmap;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 32
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 typedef cyg_ucount32 cyg_sched_bitmap;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 64
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 typedef cyg_ucount64 cyg_sched_bitmap;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 #error Bitmaps greater than 64 bits not currently allowed
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 typedef struct
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 #if defined(CYGSEM_KERNEL_SCHED_BITMAP)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 cyg_sched_bitmap map;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 #elif defined(CYGSEM_KERNEL_SCHED_MLQUEUE)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 cyg_thread *queue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 #elif defined(CYGSEM_KERNEL_SCHED_LOTTERY)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 cyg_thread *queue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 #error Undefined scheduler type
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 } cyg_threadqueue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 struct cyg_interrupt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 cyg_vector_t vector;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 cyg_priority_t priority;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 cyg_ISR_t *isr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 cyg_DSR_t *dsr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 CYG_ADDRWORD data;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 #ifdef CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 cyg_ucount32 dsr_count;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 cyg_interrupt *next_dsr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 #ifdef CYGIMP_KERNEL_INTERRUPTS_CHAIN
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 cyg_interrupt *next;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
157
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 #if defined(CYGIMP_KERNEL_COUNTERS_SINGLE_LIST)
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
159 # define CYG_COUNTER_ALARM_LIST_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 cyg_alarm *alarm_list;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 #elif defined(CYGIMP_KERNEL_COUNTERS_MULTI_LIST)
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
162 # define CYG_COUNTER_ALARM_LIST_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 cyg_alarm *alarm_list[CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE];
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
164 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
165 # define CYG_COUNTER_ALARM_LIST_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 #endif
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
167
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
168 #define CYG_COUNTER_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
169 CYG_COUNTER_ALARM_LIST_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
170 cyg_tick_count_t counter; \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 cyg_uint32 increment;
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
172
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
173 struct cyg_counter
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
174 {
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
175 CYG_COUNTER_MEMBERS
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 struct cyg_clock
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 {
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
182 CYG_COUNTER_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
183 CYG_RESOLUTION_T_MEMBERS
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
188
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
189 #if defined(CYGIMP_KERNEL_COUNTERS_SINGLE_LIST) || \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
190 defined(CYGIMP_KERNEL_COUNTERS_MULTI_LIST)
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
191 # define CYG_ALARM_LIST_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
192 cyg_alarm *next; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
193 cyg_alarm *prev;
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
194 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
195 # define CYG_ALARM_LIST_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
196 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
197
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
198 #define CYG_ALARM_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
199 CYG_ALARM_LIST_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
200 cyg_counter *counter; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
201 cyg_alarm_t *alarm; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
202 CYG_ADDRWORD data; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
203 cyg_tick_count_t trigger; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
204 cyg_tick_count_t interval; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
205 cyg_bool enabled;
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
206
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 struct cyg_alarm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 {
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
209 CYG_ALARM_MEMBERS
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 /* Exception controller */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 #ifdef CYGPKG_KERNEL_EXCEPTIONS
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
216
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
217 # ifdef CYGSEM_KERNEL_EXCEPTIONS_DECODE
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
218 # define CYG_EXCEPTION_CONTROL_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
219 cyg_exception_handler_t *exception_handler[CYGNUM_HAL_EXCEPTION_COUNT]; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
220 CYG_ADDRWORD exception_data[CYGNUM_HAL_EXCEPTION_COUNT];
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
221 # else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
222 # define CYG_EXCEPTION_CONTROL_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
223 cyg_exception_handler_t *exception_handler; /* Handler function */ \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
224 CYG_ADDRWORD exception_data; /* Handler data */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
225 # endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
226
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 typedef struct
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 {
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
229 CYG_EXCEPTION_CONTROL_MEMBERS
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 } cyg_exception_control;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 /*---------------------------------------------------------------------------*/
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
235 /* Hardware Thread structure */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
236
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
237 #ifdef CYGFUN_KERNEL_THREADS_STACK_LIMIT
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
238 # define CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
239 CYG_ADDRESS stack_limit; /* movable stack limit */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
240 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
241 # define CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
242 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
243
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
244 #ifdef CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
245 # define CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
246 void *saved_context; // If non-zero, this points at a more
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
247 // interesting context than stack_ptr.
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
248 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
249 # define CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
250 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
251
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
252 typedef void cyg_thread_entry(CYG_ADDRWORD data);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
253
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
254 #define CYG_HARDWARETHREAD_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
255 CYG_ADDRESS stack_base; /* pointer to base of stack area */ \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
256 cyg_uint32 stack_size; /* size of stack area in bytes */ \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
257 CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
258 CYG_ADDRESS stack_ptr; /* pointer to saved state on stack */ \
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
259 cyg_thread_entry *entry_point; /* main entry point (code pointer!) */ \
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
260 CYG_ADDRWORD entry_data; /* entry point argument */ \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
261 CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 typedef struct
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 {
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
265 CYG_HARDWARETHREAD_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
266 } cyg_hardwarethread;
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
267
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
268 /*---------------------------------------------------------------------------*/
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
269 /* Scheduler Thread structure */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
270
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
271 #ifdef CYGPKG_KERNEL_SMP_SUPPORT
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
272 # define CYG_SCHEDTHREAD_CPU_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
273 cyg_uint32 cpu; // CPU id of cpu currently running
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
274 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
275 # define CYG_SCHEDTHREAD_CPU_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
276 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
277
2348
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
278 #ifdef CYGSEM_KERNEL_SCHED_TIMESLICE
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
279 # define CYG_SCHEDTHREAD_TIMESLICE_MEMBER \
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
280 cyg_ucount32 timeslice_count; /* per-thread timeslice counter */
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
281 #else
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
282 # define CYG_SCHEDTHREAD_TIMESLICE_MEMBER
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
283 #endif
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
284
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
285 #ifdef CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
286 # define CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
287 cyg_bool timeslice_enabled; /* per-thread timeslice enable */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
288 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
289 # define CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
290 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
291
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
292 #if defined(CYGSEM_KERNEL_SCHED_BITMAP)
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
293 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
294 cyg_priority_t priority; /* current thread priority */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
295 #elif defined(CYGSEM_KERNEL_SCHED_MLQUEUE)
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
296 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
297 cyg_thread *next; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
298 cyg_thread *prev; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
299 cyg_priority_t priority; /* current thread priority */ \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
300 CYG_SCHEDTHREAD_CPU_MEMBER \
2348
73a01c1a35ba * src/sched/mlqueue.cxx (add_thread, yield):
nickg
parents: 771
diff changeset
301 CYG_SCHEDTHREAD_TIMESLICE_MEMBER \
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
302 CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
303 #elif defined(CYGSEM_KERNEL_SCHED_LOTTERY)
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
304 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
305 cyg_thread *next; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
306 cyg_thread *prev; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
307 cyg_priority_t priority; /* current thread priority */ \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
308 cyg_priority_t compensation_tickets; /* sleep compensation */
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
309 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
310 # error Undefined scheduler type
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311 #endif
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
312
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
313 #ifndef CYGSEM_KERNEL_SCHED_ASR_GLOBAL
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
314 # define CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
315 void (*asr)(CYG_ADDRWORD); // ASR function
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
316 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
317 # define CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
318 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
319
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
320 #ifndef CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
321 # define CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
322 CYG_ADDRWORD asr_data; // ASR data pointer
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
323 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
324 # define CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325 #endif
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
326
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
327 #ifdef CYGSEM_KERNEL_SCHED_ASR_SUPPORT
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
328 # define CYG_SCHEDTHREAD_ASR_MEMBER \
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
329 volatile cyg_ucount32 asr_inhibit; /* If true, blocks calls to ASRs */ \
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
330 volatile cyg_bool asr_pending; /* If true, this thread's ASR */ \
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
331 /* should be called. */ \
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
332 CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER \
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
333 CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
334 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
335 # define CYG_SCHEDTHREAD_ASR_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
336 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
337
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
338 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_SIMPLE
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
339 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_SIMPLE_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
340 cyg_priority_t original_priority; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
341 cyg_bool priority_inherited;
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
342 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
343 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_SIMPLE_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
344 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
345
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
346 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
347 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
348 cyg_count32 mutex_count; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
349 CYG_SCHEDTHREAD_MUTEX_INV_PROTO_SIMPLE_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
350 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
351 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
352 #endif
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
353
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
354 #define CYG_SCHEDTHREAD_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
355 CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
356 cyg_threadqueue *queue; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
357 CYG_SCHEDTHREAD_ASR_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
358 CYG_SCHEDTHREAD_MUTEX_INV_PROTO_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
359
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 typedef struct
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 {
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
363 CYG_SCHEDTHREAD_MEMBERS
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
364 } cyg_schedthread;
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365
771
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
366 /* This compiler version test is required because the C++ ABI changed in
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
367 GCC v3.x and GCC could now reuse "spare" space from base classes in derived
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
368 classes, and in C++ land, cyg_alarm is a base class of cyg_threadtimer.
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
369 */
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
370 #if defined(__GNUC__) && (__GNUC__ < 3)
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
371 #define CYG_THREADTIMER_MEMBERS \
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
372 cyg_alarm alarm; \
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
373 cyg_thread *thread;
771
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
374 #else
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
375 #define CYG_THREADTIMER_MEMBERS \
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
376 CYG_ALARM_MEMBERS \
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
377 cyg_thread *thread;
710133d0d4c0 * include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents: 263
diff changeset
378 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
380 /*---------------------------------------------------------------------------*/
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
381 /* Thread structure */
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 typedef struct
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384 {
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
385 CYG_THREADTIMER_MEMBERS
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386 } cyg_threadtimer;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
389 typedef enum
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
390 {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
391 CYG_REASON_NONE,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
392 CYG_REASON_WAIT,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
393 CYG_REASON_DELAY,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
394 CYG_REASON_TIMEOUT,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
395 CYG_REASON_BREAK,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
396 CYG_REASON_DESTRUCT,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
397 CYG_REASON_EXIT,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
398 CYG_REASON_DONE
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
399 } cyg_reason_t;
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 #if defined(CYGPKG_KERNEL_EXCEPTIONS) && !defined(CYGSEM_KERNEL_EXCEPTIONS_GLOBAL)
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
402 # define CYG_THREAD_EXCEPTION_CONTROL_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 cyg_exception_control exception_control;
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
404 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
405 # define CYG_THREAD_EXCEPTION_CONTROL_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408 #ifdef CYGFUN_KERNEL_THREADS_TIMER
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
409 # define CYG_THREAD_TIMER_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410 cyg_threadtimer timer;
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
411 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
412 # define CYG_THREAD_TIMER_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415 #ifdef CYGVAR_KERNEL_THREADS_DATA
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
416 # define CYG_THREAD_THREAD_DATA_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 CYG_ADDRWORD thread_data[CYGNUM_KERNEL_THREADS_DATA_MAX];
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
418 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
419 # define CYG_THREAD_THREAD_DATA_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
420 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
421
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
422 #ifdef CYGVAR_KERNEL_THREADS_NAME
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
423 # define CYG_THREAD_NAME_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
424 char *name;
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
425 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
426 # define CYG_THREAD_NAME_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
427 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
428
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
429 #ifdef CYGVAR_KERNEL_THREADS_LIST
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
430 # define CYG_THREAD_LIST_NEXT_MEMBER \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431 cyg_thread *list_next;
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
432 #else
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
433 # define CYG_THREAD_LIST_NEXT_MEMBER
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
434 #endif
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
435
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
436
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
437
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
438 #ifdef CYGSEM_KERNEL_THREADS_DESTRUCTORS_PER_THREAD
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
439 struct Cyg_Destructor_Entry {
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
440 cyg_thread_destructor_fn fn;
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
441 cyg_addrword_t data;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
442 };
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
443 # define CYG_THREAD_DESTRUCTORS_MEMBER \
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
444 struct Cyg_Destructor_Entry destructors[ CYGNUM_KERNEL_THREADS_DESTRUCTORS ];
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
445 #else
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
446 # define CYG_THREAD_DESTRUCTORS_MEMBER
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
447 #endif
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
448
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
449
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
450 #define CYG_THREAD_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
451 CYG_HARDWARETHREAD_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
452 CYG_SCHEDTHREAD_MEMBERS \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
453 \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
454 cyg_uint32 state; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
455 cyg_ucount32 suspend_count; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
456 cyg_ucount32 wakeup_count; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
457 CYG_ADDRWORD wait_info; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
458 cyg_uint16 unique_id; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
459 \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
460 CYG_THREAD_EXCEPTION_CONTROL_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
461 CYG_THREAD_TIMER_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
462 \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
463 cyg_reason_t sleep_reason; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
464 cyg_reason_t wake_reason; \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
465 \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
466 CYG_THREAD_THREAD_DATA_MEMBER \
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
467 CYG_THREAD_DESTRUCTORS_MEMBER \
181
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
468 CYG_THREAD_NAME_MEMBER \
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
469 CYG_THREAD_LIST_NEXT_MEMBER
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
470
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
471
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
472 struct cyg_thread
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
473 {
d61da071934c Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents: 177
diff changeset
474 CYG_THREAD_MEMBERS
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
475 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
476
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
477 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
478
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
479 struct cyg_mbox
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
480 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
481 cyg_count32 base; /* index of first used slot */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
482 cyg_count32 count; /* count of used slots */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
483 cyg_threadqueue get_threadq; /* Queue of waiting threads */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
484 #ifdef CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
485 cyg_threadqueue put_threadq; /* Queue of waiting threads */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
486 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
487 void * itemqueue[ CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE ];
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
488 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
489
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
490 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
491
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
492 struct cyg_sem_t
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
493 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
494 cyg_count32 count; /* The semaphore count */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
495 cyg_threadqueue queue; /* Queue of waiting threads */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
496 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
497
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
498 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
499
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
500 struct cyg_flag_t
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
501 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
502 cyg_flag_value_t value; /* The flag value */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
503 cyg_threadqueue queue; /* Queue of waiting threads */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
504 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
505
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
506 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
507
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
508 typedef enum
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
509 {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
510 CYG_MUTEX_PROTOCOL_NONE,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
511 CYG_MUTEX_PROTOCOL_INHERIT,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
512 CYG_MUTEX_PROTOCOL_CEILING
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
513 } cyg_mutex_protocol_t;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
514
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
515 struct cyg_mutex_t
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
516 {
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
517 cyg_atomic locked; /* true if locked */
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
518 cyg_thread *owner; /* Current locking thread */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
519 cyg_threadqueue queue; /* Queue of waiting threads */
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
520
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
521 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 182
diff changeset
522 cyg_mutex_protocol_t protocol; /* this mutex's protocol */
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
523 #endif
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
524 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
525 cyg_priority_t ceiling; /* mutex priority ceiling */
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
526 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
527
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
528 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
529
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
530 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
531
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
532 struct cyg_cond_t
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
533 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
534 cyg_mutex_t *mutex; /* Associated mutex */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
535 cyg_threadqueue queue; /* Queue of waiting threads */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
536 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
537
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
538 /*------------------------------------------------------------------------*/
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
539
177
4c750ce71ae3 Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents: 148
diff changeset
540 struct cyg_spinlock_t
4c750ce71ae3 Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents: 148
diff changeset
541 {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 181
diff changeset
542 cyg_uint32 lock; /* lock word */
177
4c750ce71ae3 Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents: 148
diff changeset
543 };
4c750ce71ae3 Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents: 148
diff changeset
544
4c750ce71ae3 Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents: 148
diff changeset
545 /*------------------------------------------------------------------------*/
4c750ce71ae3 Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents: 148
diff changeset
546
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
547 /* Memory allocator types now come from the "memalloc" package which is */
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 66
diff changeset
548 /* where the implementation lives. */
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
549
263
c0d53837cb68 Allow configurations which have the kernel but not the memalloc
bartv
parents: 210
diff changeset
550 #ifdef CYGPKG_MEMALLOC
c0d53837cb68 Allow configurations which have the kernel but not the memalloc
bartv
parents: 210
diff changeset
551 # include <cyg/memalloc/kapidata.h>
c0d53837cb68 Allow configurations which have the kernel but not the memalloc
bartv
parents: 210
diff changeset
552 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
553
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
554 #ifdef __cplusplus
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
555 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
556 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
557
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
558 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
559 /* EOF kapidata.h */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
560 #endif /* CYGONCE_KERNEL_KAPIDATA_H */