Changeset c59a346
- Timestamp:
- Apr 29, 2020, 3:49:30 PM (4 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:
- f6660520
- Parents:
- 44aad8f
- Location:
- libcfa/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/bits/signal.hfa
r44aad8f rc59a346 54 54 sig, handler, flags, errno, strerror( errno ) 55 55 ); 56 _ exit( EXIT_FAILURE );56 _Exit( EXIT_FAILURE ); 57 57 } // if 58 58 } -
libcfa/src/concurrency/io.cfa
r44aad8f rc59a346 75 75 #endif 76 76 77 78 77 //============================================================================================= 79 78 // I/O Startup / Shutdown logic … … 150 149 sq.array = ( uint32_t *)(((intptr_t)sq.ring_ptr) + params.sq_off.array); 151 150 sq.alloc = *sq.tail; 151 sq.ready = *sq.tail; 152 152 153 153 // completion queue … … 190 190 void __kernel_io_shutdown( cluster & this ) { 191 191 // Stop the IO Poller 192 #if __CFA_IO_POLLING__ == __CFA_IO_POLLING_NAIVE__ 192 193 // Notify the poller thread of the shutdown 193 194 __atomic_store_n(&this.io.done, true, __ATOMIC_SEQ_CST); … … 245 246 // Process a single completion message from the io_uring 246 247 // This is NOT thread-safe 247 int __drain_io( struct io_ring & ring, sigset_t & mask, int waitcnt ) {248 static int __drain_io( struct io_ring & ring, sigset_t & mask, int waitcnt ) { 248 249 int ret = syscall( __NR_io_uring_enter, ring.fd, 0, waitcnt, IORING_ENTER_GETEVENTS, &mask, _NSIG / 8); 249 250 if( ret < 0 ) { -
libcfa/src/concurrency/preemption.cfa
r44aad8f rc59a346 43 43 // FwdDeclarations : Signal handlers 44 44 static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ); 45 static void sigHandler_alarm ( __CFA_SIGPARMS__ ); 45 46 static void sigHandler_segv ( __CFA_SIGPARMS__ ); 46 47 static void sigHandler_ill ( __CFA_SIGPARMS__ ); … … 256 257 257 258 if ( pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) { 258 259 abort( "internal error, pthread_sigmask" ); 259 260 } 260 261 } … … 303 304 // Setup proper signal handlers 304 305 __cfaabi_sigaction( SIGUSR1, sigHandler_ctxSwitch, SA_SIGINFO | SA_RESTART ); // __cfactx_switch handler 306 __cfaabi_sigaction( SIGALRM, sigHandler_alarm , SA_SIGINFO | SA_RESTART ); // debug handler 305 307 306 308 signal_block( SIGALRM ); … … 394 396 395 397 force_yield( __ALARM_PREEMPTION ); // Do the actual __cfactx_switch 398 } 399 400 static void sigHandler_alarm( __CFA_SIGPARMS__ ) { 401 abort("SIGALRM should never reach the signal handler"); 396 402 } 397 403
Note: See TracChangeset
for help on using the changeset viewer.