* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4
@ 2000-09-26 2:38 Jack Howarth
0 siblings, 0 replies; 10+ messages in thread
From: Jack Howarth @ 2000-09-26 2:38 UTC (permalink / raw)
To: geoffk, Franz.Sirl-kernel, drepper, libc-alpha, linuxppc-dev
Geoff,
I believe I have covered all of the combination of tests you asked
about concerning
Franz's glibc 2.1.94 and Linux 2.4-test9 patches for the IPC64 issue.
Again this problem
arose when we recompiled XFree86 4.0.1 against glibc 2.1.9x. Thus I have
done the following
tests...
1) XFree86 built against patched glibc 2.1.94 with patched Linux
2.4-test9 - gnome is working now
2) XFree86 built against glibc 2.1.3 with patched Linux 2.4-test9 -
gnome is working....always did before
3) XFree86 built against patched glibc 2.1.94 with Linux 2.2.17pre20 -
gnome is working now
4) XFree86 built against glibc 2.1.3 with Linux 2.2.17pre20 - gnome is
working
I believe we are safe with Franz's proposed patch and the only question
is do we increase the seq
field to 32 bits from 16 bits.
Jack
ps Of course without Franz's patches to glibc 2.1.94 and Linux
2.4-test9, tests 1 and 3 would have
failed when I tried to run gnome.
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 10+ messages in thread[parent not found: <Franz Sirl's message of "Mon, 25 Sep 2000 11:10:45 +0200">]
[parent not found: <Franz Sirl's message of "Sun, 24 Sep 2000 21:50:44 +0200">]
* [RFC] IPC64 with glibc-2.2 and linux-2.4 @ 2000-09-24 19:50 ` Franz Sirl 2000-09-25 6:51 ` Ulrich Drepper 0 siblings, 1 reply; 10+ messages in thread From: Franz Sirl @ 2000-09-24 19:50 UTC (permalink / raw) To: libc-alpha, linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 550 bytes --] Hi, I would like to ask the PPC (and PPC64) kernel and glibc developers to look closely over the appended glibc and kernel patches. I'm especially interested in: - did I get the alignment and data types right everywhere? also right for PPC64? - I would like to bump ipc64_perm.seq to 32bit as it is internally in linux-2.4. Is this safe for userspace? Why didn't the other archs bump it to the kernels size? - other comments? This stuff fixes the last "showstopper" bug for glibc-2.2 on PPC, now xf4 works fine on a linux-2.4 kernel too. Franz. [-- Attachment #2: kernel24-ipc-2.patch --] [-- Type: text/plain, Size: 2499 bytes --] ===== ipcbuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/ipcbuf.h Wed Jan 19 03:00:31 2000 +++ edited/ipcbuf.h Sat Sep 23 13:52:17 2000 @@ -2,10 +2,29 @@ #define __PPC_IPCBUF_H__ /* - * The ipc64_perm structure for the PPC is identical to kern_ipc_perm - * as we have always had 32-bit UIDs and GIDs in the kernel. + * The ipc64_perm structure for PPC architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 32-bit seq + * - 2 miscellaneous 64-bit values (so that this structure matches + * PPC64 ipc64_perm) */ - -#define ipc64_perm kern_ipc_perm + +struct ipc64_perm +{ + __kernel_key_t key; + __kernel_uid_t uid; + __kernel_gid_t gid; + __kernel_uid_t cuid; + __kernel_gid_t cgid; + __kernel_mode_t mode; + unsigned short __pad1; + unsigned short seq; + unsigned int __pad2; + unsigned long long __unused1; + unsigned long long __unused2; +}; #endif /* __PPC_IPCBUF_H__ */ ===== msgbuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/msgbuf.h Wed Jan 19 03:00:31 2000 +++ edited/msgbuf.h Fri Sep 22 23:27:16 2000 @@ -7,7 +7,6 @@ struct msqid64_ds { struct ipc64_perm msg_perm; - unsigned int __unused0; unsigned int __unused1; __kernel_time_t msg_stime; /* last msgsnd time */ unsigned int __unused2; ===== sembuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/sembuf.h Wed Jan 19 03:00:31 2000 +++ edited/sembuf.h Sun Sep 24 11:19:56 2000 @@ -7,7 +7,6 @@ struct semid64_ds { struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ - unsigned int __unused0; unsigned int __unused1; __kernel_time_t sem_otime; /* last semop time */ unsigned int __unused2; ===== shmbuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/shmbuf.h Wed Jan 19 03:00:31 2000 +++ edited/shmbuf.h Sun Sep 24 12:03:19 2000 @@ -7,14 +7,13 @@ struct shmid64_ds { struct ipc64_perm shm_perm; /* operation perms */ - unsigned int __unused0; - size_t shm_segsz; /* size of segment (bytes) */ unsigned long __unused1; __kernel_time_t shm_atime; /* last attach time */ unsigned long __unused2; __kernel_time_t shm_dtime; /* last detach time */ unsigned long __unused3; __kernel_time_t shm_ctime; /* last change time */ + size_t shm_segsz; /* size of segment (bytes) */ __kernel_pid_t shm_cpid; /* pid of creator */ __kernel_pid_t shm_lpid; /* pid of last operator */ unsigned long shm_nattch; /* no. of current attaches */ [-- Attachment #3: glibc22-ipctest.patch --] [-- Type: text/plain, Size: 12265 bytes --] ? powerpc/bits/msq.h ? powerpc/bits/shm.h ? powerpc/bits/sem.h Index: kernel-features.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/kernel-features.h,v retrieving revision 1.20 diff -u -p -r1.20 kernel-features.h --- kernel-features.h 2000/09/18 16:40:02 1.20 +++ kernel-features.h 2000/09/24 19:26:16 @@ -110,13 +110,21 @@ # define __ASSUME_NEW_GETRLIMIT_SYSCALL 1 #endif -/* Linux 2.3.39 introduced 32bit UID/GIDs. Some platforms had 32 bit +/* Linux 2.3.39 introduced 32bit UID/GIDs and IPC64. Some platforms had 32 bit type all along. */ #if __LINUX_KERNEL_VERSION >= 131879 || defined __powerpc__ || defined __mips__ # define __ASSUME_32BITUIDS 1 +# ifndef __powerpc__ +# define __ASSUME_IPC64 1 +# endif # ifdef __sparc__ # define __ASSUME_SETRESUID_SYSCALL 1 # endif +#endif + +/* Linux 2.4.0 on PPC introduced a correct IPC64. */ +#if __LINUX_KERNEL_VERSION >= 132096 && defined __powerpc__ +# define __ASSUME_IPC64 1 #endif /* We can use the LDTs for threading with Linux 2.3.99 and newer. */ Index: msgctl.c =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/msgctl.c,v retrieving revision 1.7 diff -u -p -r1.7 msgctl.c --- msgctl.c 2000/07/27 06:13:08 1.7 +++ msgctl.c 2000/09/24 19:26:16 @@ -65,7 +65,7 @@ compat_symbol (libc, __old_msgctl, msgct int __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) { -#if __ASSUME_32BITUIDS > 0 +#if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); #else Index: semctl.c =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/semctl.c,v retrieving revision 1.10 diff -u -p -r1.10 semctl.c --- semctl.c 2000/07/27 06:13:08 1.10 +++ semctl.c 2000/09/24 19:26:16 @@ -93,7 +93,7 @@ __new_semctl (int semid, int semnum, int va_end (ap); -#if __ASSUME_32BITUIDS > 0 +#if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); #else Index: shmctl.c =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/shmctl.c,v retrieving revision 1.9 diff -u -p -r1.9 shmctl.c --- shmctl.c 2000/08/17 07:37:01 1.9 +++ shmctl.c 2000/09/24 19:26:16 @@ -73,7 +73,7 @@ compat_symbol (libc, __old_shmctl, shmct int __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) { -#if __ASSUME_32BITUIDS > 0 +#if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf)); #else switch (cmd) { Index: powerpc/bits/ipc.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h,v retrieving revision 1.4 diff -u -p -r1.4 ipc.h --- ipc.h 2000/05/23 08:43:01 1.4 +++ ipc.h 2000/09/24 19:26:16 @@ -48,7 +48,11 @@ struct ipc_perm __uid_t cuid; /* Creator's user ID. */ __gid_t cgid; /* Creator's group ID. */ __mode_t mode; /* Read/write permission. */ + unsigned short int __pad1; unsigned short int __seq; /* Sequence number. */ + unsigned int __pad2; + unsigned long long __unused1; + unsigned long long __unused2; }; --- /dev/null Tue May 5 16:32:27 1998 +++ powerpc/bits/msq.h Fri Sep 22 14:24:06 2000 @@ -0,0 +1,77 @@ +/* Copyright (C) 1995, 1996, 1997, 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_MSG_H +# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead." +#endif + +#include <bits/types.h> + +/* Define options for message queue functions. */ +#define MSG_NOERROR 010000 /* no error if message is too big */ +#ifdef __USE_GNU +# define MSG_EXCEPT 020000 /* recv any msg except of specified type */ +#endif + +/* Types used in the structure definition. */ +typedef unsigned long int msgqnum_t; +typedef unsigned long int msglen_t; + + +/* Structure of record for one message inside the kernel. + The type `struct msg' is opaque. */ +struct msqid_ds +{ + struct ipc_perm msg_perm; /* structure describing operation permission */ + unsigned int __unused1; + __time_t msg_stime; /* time of last msgsnd command */ + unsigned int __unused2; + __time_t msg_rtime; /* time of last msgrcv command */ + unsigned int __unused3; + __time_t msg_ctime; /* time of last change */ + unsigned long __msg_cbytes; /* current number of bytes on queue */ + msgqnum_t msg_qnum; /* number of messages currently on queue */ + msglen_t msg_qbytes; /* max number of bytes allowed on queue */ + __pid_t msg_lspid; /* pid of last msgsnd() */ + __pid_t msg_lrpid; /* pid of last msgrcv() */ + unsigned long __unused4; + unsigned long __unused5; +}; + +#ifdef __USE_MISC + +# define msg_cbytes __msg_cbytes + +/* ipcs ctl commands */ +# define MSG_STAT 11 +# define MSG_INFO 12 + +/* buffer for msgctl calls IPC_INFO, MSG_INFO */ +struct msginfo + { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + unsigned short int msgseg; + }; + +#endif /* __USE_MISC */ --- /dev/null Tue May 5 16:32:27 1998 +++ powerpc/bits/sem.h Sun Sep 24 04:43:56 2000 @@ -0,0 +1,87 @@ +/* Copyright (C) 1995, 1996, 1997, 1998, 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead." +#endif + +#include <sys/types.h> + +/* Flags for `semop'. */ +#define SEM_UNDO 0x1000 /* undo the operation on exit */ + +/* Commands for `semctl'. */ +#define GETPID 11 /* get sempid */ +#define GETVAL 12 /* get semval */ +#define GETALL 13 /* get all semval's */ +#define GETNCNT 14 /* get semncnt */ +#define GETZCNT 15 /* get semzcnt */ +#define SETVAL 16 /* set semval */ +#define SETALL 17 /* set all semval's */ + + +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + unsigned int __unused1; + __time_t sem_otime; /* last semop() time */ + unsigned int __unused2; + __time_t sem_ctime; /* last time changed by semctl() */ + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long __unused3; + unsigned long __unused4; +}; + +/* The user should define a union like the following to use it for arguments + for `semctl'. + + union semun + { + int val; <= value for SETVAL + struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET + unsigned short int *array; <= array for GETALL & SETALL + struct seminfo *__buf; <= buffer for IPC_INFO + }; + + Previous versions of this file used to define this union but this is + incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether + one must define the union or not. */ +#define _SEM_SEMUN_UNDEFINED 1 + +#ifdef __USE_MISC + +/* ipcs ctl cmds */ +# define SEM_STAT 18 +# define SEM_INFO 19 + +struct seminfo +{ + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; +}; + +#endif /* __USE_MISC */ --- /dev/null Tue May 5 16:32:27 1998 +++ powerpc/bits/shm.h Sun Sep 24 04:42:58 2000 @@ -0,0 +1,93 @@ +/* Copyright (C) 1995, 1996, 1997, 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <bits/types.h> + +/* Permission flag for shmget. */ +#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */ +#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */ + +/* Flags for `shmat'. */ +#define SHM_RDONLY 010000 /* attach read-only else read-write */ +#define SHM_RND 020000 /* round attach address to SHMLBA */ +#define SHM_REMAP 040000 /* take-over region on attach */ + +/* Commands for `shmctl'. */ +#define SHM_LOCK 11 /* lock segment (root only) */ +#define SHM_UNLOCK 12 /* unlock segment (root only) */ + + +/* Type to count number of attaches. */ +typedef unsigned long int shmatt_t; + +/* Data structure describing a set of semaphores. */ +struct shmid_ds + { + struct ipc_perm shm_perm; /* operation permission struct */ + unsigned long __unused1; + __time_t shm_atime; /* time of last shmat() */ + unsigned long __unused2; + __time_t shm_dtime; /* time of last shmdt() */ + unsigned long __unused3; + __time_t shm_ctime; /* time of last change by shmctl() */ + size_t shm_segsz; /* size of segment in bytes */ + __pid_t shm_cpid; /* pid of creator */ + __pid_t shm_lpid; /* pid of last shmop */ + shmatt_t shm_nattch; /* number of current attaches */ + unsigned long __unused4; + unsigned long __unused5; + }; + +#ifdef __USE_MISC + +/* ipcs ctl commands */ +# define SHM_STAT 13 +# define SHM_INFO 14 + +/* shm_mode upper byte flags */ +# define SHM_DEST 01000 /* segment will be destroyed on last detach */ +# define SHM_LOCKED 02000 /* segment will not be swapped */ + +struct shminfo + { + unsigned long int shmmax; + unsigned long int shmmin; + unsigned long int shmmni; + unsigned long int shmseg; + unsigned long int shmall; + unsigned long int __unused1; + unsigned long int __unused2; + unsigned long int __unused3; + unsigned long int __unused4; + }; + +struct shm_info + { + int used_ids; + unsigned long int shm_tot; /* total allocated shm */ + unsigned long int shm_rss; /* total resident shm */ + unsigned long int shm_swp; /* total swapped shm */ + unsigned long int swap_attempts; + unsigned long int swap_successes; + }; + +#endif /* __USE_MISC */ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-24 19:50 ` Franz Sirl @ 2000-09-25 6:51 ` Ulrich Drepper 2000-09-25 9:10 ` Franz Sirl 0 siblings, 1 reply; 10+ messages in thread From: Ulrich Drepper @ 2000-09-25 6:51 UTC (permalink / raw) To: Franz Sirl; +Cc: libc-alpha, linuxppc-dev Franz Sirl <Franz.Sirl-kernel@lauterbach.com> writes: > I'm especially interested in: > - did I get the alignment and data types right everywhere? also right for > PPC64? > - I would like to bump ipc64_perm.seq to 32bit as it is internally in > linux-2.4. Is this safe for userspace? Why didn't the other archs bump it to > the kernels size? > - other comments? The patch looks reasonable to me but I cannot decide about using it since the kernel would have to be changed first. -- ---------------. ,-. 1325 Chesapeake Terrace Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA Red Hat `--' drepper at redhat.com `------------------------ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-25 6:51 ` Ulrich Drepper @ 2000-09-25 9:10 ` Franz Sirl 2000-09-25 15:25 ` Ulrich Drepper 2000-09-25 21:24 ` Geoff Keating 0 siblings, 2 replies; 10+ messages in thread From: Franz Sirl @ 2000-09-25 9:10 UTC (permalink / raw) To: Ulrich Drepper; +Cc: libc-alpha, linuxppc-dev At 08:51 25.09.00, Ulrich Drepper wrote: >Franz Sirl <Franz.Sirl-kernel@lauterbach.com> writes: > > > I'm especially interested in: > > - did I get the alignment and data types right everywhere? also right for > > PPC64? > > - I would like to bump ipc64_perm.seq to 32bit as it is internally in > > linux-2.4. Is this safe for userspace? Why didn't the other archs bump > it to > > the kernels size? > > - other comments? > >The patch looks reasonable to me but I cannot decide about using it >since the kernel would have to be changed first. Yeah, I know. But it's no problem for me to push this change into the kernel after some people (including you :-)) have agreed to the principle of the patch. What about 'seq'? Can I safely bump it to 32bit for userspace in the final patch? I see no need for the kernel and userspace being different here, but all other archs are limiting it to 16bit, so there may be a reason... Franz. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-25 9:10 ` Franz Sirl @ 2000-09-25 15:25 ` Ulrich Drepper 2000-09-25 15:54 ` Franz Sirl 2000-09-25 21:24 ` Geoff Keating 1 sibling, 1 reply; 10+ messages in thread From: Ulrich Drepper @ 2000-09-25 15:25 UTC (permalink / raw) To: Franz Sirl; +Cc: libc-alpha, linuxppc-dev Franz Sirl <Franz.Sirl-kernel@lauterbach.com> writes: > What about 'seq'? Can I safely bump it to 32bit for userspace in the final > patch? I see no need for the kernel and userspace being different here, but > all other archs are limiting it to 16bit, so there may be a reason... You should avoid changing the size of the struct. I haven't done the math on this. -- ---------------. ,-. 1325 Chesapeake Terrace Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA Red Hat `--' drepper at redhat.com `------------------------ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-25 15:25 ` Ulrich Drepper @ 2000-09-25 15:54 ` Franz Sirl 2000-09-25 16:08 ` Ulrich Drepper 0 siblings, 1 reply; 10+ messages in thread From: Franz Sirl @ 2000-09-25 15:54 UTC (permalink / raw) To: Ulrich Drepper; +Cc: libc-alpha, linuxppc-dev At 17:25 25.09.00, Ulrich Drepper wrote: >Franz Sirl <Franz.Sirl-kernel@lauterbach.com> writes: > > > What about 'seq'? Can I safely bump it to 32bit for userspace in the final > > patch? I see no need for the kernel and userspace being different here, but > > all other archs are limiting it to 16bit, so there may be a reason... > >You should avoid changing the size of the struct. I haven't done the >math on this. Well, changing compared to what? IPC_64 on PPC was never functional so far, so there is no problem here. The IPC_64 structs on the other archs have this, eg on sparc: struct ipc64_perm { __kernel_key_t key; __kernel_uid32_t uid; __kernel_gid32_t gid; __kernel_uid32_t cuid; __kernel_gid32_t cgid; unsigned short __pad1; __kernel_mode_t mode; unsigned short __pad2; unsigned short seq; unsigned long long __unused1; unsigned long long __unused2; }; but internally the kernel uses: /* used by in-kernel data structures */ struct kern_ipc_perm { key_t key; uid_t uid; gid_t gid; uid_t cuid; gid_t cgid; mode_t mode; unsigned long seq; }; So, is there a reason why seq is limited to 16bit in the kern_ipc_perm<->ipc64_perm interface in the kernel? ipc64_perm is prepared for a 32bit value anyway with the __pad2 padding. Since I for myself can't think of a valid reason for limiting seq to 16bit in userspace, I'm asking here, cause I have not the slightest idea how the IPC is handled/used outside of kernel/glibc. If there is no reason, I really would prefer to change my patch to use 'unsigned long seq' on PPC. Franz. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-25 15:54 ` Franz Sirl @ 2000-09-25 16:08 ` Ulrich Drepper 0 siblings, 0 replies; 10+ messages in thread From: Ulrich Drepper @ 2000-09-25 16:08 UTC (permalink / raw) To: Franz Sirl; +Cc: libc-alpha, linuxppc-dev Franz Sirl <Franz.Sirl-kernel@lauterbach.com> writes: > Well, changing compared to what? IPC_64 on PPC was never functional > so far, so there is no problem here. The IPC_64 structs on the other > archs have this, eg on sparc: I'm failing to see where you want to see ipc_perm64 included in the compilation environment unless you replace ipc_perm. There are no LFS variants for the SysV IPC functions. And then ipc_perm64 should be the same size as ipc_perm. -- ---------------. ,-. 1325 Chesapeake Terrace Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA Red Hat `--' drepper at redhat.com `------------------------ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-25 9:10 ` Franz Sirl 2000-09-25 15:25 ` Ulrich Drepper @ 2000-09-25 21:24 ` Geoff Keating 2000-09-26 21:24 ` Franz Sirl 1 sibling, 1 reply; 10+ messages in thread From: Geoff Keating @ 2000-09-25 21:24 UTC (permalink / raw) To: Franz.Sirl-kernel; +Cc: drepper, libc-alpha, linuxppc-dev > Date: Mon, 25 Sep 2000 11:10:45 +0200 > From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com> > Cc: libc-alpha@sources.redhat.com, linuxppc-dev@lists.linuxppc.org > Yeah, I know. But it's no problem for me to push this change into the > kernel after some people (including you :-)) have agreed to the principle > of the patch. I too agree with the principle of the patch. There's no reason to limit this quantity to 16 bits. > What about 'seq'? Can I safely bump it to 32bit for userspace in the final > patch? I see no need for the kernel and userspace being different here, but > all other archs are limiting it to 16bit, so there may be a reason... I can't see any particular reason. Did you test it? There are four combinations to check: new application/new kernel old application/new kernel (to test symbol versioning) new application/old kernel (test translation of old structure to new) old application/old kernel (this should Just Work if the above cases work) (but of course you should still check it :-) ) -- - Geoffrey Keating <geoffk@cygnus.com> ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-25 21:24 ` Geoff Keating @ 2000-09-26 21:24 ` Franz Sirl 2000-09-27 0:45 ` Geoff Keating 0 siblings, 1 reply; 10+ messages in thread From: Franz Sirl @ 2000-09-26 21:24 UTC (permalink / raw) To: Geoff Keating; +Cc: drepper, libc-alpha, linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 1887 bytes --] On Mon, 25 Sep 2000, Geoff Keating wrote: > > Date: Mon, 25 Sep 2000 11:10:45 +0200 > > From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com> > > Cc: libc-alpha@sources.redhat.com, linuxppc-dev@lists.linuxppc.org > > > > Yeah, I know. But it's no problem for me to push this change into the > > kernel after some people (including you :-)) have agreed to the principle > > of the patch. > > I too agree with the principle of the patch. There's no reason to > limit this quantity to 16 bits. OK, here is the final patch, if nobody objects I'll ask Ben to push the kernel changes into bitkeeper. Changes to previous version: - bumped ipc_perm.seq member to 32 bit - padded shmid_ds.shm_segsz to prepare for size_t expansion - added an unrelated LFS change for fcntl.h > Did you test it? There are four combinations to check: > > new application/new kernel > old application/new kernel (to test symbol versioning) > new application/old kernel (test translation of old structure to new) > old application/old kernel (this should Just Work if the above cases work) > (but of course you should still check it :-) ) Yeah, I did test all but the new/new combination myself (haven't had time to recompile xf4 yet), but Jack tested it successfully. Franz. * sysdeps/unix/sysv/linux/kernel-features.h: Add __ASSUME_IPC64, only define´ it for powerpc for kernel >= 2.4.0. * sysdeps/unix/sysv/linux/msgctl.c: Test for __ASSUME_IPC64, not __ASSUME_32BITUIDS. * sysdeps/unix/sysv/linux/semctl.c: Likewise. * sysdeps/unix/sysv/linux/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Sync with kernel. * sysdeps/unix/sysv/linux/powerpc/bits/msq.h: New file. * sysdeps/unix/sysv/linux/powerpc/bits/sem.h: New file. * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: New file. * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Add defines for LFS record locking. [-- Attachment #2: glibc22-ipc.patch --] [-- Type: text/plain, Size: 13701 bytes --] Index: sysdeps/unix/sysv/linux/kernel-features.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/kernel-features.h,v retrieving revision 1.20 diff -u -p -r1.20 kernel-features.h --- sysdeps/unix/sysv/linux/kernel-features.h 2000/09/18 16:40:02 1.20 +++ sysdeps/unix/sysv/linux/kernel-features.h 2000/09/26 19:03:23 @@ -110,13 +110,21 @@ # define __ASSUME_NEW_GETRLIMIT_SYSCALL 1 #endif -/* Linux 2.3.39 introduced 32bit UID/GIDs. Some platforms had 32 bit +/* Linux 2.3.39 introduced 32bit UID/GIDs and IPC64. Some platforms had 32 bit type all along. */ #if __LINUX_KERNEL_VERSION >= 131879 || defined __powerpc__ || defined __mips__ # define __ASSUME_32BITUIDS 1 +# ifndef __powerpc__ +# define __ASSUME_IPC64 1 +# endif # ifdef __sparc__ # define __ASSUME_SETRESUID_SYSCALL 1 # endif +#endif + +/* Linux 2.4.0 on PPC introduced a correct IPC64. */ +#if __LINUX_KERNEL_VERSION >= 132096 && defined __powerpc__ +# define __ASSUME_IPC64 1 #endif /* We can use the LDTs for threading with Linux 2.3.99 and newer. */ Index: sysdeps/unix/sysv/linux/msgctl.c =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/msgctl.c,v retrieving revision 1.7 diff -u -p -r1.7 msgctl.c --- sysdeps/unix/sysv/linux/msgctl.c 2000/07/27 06:13:08 1.7 +++ sysdeps/unix/sysv/linux/msgctl.c 2000/09/26 19:03:24 @@ -65,7 +65,7 @@ compat_symbol (libc, __old_msgctl, msgct int __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) { -#if __ASSUME_32BITUIDS > 0 +#if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); #else Index: sysdeps/unix/sysv/linux/semctl.c =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/semctl.c,v retrieving revision 1.10 diff -u -p -r1.10 semctl.c --- sysdeps/unix/sysv/linux/semctl.c 2000/07/27 06:13:08 1.10 +++ sysdeps/unix/sysv/linux/semctl.c 2000/09/26 19:03:24 @@ -93,7 +93,7 @@ __new_semctl (int semid, int semnum, int va_end (ap); -#if __ASSUME_32BITUIDS > 0 +#if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); #else Index: sysdeps/unix/sysv/linux/shmctl.c =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/shmctl.c,v retrieving revision 1.9 diff -u -p -r1.9 shmctl.c --- sysdeps/unix/sysv/linux/shmctl.c 2000/08/17 07:37:01 1.9 +++ sysdeps/unix/sysv/linux/shmctl.c 2000/09/26 19:03:24 @@ -73,7 +73,7 @@ compat_symbol (libc, __old_shmctl, shmct int __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) { -#if __ASSUME_32BITUIDS > 0 +#if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf)); #else switch (cmd) { Index: sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h,v retrieving revision 1.1 diff -u -p -r1.1 fcntl.h --- sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2000/09/01 07:13:37 1.1 +++ sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2000/09/26 19:03:25 @@ -78,10 +78,9 @@ # define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ #endif -/* XXX missing */ -#define F_GETLK64 5 /* Get record locking info. */ -#define F_SETLK64 6 /* Set record locking info (non-blocking). */ -#define F_SETLKW64 7 /* Set record locking info (blocking). */ +#define F_GETLK64 12 /* Get record locking info. */ +#define F_SETLK64 13 /* Set record locking info (non-blocking). */ +#define F_SETLKW64 14 /* Set record locking info (blocking). */ #if defined __USE_BSD || defined __USE_XOPEN2K # define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ Index: sysdeps/unix/sysv/linux/powerpc/bits/ipc.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h,v retrieving revision 1.4 diff -u -p -r1.4 ipc.h --- sysdeps/unix/sysv/linux/powerpc/bits/ipc.h 2000/05/23 08:43:01 1.4 +++ sysdeps/unix/sysv/linux/powerpc/bits/ipc.h 2000/09/26 19:03:25 @@ -48,7 +48,10 @@ struct ipc_perm __uid_t cuid; /* Creator's user ID. */ __gid_t cgid; /* Creator's group ID. */ __mode_t mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ + unsigned long __seq; /* Sequence number. */ + unsigned int __pad1; + unsigned long long __unused1; + unsigned long long __unused2; }; --- /dev/null Tue May 5 22:32:27 1998 +++ sysdeps/unix/sysv/linux/powerpc/bits/msq.h Tue Sep 26 20:40:24 2000 @@ -0,0 +1,77 @@ +/* Copyright (C) 1995, 1996, 1997, 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_MSG_H +# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead." +#endif + +#include <bits/types.h> + +/* Define options for message queue functions. */ +#define MSG_NOERROR 010000 /* no error if message is too big */ +#ifdef __USE_GNU +# define MSG_EXCEPT 020000 /* recv any msg except of specified type */ +#endif + +/* Types used in the structure definition. */ +typedef unsigned long int msgqnum_t; +typedef unsigned long int msglen_t; + + +/* Structure of record for one message inside the kernel. + The type `struct msg' is opaque. */ +struct msqid_ds +{ + struct ipc_perm msg_perm; /* structure describing operation permission */ + unsigned int __unused1; + __time_t msg_stime; /* time of last msgsnd command */ + unsigned int __unused2; + __time_t msg_rtime; /* time of last msgrcv command */ + unsigned int __unused3; + __time_t msg_ctime; /* time of last change */ + unsigned long __msg_cbytes; /* current number of bytes on queue */ + msgqnum_t msg_qnum; /* number of messages currently on queue */ + msglen_t msg_qbytes; /* max number of bytes allowed on queue */ + __pid_t msg_lspid; /* pid of last msgsnd() */ + __pid_t msg_lrpid; /* pid of last msgrcv() */ + unsigned long __unused4; + unsigned long __unused5; +}; + +#ifdef __USE_MISC + +# define msg_cbytes __msg_cbytes + +/* ipcs ctl commands */ +# define MSG_STAT 11 +# define MSG_INFO 12 + +/* buffer for msgctl calls IPC_INFO, MSG_INFO */ +struct msginfo + { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + unsigned short int msgseg; + }; + +#endif /* __USE_MISC */ --- /dev/null Tue May 5 22:32:27 1998 +++ sysdeps/unix/sysv/linux/powerpc/bits/sem.h Tue Sep 26 20:40:24 2000 @@ -0,0 +1,87 @@ +/* Copyright (C) 1995, 1996, 1997, 1998, 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead." +#endif + +#include <sys/types.h> + +/* Flags for `semop'. */ +#define SEM_UNDO 0x1000 /* undo the operation on exit */ + +/* Commands for `semctl'. */ +#define GETPID 11 /* get sempid */ +#define GETVAL 12 /* get semval */ +#define GETALL 13 /* get all semval's */ +#define GETNCNT 14 /* get semncnt */ +#define GETZCNT 15 /* get semzcnt */ +#define SETVAL 16 /* set semval */ +#define SETALL 17 /* set all semval's */ + + +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + unsigned int __unused1; + __time_t sem_otime; /* last semop() time */ + unsigned int __unused2; + __time_t sem_ctime; /* last time changed by semctl() */ + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long __unused3; + unsigned long __unused4; +}; + +/* The user should define a union like the following to use it for arguments + for `semctl'. + + union semun + { + int val; <= value for SETVAL + struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET + unsigned short int *array; <= array for GETALL & SETALL + struct seminfo *__buf; <= buffer for IPC_INFO + }; + + Previous versions of this file used to define this union but this is + incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether + one must define the union or not. */ +#define _SEM_SEMUN_UNDEFINED 1 + +#ifdef __USE_MISC + +/* ipcs ctl cmds */ +# define SEM_STAT 18 +# define SEM_INFO 19 + +struct seminfo +{ + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; +}; + +#endif /* __USE_MISC */ --- /dev/null Tue May 5 22:32:27 1998 +++ sysdeps/unix/sysv/linux/powerpc/bits/shm.h Tue Sep 26 20:43:17 2000 @@ -0,0 +1,94 @@ +/* Copyright (C) 1995, 1996, 1997, 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <bits/types.h> + +/* Permission flag for shmget. */ +#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */ +#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */ + +/* Flags for `shmat'. */ +#define SHM_RDONLY 010000 /* attach read-only else read-write */ +#define SHM_RND 020000 /* round attach address to SHMLBA */ +#define SHM_REMAP 040000 /* take-over region on attach */ + +/* Commands for `shmctl'. */ +#define SHM_LOCK 11 /* lock segment (root only) */ +#define SHM_UNLOCK 12 /* unlock segment (root only) */ + + +/* Type to count number of attaches. */ +typedef unsigned long int shmatt_t; + +/* Data structure describing a set of semaphores. */ +struct shmid_ds + { + struct ipc_perm shm_perm; /* operation permission struct */ + unsigned int __unused1; + __time_t shm_atime; /* time of last shmat() */ + unsigned int __unused2; + __time_t shm_dtime; /* time of last shmdt() */ + unsigned int __unused3; + __time_t shm_ctime; /* time of last change by shmctl() */ + unsigned int __unused4; + size_t shm_segsz; /* size of segment in bytes */ + __pid_t shm_cpid; /* pid of creator */ + __pid_t shm_lpid; /* pid of last shmop */ + shmatt_t shm_nattch; /* number of current attaches */ + unsigned long __unused5; + unsigned long __unused6; + }; + +#ifdef __USE_MISC + +/* ipcs ctl commands */ +# define SHM_STAT 13 +# define SHM_INFO 14 + +/* shm_mode upper byte flags */ +# define SHM_DEST 01000 /* segment will be destroyed on last detach */ +# define SHM_LOCKED 02000 /* segment will not be swapped */ + +struct shminfo + { + unsigned long int shmmax; + unsigned long int shmmin; + unsigned long int shmmni; + unsigned long int shmseg; + unsigned long int shmall; + unsigned long int __unused1; + unsigned long int __unused2; + unsigned long int __unused3; + unsigned long int __unused4; + }; + +struct shm_info + { + int used_ids; + unsigned long int shm_tot; /* total allocated shm */ + unsigned long int shm_rss; /* total resident shm */ + unsigned long int shm_swp; /* total swapped shm */ + unsigned long int swap_attempts; + unsigned long int swap_successes; + }; + +#endif /* __USE_MISC */ [-- Attachment #3: kernel24-ipc-2.patch --] [-- Type: text/plain, Size: 2853 bytes --] ===== include/asm-ppc/ipcbuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/ipcbuf.h Wed Jan 19 03:00:31 2000 +++ edited/include/asm-ppc/ipcbuf.h Tue Sep 26 19:40:42 2000 @@ -2,10 +2,28 @@ #define __PPC_IPCBUF_H__ /* - * The ipc64_perm structure for the PPC is identical to kern_ipc_perm - * as we have always had 32-bit UIDs and GIDs in the kernel. + * The ipc64_perm structure for PPC architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 1 32-bit value to fill up for 8-byte alignment + * - 2 miscellaneous 64-bit values (so that this structure matches + * PPC64 ipc64_perm) */ - -#define ipc64_perm kern_ipc_perm + +struct ipc64_perm +{ + __kernel_key_t key; + __kernel_uid_t uid; + __kernel_gid_t gid; + __kernel_uid_t cuid; + __kernel_gid_t cgid; + __kernel_mode_t mode; + unsigned long seq; + unsigned int __pad2; + unsigned long long __unused1; + unsigned long long __unused2; +}; #endif /* __PPC_IPCBUF_H__ */ ===== include/asm-ppc/msgbuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/msgbuf.h Wed Jan 19 03:00:31 2000 +++ edited/include/asm-ppc/msgbuf.h Fri Sep 22 23:27:16 2000 @@ -7,7 +7,6 @@ struct msqid64_ds { struct ipc64_perm msg_perm; - unsigned int __unused0; unsigned int __unused1; __kernel_time_t msg_stime; /* last msgsnd time */ unsigned int __unused2; ===== include/asm-ppc/sembuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/sembuf.h Wed Jan 19 03:00:31 2000 +++ edited/include/asm-ppc/sembuf.h Sun Sep 24 11:19:56 2000 @@ -7,7 +7,6 @@ struct semid64_ds { struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ - unsigned int __unused0; unsigned int __unused1; __kernel_time_t sem_otime; /* last semop time */ unsigned int __unused2; ===== include/asm-ppc/shmbuf.h 1.1 vs edited ===== --- 1.1/include/asm-ppc/shmbuf.h Wed Jan 19 03:00:31 2000 +++ edited/include/asm-ppc/shmbuf.h Tue Sep 26 20:26:16 2000 @@ -7,19 +7,19 @@ struct shmid64_ds { struct ipc64_perm shm_perm; /* operation perms */ - unsigned int __unused0; - size_t shm_segsz; /* size of segment (bytes) */ - unsigned long __unused1; + unsigned int __unused1; __kernel_time_t shm_atime; /* last attach time */ - unsigned long __unused2; + unsigned int __unused2; __kernel_time_t shm_dtime; /* last detach time */ - unsigned long __unused3; + unsigned int __unused3; __kernel_time_t shm_ctime; /* last change time */ + unsigned int __unused4; + size_t shm_segsz; /* size of segment (bytes) */ __kernel_pid_t shm_cpid; /* pid of creator */ __kernel_pid_t shm_lpid; /* pid of last operator */ unsigned long shm_nattch; /* no. of current attaches */ - unsigned long __unused4; unsigned long __unused5; + unsigned long __unused6; }; struct shminfo64 { ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC] IPC64 with glibc-2.2 and linux-2.4 2000-09-26 21:24 ` Franz Sirl @ 2000-09-27 0:45 ` Geoff Keating 0 siblings, 0 replies; 10+ messages in thread From: Geoff Keating @ 2000-09-27 0:45 UTC (permalink / raw) To: Franz.Sirl-kernel; +Cc: drepper, libc-alpha, linuxppc-dev This is OK for glibc; feel free to commit it. -- - Geoffrey Keating <geoffk@cygnus.com> ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2000-09-27 0:45 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-09-26 2:38 [RFC] IPC64 with glibc-2.2 and linux-2.4 Jack Howarth
[not found] <Franz Sirl's message of "Mon, 25 Sep 2000 11:10:45 +0200">
[not found] ` <Franz Sirl's message of "Sun, 24 Sep 2000 21:50:44 +0200">
2000-09-24 19:50 ` Franz Sirl
2000-09-25 6:51 ` Ulrich Drepper
2000-09-25 9:10 ` Franz Sirl
2000-09-25 15:25 ` Ulrich Drepper
2000-09-25 15:54 ` Franz Sirl
2000-09-25 16:08 ` Ulrich Drepper
2000-09-25 21:24 ` Geoff Keating
2000-09-26 21:24 ` Franz Sirl
2000-09-27 0:45 ` Geoff Keating
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).