Patch: Convert linux-generic to use <bits/fcntl-linux.h>

Andreas Jaeger aj@suse.com
Wed Oct 24 20:04:00 GMT 2012


On 10/24/2012 09:31 PM, Chris Metcalf wrote:
> On 10/24/2012 3:05 PM, Andreas Jaeger wrote:
>> Here's a patch for linux-generic to use <bits/fcntl-linux.h>.
>> The patch is also part of my git branch aj/shared-linux-fcntl.
>
> Does it make sense to move the O_LARGEFILE definition to bits/fcntl-linux.h
> instead, i.e. if __O_LARGEFILE is not defined, provide a definition that's
> conditional on _WORDSIZE?  That seems like a more natural default,
> particularly as more platforms will be 64-bit with time and thus want zero
> for O_LARGEFILE.  <bits/wordsize.h> could either be unconditionally
> included, or just included ifndef __O_LARGEFILE.

We could have:
#ifdef __USE_LARGEFILE64
# if __WORDSIZE == 64
#  define O_LARGEFILE  0
# else
#  define O_LARGEFILE __O_LARGEFILE
# endif
#endif

but this needs we need to include <bits/wordsize.h> in 
<bits/fcntl-linux.h> which is not always the case today.

Especially, there's no double inclusion protection for <bits/wordsize.h> 
so if <bits/fcntl.h> already includes <bits/wordsize.h>, it will give 
warnings about redefinitions.

How can we solve that? What do others thing?

> Likewise, it might make sense to take the linux-generic version of struct
> flock/flock64 into bits/fcntl-linux.h, with an "#ifndef __struct_flock" or
> equivalent so that platforms with variant definitions of those structures
> can provide them.

Yes, struct flock cleanup is another topic which I did not tackle yet on 
purpose. If you like to give it a go, you're welcome ;)

> This would leave us in the natural-seeming position of having linux-generic
> use the generic Linux version of fcntl.h with no customizations :-)

;)

It's already quite short after my patch,
Andreas
-- 
  Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
   SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
    GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
     GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126



More information about the Libc-alpha mailing list