From patchwork Tue Oct 21 08:35:05 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Hayward X-Patchwork-Id: 3305 Received: (qmail 11600 invoked by alias); 21 Oct 2014 08:34:53 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 11588 invoked by uid 89); 21 Oct 2014 08:34:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: service87.mimecast.com User-Agent: Microsoft-MacOutlook/14.4.4.140807 Date: Tue, 21 Oct 2014 09:35:05 +0100 Subject: [PATCH] Add ipc.h for aarch64 From: Alan Hayward To: Message-ID: Mime-version: 1.0 X-MC-Unique: 114102109344106301 Copied sysdeps/unix/sysv/linux/mips/bits/ipc.h to (new file) sysdeps/unix/sysv/linux/aarch64/bits/ipc.h Did not change any of the contents. This results in the "mode" file in "ipc_perm" changing from 16bits to 32bits - which matches up with the kernel definition. Note that all other 64bit BE targets have this set in their own ipc.h Without this patch, on Aarch64 Big Endian the mode field would end up in the padding field, resulting in the failure of most LTP semaphore tests. Regards, Alan. Changelog: 2014-10-21 Alan Hayward * sysdeps/unix/sysv/linux/aarch64/bits/ipc.h: New file. + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; +}; diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h b/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h new file mode 100644 index 0000000..649e74a --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h @@ -0,0 +1,54 @@ +/* Copyright (C) 1995-2014 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 + . */ + +#ifndef _SYS_IPC_H +# error "Never use directly; include instead." +#endif + +#include + +/* Mode bits for `msgget', `semget', and `shmget'. */ +#define IPC_CREAT 01000 /* Create key if key does not exist. */ +#define IPC_EXCL 02000 /* Fail if key exists. */ +#define IPC_NOWAIT 04000 /* Return error on wait. */ + +/* Control commands for `msgctl', `semctl', and `shmctl'. */ +#define IPC_RMID 0 /* Remove identifier. */ +#define IPC_SET 1 /* Set `ipc_perm' options. */ +#define IPC_STAT 2 /* Get `ipc_perm' options. */ +#ifdef __USE_GNU +# define IPC_INFO 3 /* See ipcs. */ +#endif + +/* Special key values. */ +#define IPC_PRIVATE ((__key_t) 0) /* Private key. */ + + +/* Data structure used to pass permission information to IPC operations. */ +struct ipc_perm + { + __key_t __key; /* Key. */ + unsigned int uid; /* Owner's user ID. */ + unsigned int gid; /* Owner's group ID. */ + unsigned int cuid; /* Creator's user ID. */ + unsigned int cgid; /* Creator's group ID. */ + unsigned int mode; /* Read/write permission. */ + unsigned short int __seq; /* Sequence number. */ + unsigned short int __pad1;