Changeset badd22f for libcfa/src/concurrency
- Timestamp:
- Aug 13, 2020, 9:09:32 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 4c925cd, 6553828
- Parents:
- 67bfc50 (diff), 62502cc4 (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. - Location:
- libcfa/src/concurrency
- Files:
-
- 3 edited
-
invoke.h (modified) (3 diffs)
-
kernel/startup.cfa (modified) (2 diffs)
-
ready_queue.cfa (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/invoke.h
r67bfc50 rbadd22f 26 26 #ifndef _INVOKE_H_ 27 27 #define _INVOKE_H_ 28 29 struct __cfaehm_try_resume_node; 30 struct __cfaehm_base_exception_t; 31 struct exception_context_t { 32 struct __cfaehm_try_resume_node * top_resume; 33 struct __cfaehm_base_exception_t * current_exception; 34 }; 28 35 29 36 struct __stack_context_t { … … 51 58 // base of stack 52 59 void * base; 60 61 // Information for exception handling. 62 struct exception_context_t exception_context; 53 63 }; 54 64 … … 84 94 }; 85 95 86 static inline struct __stack_t * __get_stack( struct $coroutine * cor ) { return (struct __stack_t*)(((uintptr_t)cor->stack.storage) & ((uintptr_t)-2)); } 96 static inline struct __stack_t * __get_stack( struct $coroutine * cor ) { 97 return (struct __stack_t*)(((uintptr_t)cor->stack.storage) & ((uintptr_t)-2)); 98 } 87 99 88 100 // struct which calls the monitor is accepting -
libcfa/src/concurrency/kernel/startup.cfa
r67bfc50 rbadd22f 516 516 ( this.terminated ){ 0 }; 517 517 ( this.runner ){}; 518 init( this, name, _cltr ); 518 519 disable_interrupts(); 520 init( this, name, _cltr ); 521 enable_interrupts( __cfaabi_dbg_ctx ); 519 522 520 523 __cfadbg_print_safe(runtime_core, "Kernel : Starting core %p\n", &this); … … 540 543 free( this.stack ); 541 544 542 deinit( this ); 545 disable_interrupts(); 546 deinit( this ); 547 enable_interrupts( __cfaabi_dbg_ctx ); 543 548 } 544 549 -
libcfa/src/concurrency/ready_queue.cfa
r67bfc50 rbadd22f 150 150 // queues or removing them. 151 151 uint_fast32_t ready_mutate_lock( void ) with(*__scheduler_lock) { 152 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); 153 152 154 // Step 1 : lock global lock 153 155 // It is needed to avoid processors that register mid Critical-Section … … 164 166 } 165 167 168 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); 166 169 return s; 167 170 } 168 171 169 172 void ready_mutate_unlock( uint_fast32_t last_s ) with(*__scheduler_lock) { 173 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); 174 170 175 // Step 1 : release local locks 171 176 // This must be done while the global lock is held to avoid … … 182 187 /*paranoid*/ assert(true == lock); 183 188 __atomic_store_n(&lock, (bool)false, __ATOMIC_RELEASE); 189 190 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); 184 191 } 185 192
Note:
See TracChangeset
for help on using the changeset viewer.