C11 threads ABI questions - enum values
Rich Felker
dalias@libc.org
Thu Oct 2 00:17:00 GMT 2014
On Wed, Oct 01, 2014 at 02:30:22PM -0700, Roland McGrath wrote:
> > Thanks for the feedback. Since then we've got C11 threads support
> > committed in musl, with the following definitions. Are these
> > acceptable for glibc too? They're the same ones I proposed before.
>
> No guarantees until we actually implement something in glibc. But they
> seem fine to me. The possible exception is that for interfaces where the
> only valid thing is to pass in of the specified enum values, there is
> something to be said for none of those values being zero (or -1) so that
> applications can't sloppily use literal 0 (or uninitialized statics or the
> like) and have it work but be non-portable and nonconforming.
My motive for wanting success to have a value of 0 is that it allows
some functions to be pure aliases or tail-calls where otherwise some
heavier wrapping would be needed. Everyone expects success to be 0
anyway. And since it's a return value, I don't think you'd have the
issue of passing literal zeros.
For mutex types, I suppose there's some risk of "sloppily" passing a
literal 0 without meaning mtx_plain, but I think it's a small issue
and I hope we can agree that keeping a common set of constants for ABI
purposes is of more value.
Rich
More information about the Libc-alpha
mailing list