Changeset eef8dfb for libcfa/src/concurrency/alarm.hfa
- Timestamp:
- Jan 7, 2021, 2:55:57 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 58fe85a
- Parents:
- bdfc032 (diff), 44e37ef (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/alarm.hfa
rbdfc032 reef8dfb 23 23 #include "time.hfa" 24 24 25 struct thread_desc; 25 #include "containers/list.hfa" 26 27 struct $thread; 26 28 struct processor; 27 29 … … 37 39 //============================================================================================= 38 40 41 enum alarm_type{ Kernel = 0, User = 1, Callback = 2 }; 42 43 struct alarm_node_t; 44 45 typedef void (*Alarm_Callback)(alarm_node_t & ); 46 39 47 struct alarm_node_t { 40 48 Time alarm; // time when alarm goes off 41 49 Duration period; // if > 0 => period of alarm 42 alarm_node_t * next; // intrusive link list field 50 51 DLISTED_MGD_IMPL_IN(alarm_node_t) 43 52 44 53 union { 45 thread_desc * thrd; // thrd who created event 46 processor * proc; // proc who created event 54 $thread * thrd; // thrd who created event 55 processor * proc; // proc who created event 56 Alarm_Callback callback; // callback to handle event 47 57 }; 48 58 49 59 bool set :1; // whether or not the alarm has be registered 50 bool kernel_alarm :1; // true if this is not a user defined alarm60 enum alarm_type type; // true if this is not a user defined alarm 51 61 }; 62 DLISTED_MGD_IMPL_OUT(alarm_node_t) 52 63 53 typedef alarm_node_t ** __alarm_it_t; 54 55 void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period ); 64 void ?{}( alarm_node_t & this, $thread * thrd, Time alarm, Duration period ); 56 65 void ?{}( alarm_node_t & this, processor * proc, Time alarm, Duration period ); 66 void ?{}( alarm_node_t & this, Alarm_Callback callback, Time alarm, Duration period ); 57 67 void ^?{}( alarm_node_t & this ); 58 68 59 struct alarm_list_t { 60 alarm_node_t * head; 61 __alarm_it_t tail; 62 }; 63 64 static inline void ?{}( alarm_list_t & this ) with( this ) { 65 head = 0; 66 tail = &head; 67 } 69 typedef dlist(alarm_node_t, alarm_node_t) alarm_list_t; 68 70 69 71 void insert( alarm_list_t * this, alarm_node_t * n );
Note:
See TracChangeset
for help on using the changeset viewer.