Re: [patch 0/6] lightweight robust futexes: -V4

From: Ulrich Drepper
Date: Tue Feb 21 2006 - 11:23:56 EST


On 2/21/06, Jakub Jelinek <jakub@xxxxxxxxxx> wrote:
> TID address is registered through:
> pid_t set_tid_address (int *tidptr)
> syscall, so IMHO we should add a new syscall
> pid_t set_tid_robust_addresses (int *tidptr, struct robust_list_head *robustptr)
> which could register both tid and robust addresses.

The new syscall what certainly be used like this. In fact, the two
syscalls happen exactly one after the other in my sources. So I would
be in favor of making a change along these lines. But instead of
fixing the interface in this way it should be extendable. Pass a
structure and a flag value. The latter specifies which elements of
the structure are used. The structure could even grow over time.


> For thread creation, we can just add CLONE_CHILD_SETROBUST clone flag
> and if that flag is set, pass struct robust_list_head * as additional
> argument.

This is not necessary. Especially because we already reached the
limit of parameters to clone. A dedicated syscall to set up various
things like the TID pointer and the robust list is fine.


> The `len' argument (or really revision of the structure if really needed)
> can be encoded in the structure, as in:
> struct robust_list_head {
> struct robust_list list;
> short robust_list_head_len; /* or robust_list_head_version ? */
> short futex_offset;
> struct robust_list __user *list_op_pending;
> };
> or with long futex_offset, but using say upper 8 bits of the field as
> version or length.

I know you want to save SPARC but this kind of overloading I don't
really like. If you need special treatment of the futex value make
this explicit and arch-dependent.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/