futex.h is in urcu/, it means it can be used by users out of the library.
But
If the user's system has futex, he should use #include <linux/futex.h>.
If the user's system don't have futex, it is not good that if the user use this
compat_futex.
Because the compat_futex_async()'s behavior is different from the futex in
linux.
If the caller don't change the value of @uaddr, the futex(FUTEX_WAKE) in linux
can
also wake a thread, but compat_futex_async() don't.
(I guess no one use this behavior, but if there are someone, we give them a
wrong thing)
So I suggest urcu/futex.h becomes a private thing for urcu.
Alternative implements(only describe the alternative FUTEX_WAIT):
1) Like compat_futex_noasync(), but use mutex_lock_signal_save() +
pthread_cond_wait().
Problem: the thread can't handle the signal when waiting on pthread_cond_wait().
(* mutex_lock_signal_save() is implemented in compat_arch_x86.c)
2) Like the linux kernel, use use mutex_lock_signal_save() + hash table
+ sleeping (use poll() + restore signal mask)
Problem: very complex
Thanks,
Lai.
(today I found a old patchset in my private tree, tried to rebase it and
suddenly notice
this urcu/futex.h but the patchset has nothing related with urcu/futex.h).
_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev