Mercurial > ecos
annotate packages/kernel/current/src/sched/bitmap.cxx @ 2935:918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
the bitmap scheduler.
* include/instrument_desc.h: Regenerate.
* src/sync/flag.cxx, src/sched/bitmap.cxx: Add instrumentation.
* cdl/instrument.cdl: Add CYGDBG_KERNEL_INSTRUMENT_FLAG and
CYGDBG_KERNEL_INSTRUMENT_BITMAP options.
| author | jld |
|---|---|
| date | Fri, 29 Jan 2010 15:06:38 +0000 |
| parents | 74dbf4c3f2e1 |
| children |
| rev | line source |
|---|---|
| 0 | 1 //========================================================================== |
| 2 // | |
| 2 | 3 // sched/bitmap.cxx |
| 0 | 4 // |
| 2 | 5 // Bitmap scheduler class implementation |
| 0 | 6 // |
| 7 //========================================================================== | |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
8 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
9 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2010 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
177
diff
changeset
|
12 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
13 // 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:
210
diff
changeset
|
14 // 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:
210
diff
changeset
|
15 // 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:
210
diff
changeset
|
16 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
177
diff
changeset
|
17 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
18 // 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:
210
diff
changeset
|
19 // 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:
210
diff
changeset
|
20 // 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:
210
diff
changeset
|
21 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
177
diff
changeset
|
22 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
23 // 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:
210
diff
changeset
|
24 // 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:
210
diff
changeset
|
25 // 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:
177
diff
changeset
|
26 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
27 // 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:
210
diff
changeset
|
28 // 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:
210
diff
changeset
|
29 // 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:
210
diff
changeset
|
30 // 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:
210
diff
changeset
|
31 // 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:
210
diff
changeset
|
32 // 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:
210
diff
changeset
|
33 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
177
diff
changeset
|
34 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
35 // 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:
210
diff
changeset
|
36 // 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:
210
diff
changeset
|
37 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
38 // ####ECOSGPLCOPYRIGHTEND#### |
| 0 | 39 //========================================================================== |
| 40 //#####DESCRIPTIONBEGIN#### | |
| 41 // | |
| 2 | 42 // Author(s): nickg |
| 43 // Contributors: nickg | |
| 44 // Date: 1997-09-16 | |
| 45 // Purpose: Bitmap scheduler class implementation | |
| 46 // Description: This file contains the implementations of | |
| 0 | 47 // Cyg_Scheduler_Implementation and Cyg_SchedThread_Implementation. |
| 48 // | |
| 49 // | |
| 50 //####DESCRIPTIONEND#### | |
| 51 // | |
| 52 //========================================================================== | |
| 53 | |
| 54 #include <pkgconf/kernel.h> | |
| 55 | |
| 56 #include <cyg/kernel/ktypes.h> // base kernel types | |
| 57 #include <cyg/infra/cyg_trac.h> // tracing macros | |
| 58 #include <cyg/infra/cyg_ass.h> // assertion macros | |
| 59 | |
| 60 #include <cyg/kernel/sched.hxx> // our header | |
| 61 | |
| 62 #include <cyg/hal/hal_arch.h> // Architecture specific definitions | |
| 63 | |
| 64 #include <cyg/kernel/thread.inl> // thread inlines | |
| 65 #include <cyg/kernel/sched.inl> // scheduler inlines | |
| 66 | |
| 67 #ifdef CYGSEM_KERNEL_SCHED_BITMAP | |
| 68 | |
| 69 //========================================================================== | |
| 70 // Cyg_Scheduler_Implementation class members | |
| 71 | |
| 72 // ------------------------------------------------------------------------- | |
| 73 // Constructor. | |
| 74 | |
| 75 Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation() | |
| 76 { | |
| 77 CYG_REPORT_FUNCTION(); | |
| 78 | |
| 79 // At present we cannot init run_queue here because the absence of | |
| 80 // ordering of static constructors means that we could do this | |
| 81 // after the static idle thread has been created. (Guess how I | |
| 82 // found this out!) | |
| 83 // run_queue = 0; | |
| 84 | |
| 85 } | |
| 86 | |
| 87 // ------------------------------------------------------------------------- | |
| 88 // Choose the best thread to run next | |
| 89 | |
| 90 Cyg_Thread *Cyg_Scheduler_Implementation::schedule() | |
| 91 { | |
| 92 CYG_REPORT_FUNCTION(); | |
| 93 | |
| 94 // The run queue may _never_ be empty, there is always | |
| 95 // an idle thread at the lowest priority. | |
| 96 | |
| 97 CYG_ASSERT(run_queue != 0, "Run queue empty"); | |
| 98 | |
| 99 cyg_uint32 index; | |
| 100 | |
| 101 HAL_LSBIT_INDEX(index, run_queue); | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
102 |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
103 CYG_INSTRUMENT_BITMAP(SCHEDULE, thread_table[index], index); |
| 0 | 104 |
| 105 return thread_table[index]; | |
| 106 } | |
| 107 | |
| 108 // ------------------------------------------------------------------------- | |
| 109 | |
| 110 void Cyg_Scheduler_Implementation::add_thread(Cyg_Thread *thread) | |
| 111 { | |
| 112 CYG_REPORT_FUNCTION(); | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
113 |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
114 CYG_INSTRUMENT_BITMAP(ADD, thread, thread->priority); |
| 0 | 115 |
|
56
755351606154
Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents:
46
diff
changeset
|
116 CYG_ASSERT((CYG_THREAD_MIN_PRIORITY >= thread->priority) |
|
755351606154
Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents:
46
diff
changeset
|
117 && (CYG_THREAD_MAX_PRIORITY <= thread->priority), |
|
755351606154
Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents:
46
diff
changeset
|
118 "Priority out of range!"); |
|
755351606154
Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents:
46
diff
changeset
|
119 |
| 0 | 120 CYG_ASSERT( thread_table[thread->priority] == NULL || |
| 121 thread_table[thread->priority] == thread, | |
| 122 "Duplicate thread priorities" ); | |
| 123 | |
| 124 CYG_ASSERT( (run_queue & (1<<thread->priority)) == 0, | |
| 125 "Run queue bit already set" ); | |
| 126 | |
| 127 // If the thread is on some other queue, remove it | |
| 128 // here. | |
| 129 if( thread->queue != NULL ) | |
| 130 { | |
| 131 thread->queue->remove(thread); | |
| 132 thread->queue = NULL; | |
| 133 } | |
| 134 | |
| 135 run_queue |= 1<<thread->priority; | |
| 136 | |
| 137 // If the new thread is higher priority than the | |
| 138 // current thread, request a reschedule. | |
| 139 | |
| 140 if( thread->priority < Cyg_Scheduler::get_current_thread()->priority ) | |
|
177
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
141 set_need_reschedule(); |
| 0 | 142 } |
| 143 | |
| 144 // ------------------------------------------------------------------------- | |
| 145 | |
| 146 void Cyg_Scheduler_Implementation::rem_thread(Cyg_Thread *thread) | |
| 147 { | |
| 148 CYG_REPORT_FUNCTION(); | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
149 |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
150 CYG_INSTRUMENT_BITMAP(REM, thread, thread->priority); |
| 0 | 151 |
| 152 CYG_ASSERT( thread_table[thread->priority] == thread, | |
| 153 "Invalid thread priority" ); | |
| 154 | |
| 155 CYG_ASSERT( (run_queue & (1<<thread->priority)) != 0, | |
| 156 "Run queue bit not set" ); | |
| 157 | |
| 158 run_queue &= ~(1<<thread->priority); | |
|
177
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
159 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
160 if( thread == Cyg_Scheduler::get_current_thread() ) |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
161 set_need_reschedule(); |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
162 } |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
163 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
164 // ------------------------------------------------------------------------- |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
165 // Set up initial idle thread |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
166 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
167 void Cyg_Scheduler_Implementation::set_idle_thread( Cyg_Thread *thread, HAL_SMP_CPU_TYPE cpu ) |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
168 { |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
169 CYG_REPORT_FUNCTION(); |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
170 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
171 // Make the thread the current thread for this CPU. |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
172 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
173 current_thread[cpu] = thread; |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
174 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
175 // This will insert the thread in the run queues and make it |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
176 // available to execute. |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
160
diff
changeset
|
177 thread->resume(); |
| 0 | 178 } |
| 179 | |
| 180 // ------------------------------------------------------------------------- | |
| 181 // register thread with scheduler | |
| 182 | |
| 183 void Cyg_Scheduler_Implementation::register_thread(Cyg_Thread *thread) | |
| 184 { | |
| 185 CYG_REPORT_FUNCTION(); | |
| 186 | |
| 187 thread_table[thread->priority] = thread; | |
| 188 } | |
| 189 | |
| 190 // ------------------------------------------------------------------------- | |
| 191 | |
| 192 // deregister thread | |
| 193 void Cyg_Scheduler_Implementation::deregister_thread(Cyg_Thread *thread) | |
| 194 { | |
| 195 CYG_REPORT_FUNCTION(); | |
| 196 | |
| 197 thread_table[thread->priority] = NULL; | |
| 198 } | |
| 199 | |
| 200 // ------------------------------------------------------------------------- | |
| 201 // Test the given priority for uniqueness | |
| 202 | |
| 203 cyg_bool Cyg_Scheduler_Implementation::unique( cyg_priority priority) | |
| 204 { | |
| 205 CYG_REPORT_FUNCTION(); | |
| 206 | |
| 207 return thread_table[priority] == NULL; | |
| 208 } | |
| 209 | |
| 210 | |
| 211 //========================================================================== | |
| 212 // Cyg_Cyg_SchedThread_Implementation class members | |
| 213 | |
| 214 Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation | |
| 215 ( | |
| 216 CYG_ADDRWORD sched_info | |
| 217 ) | |
| 218 { | |
| 219 CYG_REPORT_FUNCTION(); | |
| 220 | |
| 221 #if 1 | |
| 222 // Assign this thread's priority to the supplied sched_info | |
| 223 // or the next highest priority available. | |
| 224 | |
| 225 priority = cyg_priority(sched_info); | |
| 226 | |
| 227 while( !Cyg_Scheduler::scheduler.unique(priority) ) | |
| 228 priority++; | |
| 229 | |
| 230 #else | |
| 231 // Assign initial priorities to threads in descending order of | |
| 232 // creation. | |
| 233 | |
| 234 static cyg_priority init_priority = 0; | |
| 235 | |
| 236 priority = init_priority++; | |
| 237 #endif | |
| 238 | |
| 239 } | |
| 240 | |
| 241 // ------------------------------------------------------------------------- | |
| 242 | |
| 243 void Cyg_SchedThread_Implementation::yield() | |
| 244 { | |
| 245 CYG_REPORT_FUNCTION(); | |
| 246 | |
| 247 // We cannot yield in this scheduler | |
| 248 } | |
| 249 | |
| 250 //========================================================================== | |
| 251 // Cyg_ThreadQueue_Implementation class members | |
| 252 | |
| 253 Cyg_ThreadQueue_Implementation::Cyg_ThreadQueue_Implementation() | |
| 254 { | |
| 255 CYG_REPORT_FUNCTION(); | |
| 256 | |
| 257 wait_queue = 0; // empty queue | |
| 2 | 258 |
| 259 CYG_REPORT_RETURN(); | |
| 0 | 260 } |
| 261 | |
| 262 | |
| 263 void Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread *thread) | |
| 264 { | |
| 265 CYG_REPORT_FUNCTION(); | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
266 |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
267 CYG_INSTRUMENT_BITMAP(ENQUEUE, this, thread); |
| 0 | 268 |
| 269 wait_queue |= 1<<thread->priority; | |
| 270 thread->queue = CYG_CLASSFROMBASE(Cyg_ThreadQueue, | |
| 271 Cyg_ThreadQueue_Implementation, | |
| 272 this); | |
| 273 } | |
| 274 | |
| 275 // ------------------------------------------------------------------------- | |
| 276 | |
| 277 Cyg_Thread *Cyg_ThreadQueue_Implementation::dequeue() | |
| 278 { | |
| 279 CYG_REPORT_FUNCTION(); | |
| 280 | |
| 281 // Isolate ls bit in run_queue. | |
| 282 cyg_sched_bitmap next_thread = wait_queue & -wait_queue; | |
| 283 | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
284 if( next_thread == 0 ) |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
285 { |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
286 CYG_INSTRUMENT_BITMAP(DEQUEUE, this, NULL); |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
287 return NULL; |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
288 } |
| 0 | 289 |
| 290 wait_queue &= ~next_thread; | |
| 291 | |
| 292 cyg_uint32 index; | |
| 293 | |
| 294 HAL_LSBIT_INDEX(index, next_thread); | |
| 295 | |
| 296 Cyg_Thread *thread = Cyg_Scheduler::scheduler.thread_table[index]; | |
| 297 | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
298 CYG_INSTRUMENT_BITMAP(DEQUEUE, this, thread); |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
299 |
| 0 | 300 thread->queue = NULL; |
| 301 | |
| 302 return thread; | |
| 303 } | |
| 304 | |
| 305 // ------------------------------------------------------------------------- | |
| 306 | |
| 307 Cyg_Thread *Cyg_ThreadQueue_Implementation::highpri() | |
| 308 { | |
| 309 CYG_REPORT_FUNCTION(); | |
| 310 | |
| 311 // Isolate ls bit in run_queue. | |
| 312 cyg_sched_bitmap next_thread = wait_queue & -wait_queue; | |
| 313 | |
| 314 if( next_thread == 0 ) return NULL; | |
| 315 | |
| 316 cyg_uint32 index; | |
| 317 | |
| 318 HAL_LSBIT_INDEX(index, next_thread); | |
| 319 | |
| 320 return Cyg_Scheduler::scheduler.thread_table[index]; | |
| 321 } | |
| 322 | |
| 323 // ------------------------------------------------------------------------- | |
| 324 | |
| 325 void Cyg_ThreadQueue_Implementation::remove(Cyg_Thread *thread) | |
| 326 { | |
| 327 CYG_REPORT_FUNCTION(); | |
|
2935
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
328 |
|
918ae79235a2
* include/instrmnt.h: Add instrumentation macros for event flags and
jld
parents:
2729
diff
changeset
|
329 CYG_INSTRUMENT_BITMAP(REMOVE, this, thread); |
| 0 | 330 |
| 331 wait_queue &= ~(1<<thread->priority); | |
| 332 thread->queue = NULL; | |
| 333 } | |
| 334 | |
| 335 #endif | |
| 336 | |
| 337 // ------------------------------------------------------------------------- | |
| 338 // EOF sched/bitmap.cxx |
