Changes in src/libcfa/concurrency/alarm.c [8ad6533:b69ea6b]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/concurrency/alarm.c
r8ad6533 rb69ea6b 10 10 // Created On : Fri Jun 2 11:31:25 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Apr 9 13:36:18 201813 // Update Count : 6112 // Last Modified On : Fri Jul 21 22:35:18 2017 13 // Update Count : 1 14 14 // 15 15 … … 26 26 #include "preemption.h" 27 27 28 29 static inline void ?{}( itimerval & this, __cfa_time_t * alarm ) with( this ) { 30 it_value.tv_sec = alarm->val / (1`cfa_s).val; // seconds 31 it_value.tv_usec = max( (alarm->val % (1`cfa_s).val) / (1`cfa_us).val, 1000 ); // microseconds 32 it_interval.tv_sec = 0; 33 it_interval.tv_usec = 0; 34 } 35 36 static inline void ?{}( __cfa_time_t & this, timespec * curr ) { 37 uint64_t secs = curr->tv_sec; 38 uint64_t nsecs = curr->tv_nsec; 39 this.val = from_s(secs).val + nsecs; 40 } 41 28 42 //============================================================================================= 29 43 // Clock logic 30 44 //============================================================================================= 31 45 32 Time__kernel_get_time() {46 __cfa_time_t __kernel_get_time() { 33 47 timespec curr; 34 clock_gettime( CLOCK_ MONOTONIC_RAW, &curr ); // CLOCK_REALTIME35 return ( Time){curr };48 clock_gettime( CLOCK_REALTIME, &curr ); 49 return (__cfa_time_t){ &curr }; 36 50 } 37 51 38 void __kernel_set_timer( Duration alarm ) { 39 setitimer( ITIMER_REAL, &(itimerval){ alarm }, NULL ); 52 void __kernel_set_timer( __cfa_time_t alarm ) { 53 itimerval val = { &alarm }; 54 setitimer( ITIMER_REAL, &val, NULL ); 40 55 } 41 56 … … 44 59 //============================================================================================= 45 60 46 void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period) with( this ) {61 void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s ) with( this ) { 47 62 this.thrd = thrd; 48 63 this.alarm = alarm; … … 53 68 } 54 69 55 void ?{}( alarm_node_t & this, processor * proc, Time alarm, Duration period) with( this ) {70 void ?{}( alarm_node_t & this, processor * proc, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s ) with( this ) { 56 71 this.proc = proc; 57 72 this.alarm = alarm;
Note:
See TracChangeset
for help on using the changeset viewer.