Changeset b1a4300 for src/libcfa/concurrency/preemption.c
- Timestamp:
- May 17, 2018, 3:25:12 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, with_gc
- Children:
- a83ffa4
- Parents:
- e9a7e90b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/concurrency/preemption.c
re9a7e90b rb1a4300 91 91 //Loop throught every thing expired 92 92 while( node = get_expired( alarms, currtime ) ) { 93 // __cfaabi_dbg_print_buffer_decl( " KERNEL: preemption tick.\n" ); 93 94 94 95 // Check if this is a kernel … … 103 104 Duration period = node->period; 104 105 if( period > 0 ) { 106 // __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv ); 105 107 node->alarm = currtime + period; // Alarm is periodic, add currtime to it (used cached current time) 106 108 insert( alarms, node ); // Reinsert the node for the next time it triggers … … 112 114 113 115 // If there are still alarms pending, reset the timer 114 if( alarms->head ) { __kernel_set_timer( alarms->head->alarm - currtime ); } 116 if( alarms->head ) { 117 __cfaabi_dbg_print_buffer_decl( " KERNEL: @%lu(%lu) resetting alarm to %lu.\n", currtime.tv, __kernel_get_time().tv, (alarms->head->alarm - currtime).tv); 118 Duration delta = alarms->head->alarm - currtime; 119 Duration caped = max(delta, 50`us); 120 // itimerval tim = { caped }; 121 // __cfaabi_dbg_print_buffer_local( " Values are %lu, %lu, %lu %lu.\n", delta.tv, caped.tv, tim.it_value.tv_sec, tim.it_value.tv_usec); 122 123 __kernel_set_timer( caped ); 124 } 115 125 } 116 126 … … 335 345 if( !preemption_ready() ) { return; } 336 346 337 __cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p ).\n", kernelTLS.this_processor, kernelTLS.this_thread);347 __cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p @ %p).\n", kernelTLS.this_processor, kernelTLS.this_thread, (void *)(cxt->uc_mcontext.CFA_REG_IP) ); 338 348 339 349 // Sync flag : prevent recursive calls to the signal handler … … 377 387 case EAGAIN : 378 388 case EINTR : 389 {__cfaabi_dbg_print_buffer_decl( " KERNEL: Spurious wakeup %d.\n", err );} 379 390 continue; 380 391 case EINVAL :
Note: See TracChangeset
for help on using the changeset viewer.