Hi,
I am probably just missing something (still did catch up with the entire
discussion), but this change looks strange to me:
=== modified file 'uspace/lib/c/include/async.h'
--- uspace/lib/c/include/async.h 2014-08-26 15:12:12 +0000
+++ uspace/lib/c/include/async.h 2015-06-16 14:18:22 +0000
@@ -107,7 +107,10 @@
extern atomic_t threads_in_ipc_wait;
#define async_manager() \
- fibril_switch(FIBRIL_TO_MANAGER)
+ do { \
+ futex_down(&async_futex); \
+ fibril_switch(FIBRIL_FROM_DEAD); \
+ } while (0)
#define async_get_call(data) \
async_get_call_timeout(data, 0)
Particularly the change of the argument from FIBRIL_TO_MANAGER to
FIBRIL_FROM_DEAD. Maybe the behavior is correct, but the semantics of
the argument is not. The macro async_manager() is not called from places
where the fibril is dead.
M.D.
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel