- Timestamp:
- Mar 29, 2022, 4:27:52 PM (2 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- 6e47b49
- Parents:
- dfd3410
- Location:
- libcfa/src/concurrency
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io.cfa
rdfd3410 r262fafd9 680 680 __atomic_acquire( &proc->io.ctx->cq.lock ); 681 681 682 __attribute__((used)) volatile bool was_reset = false; 683 682 684 with( proc->idle_wctx) { 683 685 … … 690 692 iov.iov_len = sizeof(eventfd_t); 691 693 __kernel_read(proc, *ftr, iov, evfd ); 694 ftr->result = 0xDEADDEAD; 695 *((eventfd_t *)rdbuf) = 0xDEADDEADDEADDEAD; 696 was_reset = true; 692 697 } 693 698 } … … 695 700 if( !__atomic_load_n( &proc->do_terminate, __ATOMIC_SEQ_CST ) ) { 696 701 __ioarbiter_flush( *proc->io.ctx ); 702 proc->idle_wctx.sleep_time = rdtscl(); 697 703 ioring_syscsll( *proc->io.ctx, 1, IORING_ENTER_GETEVENTS); 698 704 } … … 701 707 __cfa_do_drain( proc->io.ctx, proc->cltr ); 702 708 ready_schedule_unlock(); 709 710 asm volatile ("" :: "m" (was_reset)); 703 711 } 704 712 #endif -
libcfa/src/concurrency/kernel.cfa
rdfd3410 r262fafd9 682 682 this->idle_wctx.sem = 1; 683 683 684 this->idle_wctx.wake_time = rdtscl(); 685 684 686 eventfd_t val; 685 687 val = 1; -
libcfa/src/concurrency/kernel.hfa
rdfd3410 r262fafd9 74 74 // unused if not using io_uring for idle sleep 75 75 io_future_t * ftr; 76 77 volatile unsigned long long wake_time; 78 volatile unsigned long long sleep_time; 76 79 }; 77 80 -
libcfa/src/concurrency/kernel/startup.cfa
rdfd3410 r262fafd9 558 558 559 559 idle_wctx.sem = 0; 560 idle_wctx.wake_time = 0; 560 561 561 562 // I'm assuming these two are reserved for standard input and output
Note: See TracChangeset
for help on using the changeset viewer.