Add AGROUP from Linux 5.19 to sys/acct.h, remove Alpha version (bug 29502)

Message ID alpine.DEB.2.22.394.2208171827060.417173@digraph.polyomino.org.uk
State Committed
Commit a727220b37efc9d4d558a77c5fc57f3af99a4829
Headers
Series Add AGROUP from Linux 5.19 to sys/acct.h, remove Alpha version (bug 29502) |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

Joseph Myers Aug. 17, 2022, 6:27 p.m. UTC
  Linux 5.19 adds a new accounting flag AGROUP; add it to the
enumeration in sys/acct.h.

This shows up that the Alpha-specific variant of this header has a
different set of constants and struct acct, which appear to be the
constants and structure layout from Linux 2.0.  These were changed
some time between Linux 2.0 and Linux 2.2; I see no evidence of an
Alpha-specific layout or set of constants, but haven't checked the
detailed Linux kernel history between those versions.  Rather, it
looks like tha Alpha-specific header was originally needed because of
the use of types in the kernel structure (such as uid_t and gid_t)
that had different sizes on Alpha, and when glibc was updated for
changes to the structure and constants in the kernel

1998-10-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

        * sysdeps/unix/sysv/linux/sys/acct.h: Bring in sync with current
        linux 2.1 version.

that simply omitted to do anything about the Alpha version.

Thus, remove the Alpha version in order to get the updated definitions
into use on Alpha, as I don't think the interfaces are actually
different for Alpha with any kernel version supported by glibc.

Tested for x86_64, and with build-many-glibcs.py for alpha-linux-gnu.
  

Comments

Florian Weimer Aug. 22, 2022, 9:08 a.m. UTC | #1
* Joseph Myers:

> Linux 5.19 adds a new accounting flag AGROUP; add it to the
> enumeration in sys/acct.h.
>
> This shows up that the Alpha-specific variant of this header has a
> different set of constants and struct acct, which appear to be the
> constants and structure layout from Linux 2.0.  These were changed
> some time between Linux 2.0 and Linux 2.2; I see no evidence of an
> Alpha-specific layout or set of constants, but haven't checked the
> detailed Linux kernel history between those versions.  Rather, it
> looks like tha Alpha-specific header was originally needed because of
> the use of types in the kernel structure (such as uid_t and gid_t)
> that had different sizes on Alpha, and when glibc was updated for
> changes to the structure and constants in the kernel
>
> 1998-10-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
>
>         * sysdeps/unix/sysv/linux/sys/acct.h: Bring in sync with current
>         linux 2.1 version.
>
> that simply omitted to do anything about the Alpha version.
>
> Thus, remove the Alpha version in order to get the updated definitions
> into use on Alpha, as I don't think the interfaces are actually
> different for Alpha with any kernel version supported by glibc.
>
> Tested for x86_64, and with build-many-glibcs.py for alpha-linux-gnu.

Constant matches kernel.  Alpha change looks okay to me.

Reviewed-by: Florian Weimer <fweimer@redhat.com>

Thanks,
Florian
  

Patch

diff --git a/sysdeps/unix/sysv/linux/alpha/sys/acct.h b/sysdeps/unix/sysv/linux/alpha/sys/acct.h
deleted file mode 100644
index b2499a5017..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/acct.h
+++ /dev/null
@@ -1,63 +0,0 @@ 
-/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_ACCT_H
-
-#define _SYS_ACCT_H	1
-#include <features.h>
-
-#include <bits/types/time_t.h>
-
-__BEGIN_DECLS
-
-#define ACCT_COMM 16
-
-struct acct
-  {
-    char ac_comm[ACCT_COMM];		/* Accounting command name.  */
-    time_t ac_utime;			/* Accounting user time.  */
-    time_t ac_stime;			/* Accounting system time.  */
-    time_t ac_etime;			/* Accounting elapsed time.  */
-    time_t ac_btime;			/* Beginning time.  */
-    unsigned int ac_uid;		/* Accounting user ID.  */
-    unsigned int ac_gid;		/* Accounting group ID.  */
-    unsigned int ac_tty;		/* Controlling tty.  */
-    /* Please note that the value of the `ac_tty' field, a device number,
-       is encoded differently in the kernel and for the libc dev_t type.  */
-    char ac_flag;			/* Accounting flag.  */
-    long int ac_minflt;			/* Accounting minor pagefaults.  */
-    long int ac_majflt;			/* Accounting major pagefaults.  */
-    long int ac_exitcode;		/* Accounting process exitcode.  */
-  };
-
-enum
-  {
-    AFORK = 0001,		/* Has executed fork, but no exec.  */
-    ASU = 0002,			/* Used super-user privileges.  */
-    ACORE = 0004,		/* Dumped core.  */
-    AXSIG = 0010		/* Killed by a signal.  */
-  };
-
-#define AHZ     100
-
-
-/* Switch process accounting on and off.  */
-extern int acct (const char *__filename) __THROW;
-
-__END_DECLS
-
-#endif	/* sys/acct.h */
diff --git a/sysdeps/unix/sysv/linux/sys/acct.h b/sysdeps/unix/sysv/linux/sys/acct.h
index 1573f6a254..c8317e7ced 100644
--- a/sysdeps/unix/sysv/linux/sys/acct.h
+++ b/sysdeps/unix/sysv/linux/sys/acct.h
@@ -86,7 +86,9 @@  enum
     AFORK = 0x01,		/* Has executed fork, but no exec.  */
     ASU = 0x02,			/* Used super-user privileges.  */
     ACORE = 0x08,		/* Dumped core.  */
-    AXSIG = 0x10		/* Killed by a signal.  */
+    AXSIG = 0x10,		/* Killed by a signal.  */
+    AGROUP = 0x20		/* Was the last task of the process
+				   (task group).  */
   };
 
 #if __BYTE_ORDER == __BIG_ENDIAN