Add AT_* constants from Linux 6.12

Nathan Chancellor nathan@kernel.org
Sun Aug 3 17:54:20 GMT 2025


On Mon, Apr 14, 2025 at 01:00:22PM -0300, Adhemerval Zanella Netto wrote:
> 
> 
> On 09/04/25 16:51, Joseph Myers wrote:
> > Linux 6.12 adds AT_RENAME_* aliases for RENAME_* flags for renameat2,
> > and also AT_HANDLE_MNT_ID_UNIQUE.  Add the first set of aliases to
> > stdio.h alongside the RENAME_* names, and AT_HANDLE_MNT_ID_UNIQUE to
> > bits/fcntl-linux.h.
> > 
> > Tested for x86_64.
> 
> LGTM, although I am not sure about the possible <linux/fcntl.h> inclusion
> clash.

Yeah, this appears to be the reason I now see some warnings when
building samples/vfs/test-statx.c and samples/watch_queue/watch_test.c
in the Linux kernel, which includes both linux/fcntl.h and stdio.h:

  In file included from samples/vfs/test-statx.c:23:
  usr/include/linux/fcntl.h:159:9: warning: 'AT_RENAME_NOREPLACE' macro redefined [-Wmacro-redefined]
    159 | #define AT_RENAME_NOREPLACE     0x0001
        |         ^
  /usr/include/stdio.h:171:10: note: previous definition is here
    171 | # define AT_RENAME_NOREPLACE RENAME_NOREPLACE
        |          ^
  In file included from samples/vfs/test-statx.c:23:
  usr/include/linux/fcntl.h:160:9: warning: 'AT_RENAME_EXCHANGE' macro redefined [-Wmacro-redefined]
    160 | #define AT_RENAME_EXCHANGE      0x0002
        |         ^
  /usr/include/stdio.h:173:10: note: previous definition is here
    173 | # define AT_RENAME_EXCHANGE RENAME_EXCHANGE
        |          ^
  In file included from samples/vfs/test-statx.c:23:
  usr/include/linux/fcntl.h:161:9: warning: 'AT_RENAME_WHITEOUT' macro redefined [-Wmacro-redefined]
    161 | #define AT_RENAME_WHITEOUT      0x0004
        |         ^
  /usr/include/stdio.h:175:10: note: previous definition is here
    175 | # define AT_RENAME_WHITEOUT RENAME_WHITEOUT
        |          ^

Whose bug is this?

> Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
> 
> > 
> > diff --git a/libio/stdio.h b/libio/stdio.h
> > index 4436525731..d042b36618 100644
> > --- a/libio/stdio.h
> > +++ b/libio/stdio.h
> > @@ -168,8 +168,11 @@ extern int renameat (int __oldfd, const char *__old, int __newfd,
> >  #ifdef __USE_GNU
> >  /* Flags for renameat2.  */
> >  # define RENAME_NOREPLACE (1 << 0)
> > +# define AT_RENAME_NOREPLACE RENAME_NOREPLACE
> >  # define RENAME_EXCHANGE (1 << 1)
> > +# define AT_RENAME_EXCHANGE RENAME_EXCHANGE
> >  # define RENAME_WHITEOUT (1 << 2)
> > +# define AT_RENAME_WHITEOUT RENAME_WHITEOUT
> >  
> >  /* Rename file OLD relative to OLDFD to NEW relative to NEWFD, with
> >     additional flags.  */
> > diff --git a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
> > index dfc554aafc..f425a4bf22 100644
> > --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
> > +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
> > @@ -379,6 +379,8 @@ struct file_handle
> >  						identity and may not
> >  						be usable to
> >  						open_by_handle_at.  */
> > +# define AT_HANDLE_MNT_ID_UNIQUE 1 /* Return the 64-bit unique mount
> > +				      ID.  */
> >  #endif
> >  
> >  __BEGIN_DECLS
> > 
> 


More information about the Libc-alpha mailing list