Changeset 97f65d5 for src/libcfa/concurrency/kernel
- Timestamp:
- Feb 15, 2017, 8:13:49 AM (9 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, resolv-new, with_gc
- Children:
- e6512c8
- Parents:
- aa9ee19 (diff), 3149e7e (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
-
src/libcfa/concurrency/kernel
raa9ee19 r97f65d5 9 9 // 10 10 // Author : Thierry Delisle 11 // Created On : Tue Jan 17 12:27:26 201 611 // Created On : Tue Jan 17 12:27:26 2017 12 12 // Last Modified By : Thierry Delisle 13 13 // Last Modified On : -- … … 27 27 28 28 //----------------------------------------------------------------------------- 29 // Locks 30 void lock( spinlock * ); 31 void unlock( spinlock * ); 32 33 void wait( signal_once * ); 34 void signal( signal_once * ); 35 36 //----------------------------------------------------------------------------- 29 37 // Cluster 30 38 struct cluster { 31 39 simple_thread_list ready_queue; 32 // pthread_spinlock_tlock;40 spinlock lock; 33 41 }; 34 42 … … 38 46 //----------------------------------------------------------------------------- 39 47 // Processor 40 enum ProcessorAction { 41 Reschedule, 42 NoAction 48 enum FinishOpCode { No_Action, Release, Schedule, Release_Schedule }; 49 struct FinishAction { 50 FinishOpCode action_code; 51 thread * thrd; 52 spinlock * lock; 43 53 }; 54 static inline void ?{}(FinishAction * this) { 55 this->action_code = No_Action; 56 this->thrd = NULL; 57 this->lock = NULL; 58 } 59 static inline void ^?{}(FinishAction * this) {} 44 60 45 61 struct processor { … … 49 65 thread * current_thread; 50 66 pthread_t kernel_thread; 51 simple_lock lock; 52 volatile bool terminated; 53 ProcessorAction thread_action; 67 68 signal_once terminated; 69 volatile bool is_terminated; 70 71 struct FinishAction finish; 54 72 }; 55 73 … … 57 75 void ?{}(processor * this, cluster * cltr); 58 76 void ^?{}(processor * this); 59 60 61 //-----------------------------------------------------------------------------62 // Locks63 64 void ?{}(simple_lock * this);65 void ^?{}(simple_lock * this);66 67 void lock( simple_lock * );68 void unlock( simple_lock * );69 77 70 78 #endif //KERNEL_H
Note:
See TracChangeset
for help on using the changeset viewer.