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

Reply via email to