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

Reply via email to