Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/preemption.cfa

    r357fae8 r6047b00  
    1515
    1616#define __cforall_thread__
    17 // #define __CFA_DEBUG_PRINT_PREEMPTION__
    1817
    1918#include "preemption.hfa"
     
    2928#include "kernel_private.hfa"
    3029
    31 
    3230#if !defined(__CFA_DEFAULT_PREEMPTION__)
    3331#define __CFA_DEFAULT_PREEMPTION__ 10`ms
    3432#endif
    3533
    36 __attribute__((weak)) Duration default_preemption() {
    37         const char * preempt_rate_s = getenv("CFA_DEFAULT_PREEMPTION");
    38         if(!preempt_rate_s) {
    39                 __cfadbg_print_safe(preemption, "No CFA_DEFAULT_PREEMPTION in ENV\n");
    40                 return __CFA_DEFAULT_PREEMPTION__;
    41         }
    42 
    43         char * endptr = 0p;
    44         long int preempt_rate_l = strtol(preempt_rate_s, &endptr, 10);
    45         if(preempt_rate_l < 0 || preempt_rate_l > 65535) {
    46                 __cfadbg_print_safe(preemption, "CFA_DEFAULT_PREEMPTION out of range : %ld\n", preempt_rate_l);
    47                 return __CFA_DEFAULT_PREEMPTION__;
    48         }
    49         if('\0' != *endptr) {
    50                 __cfadbg_print_safe(preemption, "CFA_DEFAULT_PREEMPTION not a decimal number : %s\n", preempt_rate_s);
    51                 return __CFA_DEFAULT_PREEMPTION__;
    52         }
    53 
    54         return preempt_rate_l`ms;
     34Duration default_preemption() __attribute__((weak)) {
     35        return __CFA_DEFAULT_PREEMPTION__;
    5536}
    5637
     
    144125        // If there are still alarms pending, reset the timer
    145126        if( & (*alarms)`first ) {
     127                __cfadbg_print_buffer_decl(preemption, " KERNEL: @%ju(%ju) resetting alarm to %ju.\n", currtime.tv, __kernel_get_time().tv, (alarms->head->alarm - currtime).tv);
    146128                Duration delta = (*alarms)`first.alarm - currtime;
    147129                Duration capped = max(delta, 50`us);
     130                // itimerval tim  = { caped };
     131                // __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);
     132
    148133                __kernel_set_timer( capped );
    149134        }
Note: See TracChangeset for help on using the changeset viewer.