Changes in src/libcfa/concurrency/alarm.c [8cb529e:e60e0dc]
- File:
-
- 1 edited
-
src/libcfa/concurrency/alarm.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/concurrency/alarm.c
r8cb529e re60e0dc 153 153 154 154 void register_self( alarm_node_t * this ) { 155 alarm_list_t * alarms = &event_kernel->alarms; 156 155 157 disable_interrupts(); 156 verify( !systemProcessor->pending_alarm ); 157 lock( &systemProcessor->alarm_lock DEBUG_CTX2 ); 158 lock( &event_kernel->lock DEBUG_CTX2 ); 158 159 { 159 verify( validate( &systemProcessor->alarms ) );160 bool first = ! systemProcessor->alarms.head;160 verify( validate( alarms ) ); 161 bool first = !alarms->head; 161 162 162 insert( &systemProcessor->alarms, this ); 163 if( systemProcessor->pending_alarm ) { 164 tick_preemption(); 165 } 163 insert( alarms, this ); 166 164 if( first ) { 167 __kernel_set_timer( systemProcessor->alarms.head->alarm - __kernel_get_time() );165 __kernel_set_timer( alarms->head->alarm - __kernel_get_time() ); 168 166 } 169 167 } 170 unlock( & systemProcessor->alarm_lock );168 unlock( &event_kernel->lock ); 171 169 this->set = true; 172 170 enable_interrupts( DEBUG_CTX ); … … 174 172 175 173 void unregister_self( alarm_node_t * this ) { 176 // LIB_DEBUG_PRINT_BUFFER_DECL( STDERR_FILENO, "Kernel : unregister %p start\n", this );177 174 disable_interrupts(); 178 lock( & systemProcessor->alarm_lock DEBUG_CTX2 );175 lock( &event_kernel->lock DEBUG_CTX2 ); 179 176 { 180 verify( validate( & systemProcessor->alarms ) );181 remove( & systemProcessor->alarms, this );177 verify( validate( &event_kernel->alarms ) ); 178 remove( &event_kernel->alarms, this ); 182 179 } 183 unlock( & systemProcessor->alarm_lock );180 unlock( &event_kernel->lock ); 184 181 enable_interrupts( DEBUG_CTX ); 185 182 this->set = false; 186 // LIB_DEBUG_PRINT_BUFFER_LOCAL( STDERR_FILENO, "Kernel : unregister %p end\n", this );187 183 }
Note:
See TracChangeset
for help on using the changeset viewer.