Changeset c76bd34 for libcfa/src/concurrency/io
- Timestamp:
- Oct 7, 2020, 4:31:43 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, stuck-waitfor-destruct
- Children:
- 848439f
- Parents:
- ae2c27a (diff), 597c5d18 (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/io
- Files:
-
- 1 added
- 2 edited
-
call.cfa.in (added)
-
setup.cfa (modified) (4 diffs)
-
types.hfa (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io/setup.cfa
rae2c27a rc76bd34 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" ); … … 246 247 thrd.link.next = 0p; 247 248 thrd.link.prev = 0p; 248 __cfaabi_dbg_debug_do( thrd.unpark_stale = true );249 249 250 250 // Fixup the thread state … … 266 266 267 267 // unpark the fast io_poller 268 unpark( &thrd __cfaabi_dbg_ctx2);268 unpark( &thrd ); 269 269 } 270 270 else { … … 275 275 } 276 276 } else { 277 unpark( &thrd __cfaabi_dbg_ctx2);277 unpark( &thrd ); 278 278 } 279 279 -
libcfa/src/concurrency/io/types.hfa
rae2c27a rc76bd34 16 16 #pragma once 17 17 18 extern "C" { 19 #include <linux/types.h> 20 } 21 22 #include "bits/locks.hfa" 23 18 24 #if defined(CFA_HAVE_LINUX_IO_URING_H) 19 extern "C" {20 #include <linux/types.h>21 }22 23 #include "bits/locks.hfa"24 25 25 #define LEADER_LOCK 26 26 struct __leaderlock_t { … … 101 101 }; 102 102 103 104 //-----------------------------------------------------------------------105 // IO user data106 struct __io_user_data_t {107 __s32 result;108 oneshot sem;109 };110 111 103 //----------------------------------------------------------------------- 112 104 // Misc … … 143 135 void __ioctx_prepare_block($io_ctx_thread & ctx, struct epoll_event & ev); 144 136 #endif 137 138 //----------------------------------------------------------------------- 139 // IO user data 140 struct io_future_t { 141 future_t self; 142 __s32 result; 143 }; 144 145 static inline { 146 bool fulfil( io_future_t & this, __s32 result ) { 147 this.result = result; 148 return fulfil(this.self); 149 } 150 151 // Wait for the future to be fulfilled 152 bool wait( io_future_t & this ) { 153 return wait(this.self); 154 } 155 }
Note:
See TracChangeset
for help on using the changeset viewer.