Changeset 08e8851 for libcfa/src
- Timestamp:
- Sep 29, 2020, 1:51:01 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:
- 1526e86, 87b9332, 9dc3eb21
- Parents:
- 2ff78aae (diff), d13dd6b (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
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/Makefile.am
r2ff78aae r08e8851 88 88 inst_thread_headers_nosrc = \ 89 89 bits/random.hfa \ 90 concurrency/clib/cfathread.h \ 90 91 concurrency/invoke.h \ 91 92 concurrency/kernel/fwd.hfa … … 103 104 concurrency/alarm.cfa \ 104 105 concurrency/alarm.hfa \ 106 concurrency/clib/cfathread.cfa \ 105 107 concurrency/CtxSwitch-@ARCHITECTURE@.S \ 106 108 concurrency/invoke.c \ -
libcfa/src/concurrency/io/setup.cfa
r2ff78aae r08e8851 147 147 static void * iopoll_loop( __attribute__((unused)) void * args ) { 148 148 __processor_id_t id; 149 id.full_proc = false; 149 150 id.id = doregister(&id); 150 151 __cfaabi_dbg_print_safe( "Kernel : IO poller thread starting\n" ); -
libcfa/src/concurrency/kernel.cfa
r2ff78aae r08e8851 237 237 $coroutine * proc_cor = get_coroutine(this->runner); 238 238 239 // Update global state240 kernelTLS.this_thread = thrd_dst;241 242 239 // set state of processor coroutine to inactive 243 240 verify(proc_cor->state == Active); … … 253 250 thrd_dst->unpark_stale = true; 254 251 ) 252 // Update global state 253 kernelTLS.this_thread = thrd_dst; 255 254 256 255 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); … … 259 258 /* paranoid */ verifyf( ((uintptr_t)thrd_dst->context.SP) > ((uintptr_t)__get_stack(thrd_dst->curr_cor)->limit) || thrd_dst->curr_cor == proc_cor, "ERROR : Destination $thread %p has been corrupted.\n StackPointer too large.\n", thrd_dst ); // add escape condition if we are setting up the processor 260 259 260 261 261 // set context switch to the thread that the processor is executing 262 262 verify( thrd_dst->context.SP ); … … 269 269 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); 270 270 271 // Reset global state 272 kernelTLS.this_thread = 0p; 271 273 272 274 // We just finished running a thread, there are a few things that could have happened. … … 313 315 // Just before returning to the processor, set the processor coroutine to active 314 316 proc_cor->state = Active; 315 kernelTLS.this_thread = 0p;316 317 317 318 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); … … 521 522 disable_interrupts(); 522 523 /* paranoid */ verify( ! kernelTLS.preemption_state.enabled ); 523 bool ret =post( this->idle );524 post( this->idle ); 524 525 enable_interrupts( __cfaabi_dbg_ctx ); 525 526 } -
libcfa/src/concurrency/kernel.hfa
r2ff78aae r08e8851 48 48 // Processor id, required for scheduling threads 49 49 struct __processor_id_t { 50 unsigned id; 50 unsigned id:24; 51 bool full_proc:1; 51 52 52 53 #if !defined(__CFA_NO_STATISTICS__) -
libcfa/src/concurrency/kernel/startup.cfa
r2ff78aae r08e8851 470 470 this.name = name; 471 471 this.cltr = &_cltr; 472 id = -1u;472 full_proc = true; 473 473 destroyer = 0p; 474 474 do_terminate = false; -
libcfa/src/concurrency/preemption.cfa
r2ff78aae r08e8851 411 411 static void * alarm_loop( __attribute__((unused)) void * args ) { 412 412 __processor_id_t id; 413 id.full_proc = false; 413 414 id.id = doregister(&id); 414 415 -
libcfa/src/parseargs.cfa
r2ff78aae r08e8851 25 25 #include "limits.hfa" 26 26 27 extern int cfa_args_argc ;28 extern char ** cfa_args_argv ;29 extern char ** cfa_args_envp ;27 extern int cfa_args_argc __attribute__((weak)); 28 extern char ** cfa_args_argv __attribute__((weak)); 29 extern char ** cfa_args_envp __attribute__((weak)); 30 30 31 31 static void usage(char * cmd, cfa_option options[], size_t opt_count, const char * usage, FILE * out) __attribute__ ((noreturn)); 32 32 33 33 void parse_args( cfa_option options[], size_t opt_count, const char * usage, char ** & left ) { 34 parse_args(cfa_args_argc, cfa_args_argv, options, opt_count, usage, left ); 34 if( 0p != &cfa_args_argc ) { 35 parse_args(cfa_args_argc, cfa_args_argv, options, opt_count, usage, left ); 36 } 37 else { 38 char * temp = ""; 39 parse_args(0, &temp, options, opt_count, usage, left ); 40 } 35 41 } 36 42
Note:
See TracChangeset
for help on using the changeset viewer.