/*
* Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
*
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* Please see the License for the specific language governing rights and
* limitations under the License.
*
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
/* $NetBSD: shm.h,v 1.15 1994/06/29 06:45:17 cgd Exp $ */
#define SHM_R (IPC_R)
#define SHM_W (IPC_W)
+#pragma pack(4)
+
/*
* Technically, we should force all code references to the new structure
* definition, not in just the standards conformance case, and leave the
* legacy interface there for binary compatibility only. Currently, we
* are only forcing this for programs requesting standards conformance.
*/
-#if defined(__POSIX_C_SOURCE) || defined(kernel) || defined(__LP64__)
+#if __DARWIN_UNIX03 || defined(KERNEL)
/*
* Structure used internally.
*
* the third argment to shmctl().
*
* NOTE: The field shm_internal is not meaningful in user space,
- * and mst not be used there.
+ * and must not be used there.
*/
-struct __shmid_ds_new {
+#if (defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE))
+struct shmid_ds
+#else
+#define shmid_ds __shmid_ds_new
+struct __shmid_ds_new
+#endif
+{
struct __ipc_perm_new shm_perm; /* [XSI] Operation permission value */
size_t shm_segsz; /* [XSI] Size of segment in bytes */
pid_t shm_lpid; /* [XSI] PID of last shared memory op */
pid_t shm_cpid; /* [XSI] PID of creator */
- short shm_nattch; /* [XSI] Number of current attaches */
+ shmatt_t shm_nattch; /* [XSI] Number of current attaches */
time_t shm_atime; /* [XSI] Time of last shmat() */
time_t shm_dtime; /* [XSI] Time of last shmdt() */
time_t shm_ctime; /* [XSI] Time of last shmctl() change */
void *shm_internal; /* reserved for kernel use */
};
-#define shmid_ds __shmid_ds_new
-#else /* !_POSIX_C_SOURCE */
+#else /* !__DARWIN_UNIX03 */
#define shmid_ds __shmid_ds_old
-#endif /* !_POSIX_C_SOURCE */
+#endif /* !__DARWIN_UNIX03 */
-#if !defined(__POSIX_C_SOURCE) && !defined(__LP64__)
+#if !__DARWIN_UNIX03
struct __shmid_ds_old {
struct __ipc_perm_old shm_perm; /* [XSI] Operation permission value */
size_t shm_segsz; /* [XSI] Size of segment in bytes */
pid_t shm_lpid; /* [XSI] PID of last shared memory op */
pid_t shm_cpid; /* [XSI] PID of creator */
- short shm_nattch; /* [XSI] Number of current attaches */
+ shmatt_t shm_nattch; /* [XSI] Number of current attaches */
time_t shm_atime; /* [XSI] Time of last shmat() */
time_t shm_dtime; /* [XSI] Time of last shmdt() */
time_t shm_ctime; /* [XSI] Time of last shmctl() change */
void *shm_internal; /* reserved for kernel use */
};
-#endif /* !_POSIX_C_SOURCE */
+#endif /* !__DARWIN_UNIX03 */
+
+#pragma pack()
#ifndef KERNEL
__BEGIN_DECLS
-#ifndef _POSIX_C_SOURCE
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
int shmsys(int, ...);
-#endif /* !_POSIX_C_SOURCE */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
void *shmat (int, const void *, int);
int shmctl(int, int, struct shmid_ds *) __DARWIN_ALIAS(shmctl);
int shmdt(const void *);