Changeset e709aa85 in rtems
- Timestamp:
- 07/13/15 11:49:35 (9 years ago)
- Branches:
- 5, master
- Children:
- 19078dc6
- Parents:
- d7665823
- git-author:
- Sebastian Huber <sebastian.huber@…> (07/13/15 11:49:35)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (07/23/15 06:01:14)
- Location:
- cpukit/score
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/score/include/rtems/score/threadqimpl.h
rd7665823 re709aa85 215 215 * @param[in] operations The thread queue operations. 216 216 * @param[in] the_thread The thread to extract. 217 */ 218 void _Thread_queue_Extract_locked( 217 * 218 * @return Returns the unblock indicator for _Thread_queue_Unblock_critical(). 219 * True indicates, that this thread must be unblocked by the scheduler later in 220 * _Thread_queue_Unblock_critical(), and false otherwise. In case false is 221 * returned, then the thread queue enqueue procedure was interrupted. Thus it 222 * will unblock itself and the thread wait information is no longer accessible, 223 * since this thread may already block on another resource in an SMP 224 * configuration. 225 */ 226 bool _Thread_queue_Extract_locked( 219 227 Thread_queue_Queue *queue, 220 228 const Thread_queue_Operations *operations, … … 230 238 * dispatching is enabled once the sequence to unblock the thread is complete. 231 239 * 240 * @param[in] unblock The unblock indicator returned by 241 * _Thread_queue_Extract_locked(). 232 242 * @param[in] queue The actual thread queue. 233 243 * @param[in] the_thread The thread to extract. … … 235 245 */ 236 246 void _Thread_queue_Unblock_critical( 247 bool unblock, 237 248 Thread_queue_Queue *queue, 238 249 Thread_Control *the_thread, -
cpukit/score/src/coremutexsurrender.c
rd7665823 re709aa85 180 180 */ 181 181 if ( ( the_thread = _Thread_queue_First_locked( &the_mutex->Wait_queue ) ) ) { 182 bool unblock; 183 182 184 /* 183 185 * We must extract the thread now since this will restore its default … … 186 188 * acquire. 187 189 */ 188 _Thread_queue_Extract_locked(190 unblock = _Thread_queue_Extract_locked( 189 191 &the_mutex->Wait_queue.Queue, 190 192 the_mutex->Wait_queue.operations, … … 221 223 222 224 _Thread_queue_Unblock_critical( 225 unblock, 223 226 &the_mutex->Wait_queue.Queue, 224 227 the_thread, -
cpukit/score/src/threadqenqueue.c
rd7665823 re709aa85 101 101 } 102 102 103 void_Thread_queue_Extract_locked(103 bool _Thread_queue_Extract_locked( 104 104 Thread_queue_Queue *queue, 105 105 const Thread_queue_Operations *operations, … … 107 107 ) 108 108 { 109 bool success; 110 bool unblock; 111 109 112 ( *operations->extract )( queue, the_thread ); 110 113 … … 112 115 _Thread_Wait_restore_default_operations( the_thread ); 113 116 _Thread_Lock_restore_default( the_thread ); 114 }115 116 void _Thread_queue_Unblock_critical(117 Thread_queue_Queue *queue,118 Thread_Control *the_thread,119 ISR_lock_Context *lock_context120 )121 {122 bool success;123 bool unblock;124 117 125 118 success = _Thread_Wait_flags_try_change_critical( … … 136 129 } 137 130 131 return unblock; 132 } 133 134 void _Thread_queue_Unblock_critical( 135 bool unblock, 136 Thread_queue_Queue *queue, 137 Thread_Control *the_thread, 138 ISR_lock_Context *lock_context 139 ) 140 { 138 141 if ( unblock ) { 139 142 Per_CPU_Control *cpu_self; … … 157 160 ) 158 161 { 159 _Thread_queue_Extract_locked( queue, operations, the_thread ); 160 _Thread_queue_Unblock_critical( queue, the_thread, lock_context ); 162 bool unblock; 163 164 unblock = _Thread_queue_Extract_locked( queue, operations, the_thread ); 165 _Thread_queue_Unblock_critical( unblock, queue, the_thread, lock_context ); 161 166 } 162 167
Note: See TracChangeset
for help on using the changeset viewer.