f_owner_ex vs. POSIX

Adhemerval Zanella adhemerval.zanella@linaro.org
Tue Sep 3 20:55:00 GMT 2019



On 03/09/2019 00:51, Rich Felker wrote:
> On Mon, Sep 02, 2019 at 03:44:53PM +0200, Florian Weimer wrote:
>> * Michael Kerrisk:
>>
>>> I do not know what the rationale was for the addition of the 'enum',
>>> and it wouldn't surprise me if there was no public discussion about
>>> it. The use of an 'enum' strikes me as a slightly odd decision (given
>>> that the kernel uses 'int') but, related to your point below, there
>>> is precedent in, for example, the use of an 'enum' for 'idtype_t' in
>>> waitid() inside glibc, while the kernel type for the argument in
>>> the underlying system call is 'int'.
>>
>> There is also the issue of -fshort-enum.  Some people probably expect
>> that they can use that option and still use glibc headers.
>>
>> I do not have any inside knowledge why things are like they are.
>> Presumably we can switch the type member to int.
> 
> I'm strongly in favor of switch to int. enum types are an
> ABI/compatibility nightmare and have little purpose (unlike enum
> constants which are actually useful).
> 
> Rich
> 

As least for supported architectures it seems that changing the type
to int don't change the f_owner_ex alignment, so the change shouldn't
require any compat symbols. The only thing I am not sure if it we
should change to use int32_t instead (and making fcntl pulling stdint.h)
as it was suggested on comment 0004538.



More information about the Libc-alpha mailing list