macOS libc headers: add POSIX headers
parent
4d67c3d887
commit
eed5814d75
|
@ -0,0 +1,121 @@
|
|||
/*
|
||||
* Copyright (c) 2000, 2011 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2001-2009 Ville Laurikari <vl@iki.fi>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1992 Henry Spencer.
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Henry Spencer of the University of Toronto.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)regex.h 8.2 (Berkeley) 1/3/94
|
||||
*/
|
||||
|
||||
/*
|
||||
* Common header for regex.h and xlocale/_regex.h
|
||||
*/
|
||||
|
||||
#ifndef __REGEX_H_
|
||||
#define __REGEX_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <Availability.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
|
||||
/*********/
|
||||
/* types */
|
||||
/*********/
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#include <sys/_types/_wchar_t.h>
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
typedef __darwin_off_t regoff_t;
|
||||
|
||||
typedef struct {
|
||||
int re_magic;
|
||||
size_t re_nsub; /* number of parenthesized subexpressions */
|
||||
const char *re_endp; /* end pointer for REG_PEND */
|
||||
struct re_guts *re_g; /* none of your business :-) */
|
||||
} regex_t;
|
||||
|
||||
typedef struct {
|
||||
regoff_t rm_so; /* start of match */
|
||||
regoff_t rm_eo; /* end of match */
|
||||
} regmatch_t;
|
||||
|
||||
#endif /* !__REGEX_H_ */
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright (c) 2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _NL_ITEM
|
||||
#define _NL_ITEM
|
||||
#include <_types.h>
|
||||
typedef __darwin_nl_item nl_item;
|
||||
#endif /* _NL_ITEM */
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* File: aio.h
|
||||
* Author: Umesh Vaishampayan [umeshv@apple.com]
|
||||
* 05-Feb-2003 umeshv Created.
|
||||
*
|
||||
* Header file for POSIX Asynchronous IO APIs
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _AIO_H_
|
||||
#define _AIO_H_
|
||||
|
||||
#include <sys/aio.h>
|
||||
|
||||
#endif /* _AIO_H_ */
|
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* ++Copyright++ 1983, 1993
|
||||
* -
|
||||
* Copyright (c) 1983, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
* -
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)inet.h 8.1 (Berkeley) 6/2/93
|
||||
* $Id: inet.h,v 1.10 2006/02/01 18:09:47 majka Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_INET_H_
|
||||
#define _ARPA_INET_H_
|
||||
|
||||
/* External definitions for functions in inet(3), addr2ascii(3) */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/_types.h>
|
||||
#include <stdint.h> /* uint32_t uint16_t */
|
||||
#include <machine/endian.h> /* htonl() and family if (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#include <sys/_endian.h> /* htonl() and family if (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
#include <netinet/in.h> /* in_addr */
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
in_addr_t inet_addr(const char *);
|
||||
char *inet_ntoa(struct in_addr);
|
||||
const char *inet_ntop(int, const void *, char *, socklen_t);
|
||||
int inet_pton(int, const char *, void *);
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
int ascii2addr(int, const char *, void *);
|
||||
char *addr2ascii(int, const void *, int, char *);
|
||||
int inet_aton(const char *, struct in_addr *);
|
||||
in_addr_t inet_lnaof(struct in_addr);
|
||||
struct in_addr inet_makeaddr(in_addr_t, in_addr_t);
|
||||
in_addr_t inet_netof(struct in_addr);
|
||||
in_addr_t inet_network(const char *);
|
||||
char *inet_net_ntop(int, const void *, int, char *, __darwin_size_t);
|
||||
int inet_net_pton(int, const char *, void *, __darwin_size_t);
|
||||
char *inet_neta(in_addr_t, char *, __darwin_size_t);
|
||||
unsigned int inet_nsap_addr(const char *, unsigned char *, int);
|
||||
char *inet_nsap_ntoa(int, const unsigned char *, char *);
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_ARPA_INET_H_ */
|
|
@ -0,0 +1,55 @@
|
|||
/*-
|
||||
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/include/cpio.h,v 1.1 2002/08/01 07:18:38 mike Exp $
|
||||
*/
|
||||
|
||||
#ifndef _CPIO_H_
|
||||
#define _CPIO_H_
|
||||
|
||||
#define C_ISSOCK 0140000 /* Socket. */
|
||||
#define C_ISLNK 0120000 /* Symbolic link. */
|
||||
#define C_ISCTG 0110000 /* Reserved. */
|
||||
#define C_ISREG 0100000 /* Regular file. */
|
||||
#define C_ISBLK 0060000 /* Block special. */
|
||||
#define C_ISDIR 0040000 /* Directory. */
|
||||
#define C_ISCHR 0020000 /* Character special. */
|
||||
#define C_ISFIFO 0010000 /* FIFO. */
|
||||
#define C_ISUID 0004000 /* Set user ID. */
|
||||
#define C_ISGID 0002000 /* Set group ID. */
|
||||
#define C_ISVTX 0001000 /* On directories, restricted deletion flag. */
|
||||
#define C_IRUSR 0000400 /* Read by owner. */
|
||||
#define C_IWUSR 0000200 /* Write by owner. */
|
||||
#define C_IXUSR 0000100 /* Execute by owner. */
|
||||
#define C_IRGRP 0000040 /* Read by group. */
|
||||
#define C_IWGRP 0000020 /* Write by group. */
|
||||
#define C_IXGRP 0000010 /* Execute by group. */
|
||||
#define C_IROTH 0000004 /* Read by others. */
|
||||
#define C_IWOTH 0000002 /* Write by others. */
|
||||
#define C_IXOTH 0000001 /* Execute by others. */
|
||||
|
||||
#define MAGIC "070707"
|
||||
|
||||
#endif /* _CPIO_H_ */
|
|
@ -0,0 +1,191 @@
|
|||
/*
|
||||
* Copyright (c) 2000, 2002-2008 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)dirent.h 8.2 (Berkeley) 7/28/94
|
||||
*/
|
||||
|
||||
#ifndef _DIRENT_H_
|
||||
#define _DIRENT_H_
|
||||
|
||||
/*
|
||||
* The kernel defines the format of directory entries
|
||||
*/
|
||||
#include <_types.h>
|
||||
#include <sys/dirent.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <Availability.h>
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_mutex_t */
|
||||
|
||||
struct _telldir; /* forward reference */
|
||||
|
||||
/* structure describing an open directory. */
|
||||
typedef struct {
|
||||
int __dd_fd; /* file descriptor associated with directory */
|
||||
long __dd_loc; /* offset in current buffer */
|
||||
long __dd_size; /* amount of data returned */
|
||||
char *__dd_buf; /* data buffer */
|
||||
int __dd_len; /* size of data buffer */
|
||||
long __dd_seek; /* magic cookie returned */
|
||||
__unused long __padding; /* (__dd_rewind space left for bincompat) */
|
||||
int __dd_flags; /* flags for readdir */
|
||||
__darwin_pthread_mutex_t __dd_lock; /* for thread locking */
|
||||
struct _telldir *__dd_td; /* telldir position recording */
|
||||
} DIR;
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
|
||||
/* definitions for library routines operating on directories. */
|
||||
#define DIRBLKSIZ 1024
|
||||
|
||||
/* flags for opendir2 */
|
||||
#define DTF_HIDEW 0x0001 /* hide whiteout entries */
|
||||
#define DTF_NODUP 0x0002 /* don't return duplicate names */
|
||||
#define DTF_REWIND 0x0004 /* rewind after reading union stack */
|
||||
#define __DTF_READALL 0x0008 /* everything has been read */
|
||||
#define __DTF_SKIPREAD 0x0010 /* assume internal buffer is populated */
|
||||
#define __DTF_ATEND 0x0020 /* there's nothing more to read in the kernel */
|
||||
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
#ifndef KERNEL
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
int closedir(DIR *) __DARWIN_ALIAS(closedir);
|
||||
|
||||
DIR *opendir(const char *) __DARWIN_ALIAS_I(opendir);
|
||||
|
||||
struct dirent *readdir(DIR *) __DARWIN_INODE64(readdir);
|
||||
int readdir_r(DIR *, struct dirent *, struct dirent **) __DARWIN_INODE64(readdir_r);
|
||||
|
||||
void rewinddir(DIR *) __DARWIN_ALIAS_I(rewinddir);
|
||||
|
||||
void seekdir(DIR *, long) __DARWIN_ALIAS_I(seekdir);
|
||||
|
||||
long telldir(DIR *) __DARWIN_ALIAS_I(telldir);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/* Additional functionality provided by:
|
||||
* POSIX.1-2008
|
||||
*/
|
||||
|
||||
#if __DARWIN_C_LEVEL >= 200809L
|
||||
__BEGIN_DECLS
|
||||
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
|
||||
DIR *fdopendir(int) __DARWIN_ALIAS_I(fdopendir);
|
||||
|
||||
int alphasort(const struct dirent **, const struct dirent **) __DARWIN_INODE64(alphasort);
|
||||
|
||||
#if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0)
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#define dirfd(dirp) ({ \
|
||||
DIR *_dirp = (dirp); \
|
||||
int ret = -1; \
|
||||
if (_dirp == NULL || _dirp->__dd_fd < 0) \
|
||||
errno = EINVAL; \
|
||||
else \
|
||||
ret = _dirp->__dd_fd; \
|
||||
ret; \
|
||||
})
|
||||
#else
|
||||
int dirfd(DIR *dirp) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
#endif
|
||||
|
||||
int scandir(const char *, struct dirent ***,
|
||||
int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)) __DARWIN_INODE64(scandir);
|
||||
#ifdef __BLOCKS__
|
||||
#if __has_attribute(noescape)
|
||||
#define __scandir_noescape __attribute__((__noescape__))
|
||||
#else
|
||||
#define __scandir_noescape
|
||||
#endif
|
||||
|
||||
int scandir_b(const char *, struct dirent ***,
|
||||
int (^)(const struct dirent *) __scandir_noescape,
|
||||
int (^)(const struct dirent **, const struct dirent **) __scandir_noescape)
|
||||
__DARWIN_INODE64(scandir_b) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
|
||||
#endif /* __BLOCKS__ */
|
||||
|
||||
__END_DECLS
|
||||
#endif /* __DARWIN_C_LEVEL >= 200809L */
|
||||
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
__BEGIN_DECLS
|
||||
|
||||
int getdirentries(int, char *, int, long *)
|
||||
|
||||
#if __DARWIN_64_BIT_INO_T
|
||||
/*
|
||||
* getdirentries() doesn't work when 64-bit inodes is in effect, so we
|
||||
* generate a link error.
|
||||
*/
|
||||
__asm("_getdirentries_is_not_available_when_64_bit_inodes_are_in_effect")
|
||||
#else /* !__DARWIN_64_BIT_INO_T */
|
||||
__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6, __IPHONE_2_0,__IPHONE_2_0)
|
||||
#endif /* __DARWIN_64_BIT_INO_T */
|
||||
;
|
||||
|
||||
DIR *__opendir2(const char *, int) __DARWIN_ALIAS_I(__opendir2);
|
||||
|
||||
__END_DECLS
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
#endif /* !KERNEL */
|
||||
|
||||
#endif /* !_DIRENT_H_ */
|
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* Copyright (c) 2004-2008 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
/*
|
||||
Based on the dlcompat work done by:
|
||||
Jorge Acereda <jacereda@users.sourceforge.net> &
|
||||
Peter O'Gorman <ogorman@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#ifndef _DLFCN_H_
|
||||
#define _DLFCN_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#include <stdbool.h>
|
||||
#include <Availability.h>
|
||||
|
||||
#ifdef __DRIVERKIT_19_0
|
||||
#define __DYLDDL_DRIVERKIT_UNAVAILABLE __API_UNAVAILABLE(driverkit)
|
||||
#else
|
||||
#define __DYLDDL_DRIVERKIT_UNAVAILABLE
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure filled in by dladdr().
|
||||
*/
|
||||
typedef struct dl_info {
|
||||
const char *dli_fname; /* Pathname of shared object */
|
||||
void *dli_fbase; /* Base address of shared object */
|
||||
const char *dli_sname; /* Name of nearest symbol */
|
||||
void *dli_saddr; /* Address of nearest symbol */
|
||||
} Dl_info;
|
||||
|
||||
extern int dladdr(const void *, Dl_info *);
|
||||
#else
|
||||
#define __DYLDDL_DRIVERKIT_UNAVAILABLE
|
||||
#endif /* not POSIX */
|
||||
|
||||
extern int dlclose(void * __handle) __DYLDDL_DRIVERKIT_UNAVAILABLE;
|
||||
extern char * dlerror(void) __DYLDDL_DRIVERKIT_UNAVAILABLE;
|
||||
extern void * dlopen(const char * __path, int __mode) __DYLDDL_DRIVERKIT_UNAVAILABLE;
|
||||
extern void * dlsym(void * __handle, const char * __symbol) __DYLDDL_DRIVERKIT_UNAVAILABLE;
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
extern bool dlopen_preflight(const char* __path) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0) __DYLDDL_DRIVERKIT_UNAVAILABLE;
|
||||
#endif /* not POSIX */
|
||||
|
||||
|
||||
#define RTLD_LAZY 0x1
|
||||
#define RTLD_NOW 0x2
|
||||
#define RTLD_LOCAL 0x4
|
||||
#define RTLD_GLOBAL 0x8
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define RTLD_NOLOAD 0x10
|
||||
#define RTLD_NODELETE 0x80
|
||||
#define RTLD_FIRST 0x100 /* Mac OS X 10.5 and later */
|
||||
|
||||
/*
|
||||
* Special handle arguments for dlsym().
|
||||
*/
|
||||
#define RTLD_NEXT ((void *) -1) /* Search subsequent objects. */
|
||||
#define RTLD_DEFAULT ((void *) -2) /* Use default search algorithm. */
|
||||
#define RTLD_SELF ((void *) -3) /* Search this and subsequent objects (Mac OS X 10.5 and later) */
|
||||
#define RTLD_MAIN_ONLY ((void *) -5) /* Search main executable only (Mac OS X 10.5 and later) */
|
||||
#endif /* not POSIX */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _DLFCN_H_ */
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#include <sys/fcntl.h>
|
|
@ -0,0 +1,73 @@
|
|||
/*-
|
||||
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/include/fmtmsg.h,v 1.2 2002/08/05 16:37:05 mike Exp $
|
||||
*/
|
||||
|
||||
#ifndef _FMTMSG_H_
|
||||
#define _FMTMSG_H_
|
||||
|
||||
/* Source of condition is... */
|
||||
#define MM_HARD 0x0001 /* ...hardware. */
|
||||
#define MM_SOFT 0x0002 /* ...software. */
|
||||
#define MM_FIRM 0x0004 /* ...fireware. */
|
||||
|
||||
/* Condition detected by... */
|
||||
#define MM_APPL 0x0010 /* ...application. */
|
||||
#define MM_UTIL 0x0020 /* ...utility. */
|
||||
#define MM_OPSYS 0x0040 /* ...operating system. */
|
||||
|
||||
/* Display on... */
|
||||
#define MM_PRINT 0x0100 /* ...standard error. */
|
||||
#define MM_CONSOLE 0x0200 /* ...system console. */
|
||||
|
||||
#define MM_RECOVER 0x1000 /* Recoverable error. */
|
||||
#define MM_NRECOV 0x2000 /* Non-recoverable error. */
|
||||
|
||||
/* Severity levels. */
|
||||
#define MM_NOSEV 0 /* No severity level provided. */
|
||||
#define MM_HALT 1 /* Error causing application to halt. */
|
||||
#define MM_ERROR 2 /* Non-fault fault. */
|
||||
#define MM_WARNING 3 /* Unusual non-error condition. */
|
||||
#define MM_INFO 4 /* Informative message. */
|
||||
|
||||
/* Null options. */
|
||||
#define MM_NULLLBL (char *)0
|
||||
#define MM_NULLSEV 0
|
||||
#define MM_NULLMC 0L
|
||||
#define MM_NULLTXT (char *)0
|
||||
#define MM_NULLACT (char *)0
|
||||
#define MM_NULLTAG (char *)0
|
||||
|
||||
/* Return values. */
|
||||
#define MM_OK 0 /* Success. */
|
||||
#define MM_NOMSG 1 /* Failed to output to stderr. */
|
||||
#define MM_NOCON 2 /* Failed to output to console. */
|
||||
#define MM_NOTOK 3 /* Failed to output anything. */
|
||||
|
||||
int fmtmsg(long, const char *, int, const char *, const char *,
|
||||
const char *);
|
||||
|
||||
#endif /* !_FMTMSG_H_ */
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)fnmatch.h 8.1 (Berkeley) 6/2/93
|
||||
*/
|
||||
|
||||
#ifndef _FNMATCH_H_
|
||||
#define _FNMATCH_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#define FNM_NOMATCH 1 /* Match failed. */
|
||||
|
||||
#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */
|
||||
#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */
|
||||
#define FNM_PERIOD 0x04 /* Period must be matched by period. */
|
||||
|
||||
#define FNM_NOSYS (-1) /* Reserved. */
|
||||
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
#define FNM_LEADING_DIR 0x08 /* Ignore /<tail> after Imatch. */
|
||||
#define FNM_CASEFOLD 0x10 /* Case insensitive search. */
|
||||
#define FNM_IGNORECASE FNM_CASEFOLD
|
||||
#define FNM_FILE_NAME FNM_PATHNAME
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
int fnmatch(const char *, const char *, int) __DARWIN_ALIAS(fnmatch);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_FNMATCH_H_ */
|
|
@ -0,0 +1,60 @@
|
|||
/* $OpenBSD: ftw.h,v 1.1 2003/07/21 21:13:18 millert Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* Sponsored in part by the Defense Advanced Research Projects
|
||||
* Agency (DARPA) and Air Force Research Laboratory, Air Force
|
||||
* Materiel Command, USAF, under agreement number F39502-99-1-0512.
|
||||
*/
|
||||
|
||||
#ifndef _FTW_H
|
||||
#define _FTW_H
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/*
|
||||
* Valid flags for the 3rd argument to the function that is passed as the
|
||||
* second argument to ftw(3) and nftw(3). Say it three times fast!
|
||||
*/
|
||||
#define FTW_F 0 /* File. */
|
||||
#define FTW_D 1 /* Directory. */
|
||||
#define FTW_DNR 2 /* Directory without read permission. */
|
||||
#define FTW_DP 3 /* Directory with subdirectories visited. */
|
||||
#define FTW_NS 4 /* Unknown type; stat() failed. */
|
||||
#define FTW_SL 5 /* Symbolic link. */
|
||||
#define FTW_SLN 6 /* Sym link that names a nonexistent file. */
|
||||
|
||||
/*
|
||||
* Flags for use as the 4th argument to nftw(3). These may be ORed together.
|
||||
*/
|
||||
#define FTW_PHYS 0x01 /* Physical walk, don't follow sym links. */
|
||||
#define FTW_MOUNT 0x02 /* The walk does not cross a mount point. */
|
||||
#define FTW_DEPTH 0x04 /* Subdirs visited before the dir itself. */
|
||||
#define FTW_CHDIR 0x08 /* Change to a directory before reading it. */
|
||||
|
||||
struct FTW {
|
||||
int base;
|
||||
int level;
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
int ftw(const char *, int (*)(const char *, const struct stat *, int), int)
|
||||
__DARWIN_ALIAS_I(ftw);
|
||||
int nftw(const char *, int (*)(const char *, const struct stat *, int,
|
||||
struct FTW *), int, int) __DARWIN_ALIAS_I(nftw);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_FTW_H */
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright (c) 2013 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef __GETHOSTUUID_H
|
||||
#define __GETHOSTUUID_H
|
||||
|
||||
#include <sys/_types/_timespec.h>
|
||||
#include <sys/_types/_uuid_t.h>
|
||||
#include <Availability.h>
|
||||
|
||||
#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0)
|
||||
int gethostuuid(uuid_t, const struct timespec *) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_NA, __MAC_NA, __IPHONE_2_0, __IPHONE_5_0, "gethostuuid() is no longer supported");
|
||||
#else
|
||||
int gethostuuid(uuid_t, const struct timespec *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_NA);
|
||||
#endif
|
||||
|
||||
#endif /* __GETHOSTUUID_H */
|
|
@ -0,0 +1,130 @@
|
|||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Guido van Rossum.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)glob.h 8.1 (Berkeley) 6/2/93
|
||||
* $FreeBSD: /repoman/r/ncvs/src/include/glob.h,v 1.7 2002/07/17 04:58:09 mikeh Exp $
|
||||
*/
|
||||
|
||||
#ifndef _GLOB_H_
|
||||
#define _GLOB_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <Availability.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
struct dirent;
|
||||
struct stat;
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
typedef struct {
|
||||
size_t gl_pathc; /* Count of total paths so far. */
|
||||
int gl_matchc; /* Count of paths matching pattern. */
|
||||
size_t gl_offs; /* Reserved at beginning of gl_pathv. */
|
||||
int gl_flags; /* Copy of flags parameter to glob. */
|
||||
char **gl_pathv; /* List of paths matching pattern. */
|
||||
/* Copy of errfunc parameter to glob. */
|
||||
#ifdef __BLOCKS__
|
||||
union {
|
||||
#endif /* __BLOCKS__ */
|
||||
int (*gl_errfunc)(const char *, int);
|
||||
#ifdef __BLOCKS__
|
||||
int (^gl_errblk)(const char *, int);
|
||||
};
|
||||
#endif /* __BLOCKS__ */
|
||||
|
||||
/*
|
||||
* Alternate filesystem access methods for glob; replacement
|
||||
* versions of closedir(3), readdir(3), opendir(3), stat(2)
|
||||
* and lstat(2).
|
||||
*/
|
||||
void (*gl_closedir)(void *);
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
struct dirent *(*gl_readdir)(void *);
|
||||
#else /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
void *(*gl_readdir)(void *);
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
void *(*gl_opendir)(const char *);
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
int (*gl_lstat)(const char *, struct stat *);
|
||||
int (*gl_stat)(const char *, struct stat *);
|
||||
#else /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
int (*gl_lstat)(const char *, void *);
|
||||
int (*gl_stat)(const char *, void *);
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
} glob_t;
|
||||
|
||||
/* Believed to have been introduced in 1003.2-1992 */
|
||||
#define GLOB_APPEND 0x0001 /* Append to output from previous call. */
|
||||
#define GLOB_DOOFFS 0x0002 /* Use gl_offs. */
|
||||
#define GLOB_ERR 0x0004 /* Return on error. */
|
||||
#define GLOB_MARK 0x0008 /* Append / to matching directories. */
|
||||
#define GLOB_NOCHECK 0x0010 /* Return pattern itself if nothing matches. */
|
||||
#define GLOB_NOSORT 0x0020 /* Don't sort. */
|
||||
#define GLOB_NOESCAPE 0x2000 /* Disable backslash escaping. */
|
||||
|
||||
/* Error values returned by glob(3) */
|
||||
#define GLOB_NOSPACE (-1) /* Malloc call failed. */
|
||||
#define GLOB_ABORTED (-2) /* Unignored error. */
|
||||
#define GLOB_NOMATCH (-3) /* No match and GLOB_NOCHECK was not set. */
|
||||
#define GLOB_NOSYS (-4) /* Obsolete: source comptability only. */
|
||||
|
||||
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
|
||||
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
|
||||
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
|
||||
#define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */
|
||||
#define GLOB_QUOTE 0x0400 /* Quote special chars with \. */
|
||||
#define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */
|
||||
#define GLOB_LIMIT 0x1000 /* limit number of returned paths */
|
||||
#ifdef __BLOCKS__
|
||||
#define _GLOB_ERR_BLOCK 0x80000000 /* (internal) error callback is a block */
|
||||
#endif /* __BLOCKS__ */
|
||||
|
||||
/* source compatibility, these are the old names */
|
||||
#define GLOB_MAXPATH GLOB_LIMIT
|
||||
#define GLOB_ABEND GLOB_ABORTED
|
||||
|
||||
__BEGIN_DECLS
|
||||
int glob(const char * __restrict, int, int (*)(const char *, int),
|
||||
glob_t * __restrict) __DARWIN_INODE64(glob);
|
||||
#ifdef __BLOCKS__
|
||||
#if __has_attribute(noescape)
|
||||
#define __glob_noescape __attribute__((__noescape__))
|
||||
#else
|
||||
#define __glob_noescape
|
||||
#endif
|
||||
int glob_b(const char * __restrict, int, int (^)(const char *, int) __glob_noescape,
|
||||
glob_t * __restrict) __DARWIN_INODE64(glob_b) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
|
||||
#endif /* __BLOCKS__ */
|
||||
void globfree(glob_t *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_GLOB_H_ */
|
|
@ -0,0 +1,93 @@
|
|||
/*-
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)grp.h 8.2 (Berkeley) 1/21/94
|
||||
*/
|
||||
/* Portions copyright (c) 2000-2018 Apple Inc. All rights reserved. */
|
||||
|
||||
#ifndef _GRP_H_
|
||||
#define _GRP_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_gid_t.h> /* [XBD] */
|
||||
#include <sys/_types/_size_t.h> /* SUSv4 */
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define _PATH_GROUP "/etc/group"
|
||||
#endif
|
||||
|
||||
struct group {
|
||||
char *gr_name; /* [XBD] group name */
|
||||
char *gr_passwd; /* [???] group password */
|
||||
gid_t gr_gid; /* [XBD] group id */
|
||||
char **gr_mem; /* [XBD] group members */
|
||||
};
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
/* [XBD] */
|
||||
struct group *getgrgid(gid_t);
|
||||
struct group *getgrnam(const char *);
|
||||
/* [TSF] */
|
||||
int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **);
|
||||
int getgrnam_r(const char *, struct group *, char *, size_t, struct group **);
|
||||
/* [XSI] */
|
||||
struct group *getgrent(void);
|
||||
void setgrent(void);
|
||||
void endgrent(void);
|
||||
__END_DECLS
|
||||
|
||||
#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
|
||||
#include <uuid/uuid.h>
|
||||
__BEGIN_DECLS
|
||||
char *group_from_gid(gid_t, int);
|
||||
struct group *getgruuid(uuid_t);
|
||||
int getgruuid_r(uuid_t, struct group *, char *, size_t, struct group **);
|
||||
__END_DECLS
|
||||
#endif
|
||||
|
||||
#if !defined(_XOPEN_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
__BEGIN_DECLS
|
||||
#if (!defined(LIBINFO_INSTALL_API) || !LIBINFO_INSTALL_API)
|
||||
void setgrfile(const char *);
|
||||
#endif
|
||||
int setgroupent(int);
|
||||
__END_DECLS
|
||||
#endif
|
||||
|
||||
#endif /* !_GRP_H_ */
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (c) 2008 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _I386__PARAM_H_
|
||||
#define _I386__PARAM_H_
|
||||
|
||||
#include <i386/_types.h>
|
||||
|
||||
/*
|
||||
* Round p (pointer or byte index) up to a correctly-aligned value for all
|
||||
* data types (int, long, ...). The result is unsigned int and must be
|
||||
* cast to any desired pointer type.
|
||||
*/
|
||||
#define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1)
|
||||
#define __DARWIN_ALIGN(p) ((__darwin_size_t)((char *)(__darwin_size_t)(p) + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
|
||||
|
||||
#define __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1)
|
||||
#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((char *)(__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
|
||||
|
||||
|
||||
#endif /* _I386__PARAM_H_ */
|
|
@ -0,0 +1,94 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
#ifndef _I386_EFLAGS_H_
|
||||
#define _I386_EFLAGS_H_
|
||||
|
||||
/*
|
||||
* i386 flags register
|
||||
*/
|
||||
|
||||
#ifndef EFL_CF
|
||||
#define EFL_CF 0x00000001 /* carry */
|
||||
#define EFL_PF 0x00000004 /* parity of low 8 bits */
|
||||
#define EFL_AF 0x00000010 /* carry out of bit 3 */
|
||||
#define EFL_ZF 0x00000040 /* zero */
|
||||
#define EFL_SF 0x00000080 /* sign */
|
||||
#define EFL_TF 0x00000100 /* trace trap */
|
||||
#define EFL_IF 0x00000200 /* interrupt enable */
|
||||
#define EFL_DF 0x00000400 /* direction */
|
||||
#define EFL_OF 0x00000800 /* overflow */
|
||||
#define EFL_IOPL 0x00003000 /* IO privilege level: */
|
||||
#define EFL_IOPL_KERNEL 0x00000000 /* kernel */
|
||||
#define EFL_IOPL_USER 0x00003000 /* user */
|
||||
#define EFL_NT 0x00004000 /* nested task */
|
||||
#define EFL_RF 0x00010000 /* resume without tracing */
|
||||
#define EFL_VM 0x00020000 /* virtual 8086 mode */
|
||||
#define EFL_AC 0x00040000 /* alignment check */
|
||||
#define EFL_VIF 0x00080000 /* virtual interrupt flag */
|
||||
#define EFL_VIP 0x00100000 /* virtual interrupt pending */
|
||||
#define EFL_ID 0x00200000 /* cpuID instruction */
|
||||
#endif
|
||||
|
||||
#define EFL_CLR 0xfff88028
|
||||
#define EFL_SET 0x00000002
|
||||
|
||||
#define EFL_USER_SET (EFL_IF)
|
||||
#define EFL_USER_CLEAR (EFL_IOPL|EFL_NT|EFL_RF)
|
||||
|
||||
#endif /* _I386_EFLAGS_H_ */
|
|
@ -0,0 +1,193 @@
|
|||
/* Copyright (C) 1999-2003, 2005-2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU LIBICONV Library.
|
||||
|
||||
The GNU LIBICONV 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 LIBICONV 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 LIBICONV Library; see the file COPYING.LIB.
|
||||
If not, write to the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* When installed, this file is called "iconv.h". */
|
||||
|
||||
#ifndef _LIBICONV_H
|
||||
#define _LIBICONV_H
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
|
||||
#define _LIBICONV_VERSION 0x010B /* version number: (major<<8) + minor */
|
||||
|
||||
#if BUILDING_LIBICONV
|
||||
#define __LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default")))
|
||||
#else
|
||||
#define __LIBICONV_DLL_EXPORTED
|
||||
#endif
|
||||
extern __LIBICONV_DLL_EXPORTED int _libiconv_version; /* Likewise */
|
||||
|
||||
/* We would like to #include any system header file which could define
|
||||
iconv_t, 1. in order to eliminate the risk that the user gets compilation
|
||||
errors because some other system header file includes /usr/include/iconv.h
|
||||
which defines iconv_t or declares iconv after this file, 2. when compiling
|
||||
for LIBICONV_PLUG, we need the proper iconv_t type in order to produce
|
||||
binary compatible code.
|
||||
But gcc's #include_next is not portable. Thus, once libiconv's iconv.h
|
||||
has been installed in /usr/local/include, there is no way any more to
|
||||
include the original /usr/include/iconv.h. We simply have to get away
|
||||
without it.
|
||||
Ad 1. The risk that a system header file does
|
||||
#include "iconv.h" or #include_next "iconv.h"
|
||||
is small. They all do #include <iconv.h>.
|
||||
Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It
|
||||
has to be a scalar type because (iconv_t)(-1) is a possible return value
|
||||
from iconv_open().) */
|
||||
|
||||
/* Define iconv_t ourselves. */
|
||||
#ifndef _ICONV_T
|
||||
#define _ICONV_T
|
||||
typedef void* iconv_t;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Allocates descriptor for code conversion from encoding `fromcode' to
|
||||
encoding `tocode'. */
|
||||
extern __LIBICONV_DLL_EXPORTED iconv_t iconv_open (const char* __tocode, const char* __fromcode);
|
||||
|
||||
/* Converts, using conversion descriptor `cd', at most `*inbytesleft' bytes
|
||||
starting at `*inbuf', writing at most `*outbytesleft' bytes starting at
|
||||
`*outbuf'.
|
||||
Decrements `*inbytesleft' and increments `*inbuf' by the same amount.
|
||||
Decrements `*outbytesleft' and increments `*outbuf' by the same amount. */
|
||||
extern __LIBICONV_DLL_EXPORTED size_t iconv (iconv_t __cd, char* * __restrict __inbuf, size_t * __restrict __inbytesleft, char* * __restrict __outbuf, size_t * __restrict __outbytesleft);
|
||||
|
||||
/* Frees resources allocated for conversion descriptor `cd'. */
|
||||
extern __LIBICONV_DLL_EXPORTED int iconv_close (iconv_t _cd);
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
|
||||
/* Nonstandard extensions. */
|
||||
|
||||
#include <sys/_types/_wchar_t.h>
|
||||
|
||||
/* Control of attributes. */
|
||||
extern __LIBICONV_DLL_EXPORTED int iconvctl (iconv_t cd, int request, void* argument);
|
||||
|
||||
/* Hook performed after every successful conversion of a Unicode character. */
|
||||
typedef void (*iconv_unicode_char_hook) (unsigned int uc, void* data);
|
||||
/* Hook performed after every successful conversion of a wide character. */
|
||||
typedef void (*iconv_wide_char_hook) (wchar_t wc, void* data);
|
||||
/* Set of hooks. */
|
||||
struct iconv_hooks {
|
||||
iconv_unicode_char_hook uc_hook;
|
||||
iconv_wide_char_hook wc_hook;
|
||||
void* data;
|
||||
};
|
||||
|
||||
/* Fallback function. Invoked when a small number of bytes could not be
|
||||
converted to a Unicode character. This function should process all
|
||||
bytes from inbuf and may produce replacement Unicode characters by calling
|
||||
the write_replacement callback repeatedly. */
|
||||
typedef void (*iconv_unicode_mb_to_uc_fallback)
|
||||
(const char* inbuf, size_t inbufsize,
|
||||
void (*write_replacement) (const unsigned int *buf, size_t buflen,
|
||||
void* callback_arg),
|
||||
void* callback_arg,
|
||||
void* data);
|
||||
/* Fallback function. Invoked when a Unicode character could not be converted
|
||||
to the target encoding. This function should process the character and
|
||||
may produce replacement bytes (in the target encoding) by calling the
|
||||
write_replacement callback repeatedly. */
|
||||
typedef void (*iconv_unicode_uc_to_mb_fallback)
|
||||
(unsigned int code,
|
||||
void (*write_replacement) (const char *buf, size_t buflen,
|
||||
void* callback_arg),
|
||||
void* callback_arg,
|
||||
void* data);
|
||||
#if 1
|
||||
/* Fallback function. Invoked when a number of bytes could not be converted to
|
||||
a wide character. This function should process all bytes from inbuf and may
|
||||
produce replacement wide characters by calling the write_replacement
|
||||
callback repeatedly. */
|
||||
typedef void (*iconv_wchar_mb_to_wc_fallback)
|
||||
(const char* inbuf, size_t inbufsize,
|
||||
void (*write_replacement) (const wchar_t *buf, size_t buflen,
|
||||
void* callback_arg),
|
||||
void* callback_arg,
|
||||
void* data);
|
||||
/* Fallback function. Invoked when a wide character could not be converted to
|
||||
the target encoding. This function should process the character and may
|
||||
produce replacement bytes (in the target encoding) by calling the
|
||||
write_replacement callback repeatedly. */
|
||||
typedef void (*iconv_wchar_wc_to_mb_fallback)
|
||||
(wchar_t code,
|
||||
void (*write_replacement) (const char *buf, size_t buflen,
|
||||
void* callback_arg),
|
||||
void* callback_arg,
|
||||
void* data);
|
||||
#else
|
||||
/* If the wchar_t type does not exist, these two fallback functions are never
|
||||
invoked. Their argument list therefore does not matter. */
|
||||
typedef void (*iconv_wchar_mb_to_wc_fallback) ();
|
||||
typedef void (*iconv_wchar_wc_to_mb_fallback) ();
|
||||
#endif
|
||||
/* Set of fallbacks. */
|
||||
struct iconv_fallbacks {
|
||||
iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback;
|
||||
iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback;
|
||||
iconv_wchar_mb_to_wc_fallback mb_to_wc_fallback;
|
||||
iconv_wchar_wc_to_mb_fallback wc_to_mb_fallback;
|
||||
void* data;
|
||||
};
|
||||
|
||||
/* Requests for iconvctl. */
|
||||
#define ICONV_TRIVIALP 0 /* int *argument */
|
||||
#define ICONV_GET_TRANSLITERATE 1 /* int *argument */
|
||||
#define ICONV_SET_TRANSLITERATE 2 /* const int *argument */
|
||||
#define ICONV_GET_DISCARD_ILSEQ 3 /* int *argument */
|
||||
#define ICONV_SET_DISCARD_ILSEQ 4 /* const int *argument */
|
||||
#define ICONV_SET_HOOKS 5 /* const struct iconv_hooks *argument */
|
||||
#define ICONV_SET_FALLBACKS 6 /* const struct iconv_fallbacks *argument */
|
||||
|
||||
/* Listing of locale independent encodings. */
|
||||
extern __LIBICONV_DLL_EXPORTED void iconvlist (int (*do_one) (unsigned int namescount,
|
||||
const char * const * names,
|
||||
void* data),
|
||||
void* data);
|
||||
|
||||
/* Canonicalize an encoding name.
|
||||
The result is either a canonical encoding name, or name itself. */
|
||||
extern __LIBICONV_DLL_EXPORTED const char * iconv_canonicalize (const char * name);
|
||||
|
||||
/* Support for relocatable packages. */
|
||||
|
||||
/* Sets the original and the current installation prefix of the package.
|
||||
Relocation simply replaces a pathname starting with the original prefix
|
||||
by the corresponding pathname with the current prefix instead. Both
|
||||
prefixes should be directory names without trailing slash (i.e. use ""
|
||||
instead of "/"). */
|
||||
extern __LIBICONV_DLL_EXPORTED void libiconv_set_relocation_prefix (const char *orig_prefix,
|
||||
const char *curr_prefix);
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _LIBICONV_H */
|
|
@ -0,0 +1,120 @@
|
|||
/*-
|
||||
* Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: /repoman/r/ncvs/src/include/langinfo.h,v 1.6 2002/09/18 05:54:25 mike Exp $
|
||||
*/
|
||||
|
||||
#ifndef _LANGINFO_H_
|
||||
#define _LANGINFO_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <_types/_nl_item.h>
|
||||
|
||||
#define CODESET 0 /* codeset name */
|
||||
#define D_T_FMT 1 /* string for formatting date and time */
|
||||
#define D_FMT 2 /* date format string */
|
||||
#define T_FMT 3 /* time format string */
|
||||
#define T_FMT_AMPM 4 /* a.m. or p.m. time formatting string */
|
||||
#define AM_STR 5 /* Ante Meridian affix */
|
||||
#define PM_STR 6 /* Post Meridian affix */
|
||||
|
||||
/* week day names */
|
||||
#define DAY_1 7
|
||||
#define DAY_2 8
|
||||
#define DAY_3 9
|
||||
#define DAY_4 10
|
||||
#define DAY_5 11
|
||||
#define DAY_6 12
|
||||
#define DAY_7 13
|
||||
|
||||
/* abbreviated week day names */
|
||||
#define ABDAY_1 14
|
||||
#define ABDAY_2 15
|
||||
#define ABDAY_3 16
|
||||
#define ABDAY_4 17
|
||||
#define ABDAY_5 18
|
||||
#define ABDAY_6 19
|
||||
#define ABDAY_7 20
|
||||
|
||||
/* month names */
|
||||
#define MON_1 21
|
||||
#define MON_2 22
|
||||
#define MON_3 23
|
||||
#define MON_4 24
|
||||
#define MON_5 25
|
||||
#define MON_6 26
|
||||
#define MON_7 27
|
||||
#define MON_8 28
|
||||
#define MON_9 29
|
||||
#define MON_10 30
|
||||
#define MON_11 31
|
||||
#define MON_12 32
|
||||
|
||||
/* abbreviated month names */
|
||||
#define ABMON_1 33
|
||||
#define ABMON_2 34
|
||||
#define ABMON_3 35
|
||||
#define ABMON_4 36
|
||||
#define ABMON_5 37
|
||||
#define ABMON_6 38
|
||||
#define ABMON_7 39
|
||||
#define ABMON_8 40
|
||||
#define ABMON_9 41
|
||||
#define ABMON_10 42
|
||||
#define ABMON_11 43
|
||||
#define ABMON_12 44
|
||||
|
||||
#define ERA 45 /* era description segments */
|
||||
#define ERA_D_FMT 46 /* era date format string */
|
||||
#define ERA_D_T_FMT 47 /* era date and time format string */
|
||||
#define ERA_T_FMT 48 /* era time format string */
|
||||
#define ALT_DIGITS 49 /* alternative symbols for digits */
|
||||
|
||||
#define RADIXCHAR 50 /* radix char */
|
||||
#define THOUSEP 51 /* separator for thousands */
|
||||
|
||||
#define YESEXPR 52 /* affirmative response expression */
|
||||
#define NOEXPR 53 /* negative response expression */
|
||||
|
||||
#if (__DARWIN_C_LEVEL > __DARWIN_C_ANSI && __DARWIN_C_LEVEL < 200112L) || __DARWIN_C_LEVEL == __DARWIN_C_FULL
|
||||
#define YESSTR 54 /* affirmative response for yes/no queries */
|
||||
#define NOSTR 55 /* negative response for yes/no queries */
|
||||
#endif
|
||||
|
||||
#define CRNCYSTR 56 /* currency symbol */
|
||||
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
#define D_MD_ORDER 57 /* month/day order (local extension) */
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
char *nl_langinfo(nl_item);
|
||||
__END_DECLS
|
||||
|
||||
#ifdef _USE_EXTENDED_LOCALES_
|
||||
#include <xlocale/_langinfo.h>
|
||||
#endif /* _USE_EXTENDED_LOCALES_ */
|
||||
|
||||
#endif /* !_LANGINFO_H_ */
|
|
@ -0,0 +1,63 @@
|
|||
/* $OpenBSD: libgen.h,v 1.4 1999/05/28 22:00:22 espie Exp $ */
|
||||
/* $FreeBSD: src/include/libgen.h,v 1.1.2.1 2000/11/12 18:01:51 adrian Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _LIBGEN_H_
|
||||
#define _LIBGEN_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#if __DARWIN_UNIX03
|
||||
|
||||
char *basename(char *);
|
||||
char *dirname(char *);
|
||||
|
||||
#else /* !__DARWIN_UNIX03 */
|
||||
|
||||
char *basename(const char *);
|
||||
char *dirname(const char *);
|
||||
|
||||
#endif /* __DARWIN_UNIX_03 */
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#include <Availability.h>
|
||||
char *basename_r(const char *, char *)
|
||||
__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
|
||||
__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
|
||||
|
||||
char *dirname_r(const char *, char *)
|
||||
__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
|
||||
__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _LIBGEN_H_ */
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
* File: mach/boolean.h
|
||||
*
|
||||
* Boolean data type.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_BOOLEAN_H_
|
||||
#define _MACH_BOOLEAN_H_
|
||||
|
||||
/*
|
||||
* Pick up "boolean_t" type definition
|
||||
*/
|
||||
|
||||
#ifndef ASSEMBLER
|
||||
#include <mach/machine/boolean.h>
|
||||
#endif /* ASSEMBLER */
|
||||
|
||||
/*
|
||||
* Define TRUE and FALSE if not defined.
|
||||
*/
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif /* TRUE */
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif /* FALSE */
|
||||
|
||||
#endif /* _MACH_BOOLEAN_H_ */
|
|
@ -0,0 +1,204 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_EXCEPTION_TYPES_H_
|
||||
#define _MACH_EXCEPTION_TYPES_H_
|
||||
|
||||
#include <mach/machine/exception.h>
|
||||
|
||||
/*
|
||||
* Machine-independent exception definitions.
|
||||
*/
|
||||
|
||||
#define EXC_BAD_ACCESS 1 /* Could not access memory */
|
||||
/* Code contains kern_return_t describing error. */
|
||||
/* Subcode contains bad memory address. */
|
||||
|
||||
#define EXC_BAD_INSTRUCTION 2 /* Instruction failed */
|
||||
/* Illegal or undefined instruction or operand */
|
||||
|
||||
#define EXC_ARITHMETIC 3 /* Arithmetic exception */
|
||||
/* Exact nature of exception is in code field */
|
||||
|
||||
#define EXC_EMULATION 4 /* Emulation instruction */
|
||||
/* Emulation support instruction encountered */
|
||||
/* Details in code and subcode fields */
|
||||
|
||||
#define EXC_SOFTWARE 5 /* Software generated exception */
|
||||
/* Exact exception is in code field. */
|
||||
/* Codes 0 - 0xFFFF reserved to hardware */
|
||||
/* Codes 0x10000 - 0x1FFFF reserved for OS emulation (Unix) */
|
||||
|
||||
#define EXC_BREAKPOINT 6 /* Trace, breakpoint, etc. */
|
||||
/* Details in code field. */
|
||||
|
||||
#define EXC_SYSCALL 7 /* System calls. */
|
||||
|
||||
#define EXC_MACH_SYSCALL 8 /* Mach system calls. */
|
||||
|
||||
#define EXC_RPC_ALERT 9 /* RPC alert */
|
||||
|
||||
#define EXC_CRASH 10 /* Abnormal process exit */
|
||||
|
||||
#define EXC_RESOURCE 11 /* Hit resource consumption limit */
|
||||
/* Exact resource is in code field. */
|
||||
|
||||
#define EXC_GUARD 12 /* Violated guarded resource protections */
|
||||
|
||||
#define EXC_CORPSE_NOTIFY 13 /* Abnormal process exited to corpse state */
|
||||
|
||||
#define EXC_CORPSE_VARIANT_BIT 0x100 /* bit set for EXC_*_CORPSE variants of EXC_* */
|
||||
|
||||
|
||||
/*
|
||||
* Machine-independent exception behaviors
|
||||
*/
|
||||
|
||||
# define EXCEPTION_DEFAULT 1
|
||||
/* Send a catch_exception_raise message including the identity.
|
||||
*/
|
||||
|
||||
# define EXCEPTION_STATE 2
|
||||
/* Send a catch_exception_raise_state message including the
|
||||
* thread state.
|
||||
*/
|
||||
|
||||
# define EXCEPTION_STATE_IDENTITY 3
|
||||
/* Send a catch_exception_raise_state_identity message including
|
||||
* the thread identity and state.
|
||||
*/
|
||||
|
||||
#define MACH_EXCEPTION_ERRORS 0x40000000
|
||||
/* include additional exception specific errors, not used yet. */
|
||||
|
||||
#define MACH_EXCEPTION_CODES 0x80000000
|
||||
/* Send 64-bit code and subcode in the exception header */
|
||||
|
||||
#define MACH_EXCEPTION_MASK (MACH_EXCEPTION_CODES | MACH_EXCEPTION_ERRORS)
|
||||
/*
|
||||
* Masks for exception definitions, above
|
||||
* bit zero is unused, therefore 1 word = 31 exception types
|
||||
*/
|
||||
|
||||
#define EXC_MASK_BAD_ACCESS (1 << EXC_BAD_ACCESS)
|
||||
#define EXC_MASK_BAD_INSTRUCTION (1 << EXC_BAD_INSTRUCTION)
|
||||
#define EXC_MASK_ARITHMETIC (1 << EXC_ARITHMETIC)
|
||||
#define EXC_MASK_EMULATION (1 << EXC_EMULATION)
|
||||
#define EXC_MASK_SOFTWARE (1 << EXC_SOFTWARE)
|
||||
#define EXC_MASK_BREAKPOINT (1 << EXC_BREAKPOINT)
|
||||
#define EXC_MASK_SYSCALL (1 << EXC_SYSCALL)
|
||||
#define EXC_MASK_MACH_SYSCALL (1 << EXC_MACH_SYSCALL)
|
||||
#define EXC_MASK_RPC_ALERT (1 << EXC_RPC_ALERT)
|
||||
#define EXC_MASK_CRASH (1 << EXC_CRASH)
|
||||
#define EXC_MASK_RESOURCE (1 << EXC_RESOURCE)
|
||||
#define EXC_MASK_GUARD (1 << EXC_GUARD)
|
||||
#define EXC_MASK_CORPSE_NOTIFY (1 << EXC_CORPSE_NOTIFY)
|
||||
|
||||
#define EXC_MASK_ALL (EXC_MASK_BAD_ACCESS | \
|
||||
EXC_MASK_BAD_INSTRUCTION | \
|
||||
EXC_MASK_ARITHMETIC | \
|
||||
EXC_MASK_EMULATION | \
|
||||
EXC_MASK_SOFTWARE | \
|
||||
EXC_MASK_BREAKPOINT | \
|
||||
EXC_MASK_SYSCALL | \
|
||||
EXC_MASK_MACH_SYSCALL | \
|
||||
EXC_MASK_RPC_ALERT | \
|
||||
EXC_MASK_RESOURCE | \
|
||||
EXC_MASK_GUARD | \
|
||||
EXC_MASK_MACHINE)
|
||||
|
||||
|
||||
#define FIRST_EXCEPTION 1 /* ZERO is illegal */
|
||||
|
||||
/*
|
||||
* Machine independent codes for EXC_SOFTWARE
|
||||
* Codes 0x10000 - 0x1FFFF reserved for OS emulation (Unix)
|
||||
* 0x10000 - 0x10002 in use for unix signals
|
||||
* 0x20000 - 0x2FFFF reserved for MACF
|
||||
*/
|
||||
#define EXC_SOFT_SIGNAL 0x10003 /* Unix signal exceptions */
|
||||
|
||||
#define EXC_MACF_MIN 0x20000 /* MACF exceptions */
|
||||
#define EXC_MACF_MAX 0x2FFFF
|
||||
|
||||
#ifndef ASSEMBLER
|
||||
|
||||
#include <mach/port.h>
|
||||
#include <mach/thread_status.h>
|
||||
#include <mach/machine/vm_types.h>
|
||||
/*
|
||||
* Exported types
|
||||
*/
|
||||
|
||||
typedef int exception_type_t;
|
||||
typedef integer_t exception_data_type_t;
|
||||
typedef int64_t mach_exception_data_type_t;
|
||||
typedef int exception_behavior_t;
|
||||
typedef exception_data_type_t *exception_data_t;
|
||||
typedef mach_exception_data_type_t *mach_exception_data_t;
|
||||
typedef unsigned int exception_mask_t;
|
||||
typedef exception_mask_t *exception_mask_array_t;
|
||||
typedef exception_behavior_t *exception_behavior_array_t;
|
||||
typedef thread_state_flavor_t *exception_flavor_array_t;
|
||||
typedef mach_port_t *exception_port_array_t;
|
||||
typedef mach_exception_data_type_t mach_exception_code_t;
|
||||
typedef mach_exception_data_type_t mach_exception_subcode_t;
|
||||
|
||||
#endif /* ASSEMBLER */
|
||||
|
||||
#endif /* _MACH_EXCEPTION_TYPES_H_ */
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
/*
|
||||
* File: boolean.h
|
||||
*
|
||||
* Boolean type, for I386.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_BOOLEAN_H_
|
||||
#define _MACH_I386_BOOLEAN_H_
|
||||
|
||||
#if defined(__x86_64__) && !defined(KERNEL)
|
||||
typedef unsigned int boolean_t;
|
||||
#else
|
||||
typedef int boolean_t;
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_I386_BOOLEAN_H_ */
|
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_EXCEPTION_H_
|
||||
#define _MACH_I386_EXCEPTION_H_
|
||||
|
||||
/*
|
||||
* No machine dependent types for the 80386
|
||||
*/
|
||||
|
||||
#define EXC_TYPES_COUNT 14 /* incl. illegal exception 0 */
|
||||
|
||||
/*
|
||||
* Codes and subcodes for 80386 exceptions.
|
||||
*/
|
||||
|
||||
#define EXCEPTION_CODE_MAX 2 /* currently code and subcode */
|
||||
|
||||
/*
|
||||
* EXC_BAD_INSTRUCTION
|
||||
*/
|
||||
|
||||
#define EXC_I386_INVOP 1
|
||||
|
||||
/*
|
||||
* EXC_ARITHMETIC
|
||||
*/
|
||||
|
||||
#define EXC_I386_DIV 1
|
||||
#define EXC_I386_INTO 2
|
||||
#define EXC_I386_NOEXT 3
|
||||
#define EXC_I386_EXTOVR 4
|
||||
#define EXC_I386_EXTERR 5
|
||||
#define EXC_I386_EMERR 6
|
||||
#define EXC_I386_BOUND 7
|
||||
#define EXC_I386_SSEEXTERR 8
|
||||
|
||||
/*
|
||||
* EXC_SOFTWARE
|
||||
* Note: 0x10000-0x10003 in use for unix signal
|
||||
*/
|
||||
|
||||
/*
|
||||
* EXC_BAD_ACCESS
|
||||
*/
|
||||
|
||||
/*
|
||||
* EXC_BREAKPOINT
|
||||
*/
|
||||
|
||||
#define EXC_I386_SGL 1
|
||||
#define EXC_I386_BPT 2
|
||||
|
||||
#define EXC_I386_DIVERR 0 /* divide by 0 eprror */
|
||||
#define EXC_I386_SGLSTP 1 /* single step */
|
||||
#define EXC_I386_NMIFLT 2 /* NMI */
|
||||
#define EXC_I386_BPTFLT 3 /* breakpoint fault */
|
||||
#define EXC_I386_INTOFLT 4 /* INTO overflow fault */
|
||||
#define EXC_I386_BOUNDFLT 5 /* BOUND instruction fault */
|
||||
#define EXC_I386_INVOPFLT 6 /* invalid opcode fault */
|
||||
#define EXC_I386_NOEXTFLT 7 /* extension not available fault*/
|
||||
#define EXC_I386_DBLFLT 8 /* double fault */
|
||||
#define EXC_I386_EXTOVRFLT 9 /* extension overrun fault */
|
||||
#define EXC_I386_INVTSSFLT 10 /* invalid TSS fault */
|
||||
#define EXC_I386_SEGNPFLT 11 /* segment not present fault */
|
||||
#define EXC_I386_STKFLT 12 /* stack fault */
|
||||
#define EXC_I386_GPFLT 13 /* general protection fault */
|
||||
#define EXC_I386_PGFLT 14 /* page fault */
|
||||
#define EXC_I386_EXTERRFLT 16 /* extension error fault */
|
||||
#define EXC_I386_ALIGNFLT 17 /* Alignment fault */
|
||||
#define EXC_I386_ENDPERR 33 /* emulated extension error flt */
|
||||
#define EXC_I386_ENOEXTFLT 32 /* emulated ext not present */
|
||||
|
||||
|
||||
/*
|
||||
* machine dependent exception masks
|
||||
*/
|
||||
#define EXC_MASK_MACHINE 0
|
||||
|
||||
#endif /* _MACH_I386_EXCEPTION_H_ */
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1992-1989 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
#ifndef _I386_FP_SAVE_H_
|
||||
#define _I386_FP_SAVE_H_
|
||||
|
||||
/*
|
||||
* Control register
|
||||
*/
|
||||
#define FPC_IE 0x0001 /* enable invalid operation
|
||||
* exception */
|
||||
#define FPC_IM FPC_IE
|
||||
#define FPC_DE 0x0002 /* enable denormalized operation
|
||||
* exception */
|
||||
#define FPC_DM FPC_DE
|
||||
#define FPC_ZE 0x0004 /* enable zero-divide exception */
|
||||
#define FPC_ZM FPC_ZE
|
||||
#define FPC_OE 0x0008 /* enable overflow exception */
|
||||
#define FPC_OM FPC_OE
|
||||
#define FPC_UE 0x0010 /* enable underflow exception */
|
||||
#define FPC_PE 0x0020 /* enable precision exception */
|
||||
#define FPC_PC 0x0300 /* precision control: */
|
||||
#define FPC_PC_24 0x0000 /* 24 bits */
|
||||
#define FPC_PC_53 0x0200 /* 53 bits */
|
||||
#define FPC_PC_64 0x0300 /* 64 bits */
|
||||
#define FPC_RC 0x0c00 /* rounding control: */
|
||||
#define FPC_RC_RN 0x0000 /* round to nearest or even */
|
||||
#define FPC_RC_RD 0x0400 /* round down */
|
||||
#define FPC_RC_RU 0x0800 /* round up */
|
||||
#define FPC_RC_CHOP 0x0c00 /* chop */
|
||||
#define FPC_IC 0x1000 /* infinity control (obsolete) */
|
||||
#define FPC_IC_PROJ 0x0000 /* projective infinity */
|
||||
#define FPC_IC_AFF 0x1000 /* affine infinity (std) */
|
||||
|
||||
/*
|
||||
* Status register
|
||||
*/
|
||||
#define FPS_IE 0x0001 /* invalid operation */
|
||||
#define FPS_DE 0x0002 /* denormalized operand */
|
||||
#define FPS_ZE 0x0004 /* divide by zero */
|
||||
#define FPS_OE 0x0008 /* overflow */
|
||||
#define FPS_UE 0x0010 /* underflow */
|
||||
#define FPS_PE 0x0020 /* precision */
|
||||
#define FPS_SF 0x0040 /* stack flag */
|
||||
#define FPS_ES 0x0080 /* error summary */
|
||||
#define FPS_C0 0x0100 /* condition code bit 0 */
|
||||
#define FPS_C1 0x0200 /* condition code bit 1 */
|
||||
#define FPS_C2 0x0400 /* condition code bit 2 */
|
||||
#define FPS_TOS 0x3800 /* top-of-stack pointer */
|
||||
#define FPS_TOS_SHIFT 11
|
||||
#define FPS_C3 0x4000 /* condition code bit 3 */
|
||||
#define FPS_BUSY 0x8000 /* FPU busy */
|
||||
|
||||
/*
|
||||
* Kind of floating-point support provided by kernel.
|
||||
*/
|
||||
#define FP_NO 0 /* no floating point */
|
||||
#define FP_SOFT 1 /* software FP emulator */
|
||||
#define FP_287 2 /* 80287 */
|
||||
#define FP_387 3 /* 80387 or 80486 */
|
||||
#define FP_FXSR 4 /* Fast save/restore SIMD Extension */
|
||||
|
||||
#endif /* _I386_FP_SAVE_H_ */
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
/*
|
||||
* File: kern_return.h
|
||||
* Author: Avadis Tevanian, Jr., Michael Wayne Young
|
||||
* Date: 1985
|
||||
*
|
||||
* Machine-dependent kernel return definitions.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_KERN_RETURN_H_
|
||||
#define _MACH_I386_KERN_RETURN_H_
|
||||
|
||||
#ifndef ASSEMBLER
|
||||
typedef int kern_return_t;
|
||||
#endif /* ASSEMBLER */
|
||||
|
||||
#endif /* _MACH_I386_KERN_RETURN_H_ */
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_THREAD_STATE_H_
|
||||
#define _MACH_I386_THREAD_STATE_H_
|
||||
|
||||
/* Size of maximum exported thread state in words */
|
||||
#define I386_THREAD_STATE_MAX (614) /* Size of biggest state possible */
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#define THREAD_STATE_MAX I386_THREAD_STATE_MAX
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_I386_THREAD_STATE_H_ */
|
|
@ -0,0 +1,345 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
* File: thread_status.h
|
||||
* Author: Avadis Tevanian, Jr.
|
||||
* Date: 1985
|
||||
*
|
||||
* This file contains the structure definitions for the thread
|
||||
* state as applied to I386 processors.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_THREAD_STATUS_H_
|
||||
#define _MACH_I386_THREAD_STATUS_H_
|
||||
|
||||
#include <mach/machine/_structs.h>
|
||||
#include <mach/message.h>
|
||||
#include <mach/i386/fp_reg.h>
|
||||
#include <mach/i386/thread_state.h>
|
||||
#include <i386/eflags.h>
|
||||
|
||||
|
||||
/*
|
||||
* the i386_xxxx form is kept for legacy purposes since these types
|
||||
* are externally known... eventually they should be deprecated.
|
||||
* our internal implementation has moved to the following naming convention
|
||||
*
|
||||
* x86_xxxx32 names are used to deal with 32 bit states
|
||||
* x86_xxxx64 names are used to deal with 64 bit states
|
||||
* x86_xxxx names are used to deal with either 32 or 64 bit states
|
||||
* via a self-describing mechanism
|
||||
*/
|
||||
|
||||
/*
|
||||
* these are the legacy names which should be deprecated in the future
|
||||
* they are externally known which is the only reason we don't just get
|
||||
* rid of them
|
||||
*/
|
||||
#define i386_THREAD_STATE 1
|
||||
#define i386_FLOAT_STATE 2
|
||||
#define i386_EXCEPTION_STATE 3
|
||||
|
||||
/*
|
||||
* THREAD_STATE_FLAVOR_LIST 0
|
||||
* these are the supported flavors
|
||||
*/
|
||||
#define x86_THREAD_STATE32 1
|
||||
#define x86_FLOAT_STATE32 2
|
||||
#define x86_EXCEPTION_STATE32 3
|
||||
#define x86_THREAD_STATE64 4
|
||||
#define x86_FLOAT_STATE64 5
|
||||
#define x86_EXCEPTION_STATE64 6
|
||||
#define x86_THREAD_STATE 7
|
||||
#define x86_FLOAT_STATE 8
|
||||
#define x86_EXCEPTION_STATE 9
|
||||
#define x86_DEBUG_STATE32 10
|
||||
#define x86_DEBUG_STATE64 11
|
||||
#define x86_DEBUG_STATE 12
|
||||
#define THREAD_STATE_NONE 13
|
||||
/* 14 and 15 are used for the internal x86_SAVED_STATE flavours */
|
||||
/* Arrange for flavors to take sequential values, 32-bit, 64-bit, non-specific */
|
||||
#define x86_AVX_STATE32 16
|
||||
#define x86_AVX_STATE64 (x86_AVX_STATE32 + 1)
|
||||
#define x86_AVX_STATE (x86_AVX_STATE32 + 2)
|
||||
#define x86_AVX512_STATE32 19
|
||||
#define x86_AVX512_STATE64 (x86_AVX512_STATE32 + 1)
|
||||
#define x86_AVX512_STATE (x86_AVX512_STATE32 + 2)
|
||||
#define x86_PAGEIN_STATE 22
|
||||
#define x86_THREAD_FULL_STATE64 23
|
||||
|
||||
/*
|
||||
* Largest state on this machine:
|
||||
* (be sure mach/machine/thread_state.h matches!)
|
||||
*/
|
||||
#define THREAD_MACHINE_STATE_MAX THREAD_STATE_MAX
|
||||
|
||||
/*
|
||||
* VALID_THREAD_STATE_FLAVOR is a platform specific macro that when passed
|
||||
* an exception flavor will return if that is a defined flavor for that
|
||||
* platform. The macro must be manually updated to include all of the valid
|
||||
* exception flavors as defined above.
|
||||
*/
|
||||
#define VALID_THREAD_STATE_FLAVOR(x) \
|
||||
((x == x86_THREAD_STATE32) || \
|
||||
(x == x86_FLOAT_STATE32) || \
|
||||
(x == x86_EXCEPTION_STATE32) || \
|
||||
(x == x86_DEBUG_STATE32) || \
|
||||
(x == x86_THREAD_STATE64) || \
|
||||
(x == x86_THREAD_FULL_STATE64) || \
|
||||
(x == x86_FLOAT_STATE64) || \
|
||||
(x == x86_EXCEPTION_STATE64) || \
|
||||
(x == x86_DEBUG_STATE64) || \
|
||||
(x == x86_THREAD_STATE) || \
|
||||
(x == x86_FLOAT_STATE) || \
|
||||
(x == x86_EXCEPTION_STATE) || \
|
||||
(x == x86_DEBUG_STATE) || \
|
||||
(x == x86_AVX_STATE32) || \
|
||||
(x == x86_AVX_STATE64) || \
|
||||
(x == x86_AVX_STATE) || \
|
||||
(x == x86_AVX512_STATE32) || \
|
||||
(x == x86_AVX512_STATE64) || \
|
||||
(x == x86_AVX512_STATE) || \
|
||||
(x == x86_PAGEIN_STATE) || \
|
||||
(x == THREAD_STATE_NONE))
|
||||
|
||||
struct x86_state_hdr {
|
||||
uint32_t flavor;
|
||||
uint32_t count;
|
||||
};
|
||||
typedef struct x86_state_hdr x86_state_hdr_t;
|
||||
|
||||
/*
|
||||
* Default segment register values.
|
||||
*/
|
||||
|
||||
#define USER_CODE_SELECTOR 0x0017
|
||||
#define USER_DATA_SELECTOR 0x001f
|
||||
#define KERN_CODE_SELECTOR 0x0008
|
||||
#define KERN_DATA_SELECTOR 0x0010
|
||||
|
||||
/*
|
||||
* to be deprecated in the future
|
||||
*/
|
||||
typedef _STRUCT_X86_THREAD_STATE32 i386_thread_state_t;
|
||||
#define i386_THREAD_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (i386_thread_state_t) / sizeof (int) ))
|
||||
|
||||
typedef _STRUCT_X86_THREAD_STATE32 x86_thread_state32_t;
|
||||
#define x86_THREAD_STATE32_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_thread_state32_t) / sizeof (int) ))
|
||||
|
||||
/*
|
||||
* to be deprecated in the future
|
||||
*/
|
||||
typedef _STRUCT_X86_FLOAT_STATE32 i386_float_state_t;
|
||||
#define i386_FLOAT_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(i386_float_state_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef _STRUCT_X86_FLOAT_STATE32 x86_float_state32_t;
|
||||
#define x86_FLOAT_STATE32_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_float_state32_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef _STRUCT_X86_AVX_STATE32 x86_avx_state32_t;
|
||||
#define x86_AVX_STATE32_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_avx_state32_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef _STRUCT_X86_AVX512_STATE32 x86_avx512_state32_t;
|
||||
#define x86_AVX512_STATE32_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_avx512_state32_t)/sizeof(unsigned int)))
|
||||
|
||||
/*
|
||||
* to be deprecated in the future
|
||||
*/
|
||||
typedef _STRUCT_X86_EXCEPTION_STATE32 i386_exception_state_t;
|
||||
#define i386_EXCEPTION_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (i386_exception_state_t) / sizeof (int) ))
|
||||
|
||||
typedef _STRUCT_X86_EXCEPTION_STATE32 x86_exception_state32_t;
|
||||
#define x86_EXCEPTION_STATE32_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_exception_state32_t) / sizeof (int) ))
|
||||
|
||||
#define I386_EXCEPTION_STATE_COUNT i386_EXCEPTION_STATE_COUNT
|
||||
|
||||
typedef _STRUCT_X86_DEBUG_STATE32 x86_debug_state32_t;
|
||||
#define x86_DEBUG_STATE32_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_debug_state32_t) / sizeof (int) ))
|
||||
|
||||
#define X86_DEBUG_STATE32_COUNT x86_DEBUG_STATE32_COUNT
|
||||
|
||||
typedef _STRUCT_X86_THREAD_STATE64 x86_thread_state64_t;
|
||||
#define x86_THREAD_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_thread_state64_t) / sizeof (int) ))
|
||||
|
||||
typedef _STRUCT_X86_THREAD_FULL_STATE64 x86_thread_full_state64_t;
|
||||
#define x86_THREAD_FULL_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_thread_full_state64_t) / sizeof (int) ))
|
||||
|
||||
typedef _STRUCT_X86_FLOAT_STATE64 x86_float_state64_t;
|
||||
#define x86_FLOAT_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_float_state64_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef _STRUCT_X86_AVX_STATE64 x86_avx_state64_t;
|
||||
#define x86_AVX_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_avx_state64_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef _STRUCT_X86_AVX512_STATE64 x86_avx512_state64_t;
|
||||
#define x86_AVX512_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_avx512_state64_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef _STRUCT_X86_EXCEPTION_STATE64 x86_exception_state64_t;
|
||||
#define x86_EXCEPTION_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_exception_state64_t) / sizeof (int) ))
|
||||
|
||||
#define X86_EXCEPTION_STATE64_COUNT x86_EXCEPTION_STATE64_COUNT
|
||||
|
||||
typedef _STRUCT_X86_DEBUG_STATE64 x86_debug_state64_t;
|
||||
#define x86_DEBUG_STATE64_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_debug_state64_t) / sizeof (int) ))
|
||||
|
||||
#define X86_DEBUG_STATE64_COUNT x86_DEBUG_STATE64_COUNT
|
||||
|
||||
typedef _STRUCT_X86_PAGEIN_STATE x86_pagein_state_t;
|
||||
#define x86_PAGEIN_STATE_COUNT \
|
||||
((mach_msg_type_number_t)(sizeof(x86_pagein_state_t) / sizeof(int)))
|
||||
|
||||
#define X86_PAGEIN_STATE_COUNT x86_PAGEIN_STATE_COUNT
|
||||
|
||||
/*
|
||||
* Combined thread, float and exception states
|
||||
*/
|
||||
struct x86_thread_state {
|
||||
x86_state_hdr_t tsh;
|
||||
union {
|
||||
x86_thread_state32_t ts32;
|
||||
x86_thread_state64_t ts64;
|
||||
} uts;
|
||||
};
|
||||
|
||||
struct x86_float_state {
|
||||
x86_state_hdr_t fsh;
|
||||
union {
|
||||
x86_float_state32_t fs32;
|
||||
x86_float_state64_t fs64;
|
||||
} ufs;
|
||||
};
|
||||
|
||||
struct x86_exception_state {
|
||||
x86_state_hdr_t esh;
|
||||
union {
|
||||
x86_exception_state32_t es32;
|
||||
x86_exception_state64_t es64;
|
||||
} ues;
|
||||
};
|
||||
|
||||
struct x86_debug_state {
|
||||
x86_state_hdr_t dsh;
|
||||
union {
|
||||
x86_debug_state32_t ds32;
|
||||
x86_debug_state64_t ds64;
|
||||
} uds;
|
||||
};
|
||||
|
||||
struct x86_avx_state {
|
||||
x86_state_hdr_t ash;
|
||||
union {
|
||||
x86_avx_state32_t as32;
|
||||
x86_avx_state64_t as64;
|
||||
} ufs;
|
||||
};
|
||||
|
||||
struct x86_avx512_state {
|
||||
x86_state_hdr_t ash;
|
||||
union {
|
||||
x86_avx512_state32_t as32;
|
||||
x86_avx512_state64_t as64;
|
||||
} ufs;
|
||||
};
|
||||
|
||||
typedef struct x86_thread_state x86_thread_state_t;
|
||||
#define x86_THREAD_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
( sizeof (x86_thread_state_t) / sizeof (int) ))
|
||||
|
||||
typedef struct x86_float_state x86_float_state_t;
|
||||
#define x86_FLOAT_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_float_state_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef struct x86_exception_state x86_exception_state_t;
|
||||
#define x86_EXCEPTION_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_exception_state_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef struct x86_debug_state x86_debug_state_t;
|
||||
#define x86_DEBUG_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_debug_state_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef struct x86_avx_state x86_avx_state_t;
|
||||
#define x86_AVX_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_avx_state_t)/sizeof(unsigned int)))
|
||||
|
||||
typedef struct x86_avx512_state x86_avx512_state_t;
|
||||
#define x86_AVX512_STATE_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(x86_avx512_state_t)/sizeof(unsigned int)))
|
||||
|
||||
/*
|
||||
* Machine-independent way for servers and Mach's exception mechanism to
|
||||
* choose the most efficient state flavor for exception RPC's:
|
||||
*/
|
||||
#define MACHINE_THREAD_STATE x86_THREAD_STATE
|
||||
#define MACHINE_THREAD_STATE_COUNT x86_THREAD_STATE_COUNT
|
||||
|
||||
|
||||
#endif /* _MACH_I386_THREAD_STATUS_H_ */
|
|
@ -0,0 +1,170 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994 The University of Utah and
|
||||
* the Computer Systems Laboratory at the University of Utah (CSL).
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software is hereby
|
||||
* granted provided that (1) source code retains these copyright, permission,
|
||||
* and disclaimer notices, and (2) redistributions including binaries
|
||||
* reproduce the notices in supporting documentation, and (3) all advertising
|
||||
* materials mentioning features or use of this software display the following
|
||||
* acknowledgement: ``This product includes software developed by the
|
||||
* Computer Systems Laboratory at the University of Utah.''
|
||||
*
|
||||
* THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
|
||||
* IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
|
||||
* ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* CSL requests users of this software to return to csl-dist@cs.utah.edu any
|
||||
* improvements that they make and grant CSL redistribution rights.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* File: vm_param.h
|
||||
* Author: Avadis Tevanian, Jr.
|
||||
* Date: 1985
|
||||
*
|
||||
* I386 machine dependent virtual memory parameters.
|
||||
* Most of the declarations are preceeded by I386_ (or i386_)
|
||||
* which is OK because only I386 specific code will be using
|
||||
* them.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_VM_PARAM_H_
|
||||
#define _MACH_I386_VM_PARAM_H_
|
||||
|
||||
#define BYTE_SIZE 8 /* byte size in bits */
|
||||
|
||||
#define I386_PGBYTES 4096 /* bytes per 80386 page */
|
||||
#define I386_PGSHIFT 12 /* bitshift for pages */
|
||||
|
||||
#define PAGE_SIZE I386_PGBYTES
|
||||
#define PAGE_SHIFT I386_PGSHIFT
|
||||
#define PAGE_MASK (PAGE_SIZE - 1)
|
||||
|
||||
#define PAGE_MAX_SHIFT PAGE_SHIFT
|
||||
#define PAGE_MAX_SIZE PAGE_SIZE
|
||||
#define PAGE_MAX_MASK PAGE_MASK
|
||||
|
||||
#define PAGE_MIN_SHIFT PAGE_SHIFT
|
||||
#define PAGE_MIN_SIZE PAGE_SIZE
|
||||
#define PAGE_MIN_MASK PAGE_MASK
|
||||
|
||||
#define I386_LPGBYTES 2*1024*1024 /* bytes per large page */
|
||||
#define I386_LPGSHIFT 21 /* bitshift for large pages */
|
||||
#define I386_LPGMASK (I386_LPGBYTES-1)
|
||||
|
||||
/*
|
||||
* Convert bytes to pages and convert pages to bytes.
|
||||
* No rounding is used.
|
||||
*/
|
||||
|
||||
#define i386_btop(x) ((ppnum_t)((x) >> I386_PGSHIFT))
|
||||
#define machine_btop(x) i386_btop(x)
|
||||
#define i386_ptob(x) (((pmap_paddr_t)(x)) << I386_PGSHIFT)
|
||||
#define machine_ptob(x) i386_ptob(x)
|
||||
|
||||
/*
|
||||
* Round off or truncate to the nearest page. These will work
|
||||
* for either addresses or counts. (i.e. 1 byte rounds to 1 page
|
||||
* bytes.
|
||||
*/
|
||||
|
||||
#define i386_round_page(x) ((((pmap_paddr_t)(x)) + I386_PGBYTES - 1) & \
|
||||
~(I386_PGBYTES-1))
|
||||
#define i386_trunc_page(x) (((pmap_paddr_t)(x)) & ~(I386_PGBYTES-1))
|
||||
|
||||
|
||||
|
||||
#define VM_MIN_ADDRESS64 ((user_addr_t) 0x0000000000000000ULL)
|
||||
/*
|
||||
* default top of user stack... it grows down from here
|
||||
*/
|
||||
#define VM_USRSTACK64 ((user_addr_t) 0x00007FFEEFC00000ULL)
|
||||
|
||||
/*
|
||||
* XXX TODO: Obsolete?
|
||||
*/
|
||||
#define VM_DYLD64 ((user_addr_t) 0x00007FFF5FC00000ULL)
|
||||
#define VM_LIB64_SHR_DATA ((user_addr_t) 0x00007FFF60000000ULL)
|
||||
#define VM_LIB64_SHR_TEXT ((user_addr_t) 0x00007FFF80000000ULL)
|
||||
/*
|
||||
* the end of the usable user address space , for now about 47 bits.
|
||||
* the 64 bit commpage is past the end of this
|
||||
*/
|
||||
#define VM_MAX_PAGE_ADDRESS ((user_addr_t) 0x00007FFFFFE00000ULL)
|
||||
/*
|
||||
* canonical end of user address space for limits checking
|
||||
*/
|
||||
#define VM_MAX_USER_PAGE_ADDRESS ((user_addr_t)0x00007FFFFFFFF000ULL)
|
||||
|
||||
|
||||
/* system-wide values */
|
||||
#define MACH_VM_MIN_ADDRESS ((mach_vm_offset_t) 0)
|
||||
#define MACH_VM_MAX_ADDRESS ((mach_vm_offset_t) VM_MAX_PAGE_ADDRESS)
|
||||
|
||||
/* process-relative values (all 32-bit legacy only for now) */
|
||||
#define VM_MIN_ADDRESS ((vm_offset_t) 0)
|
||||
#define VM_USRSTACK32 ((vm_offset_t) 0xC0000000) /* ASLR slides stack down by up to 1 MB */
|
||||
#define VM_MAX_ADDRESS ((vm_offset_t) 0xFFE00000)
|
||||
|
||||
|
||||
|
||||
#endif /* _MACH_I386_VM_PARAM_H_ */
|
|
@ -0,0 +1,142 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2016 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
/*
|
||||
* File: vm_types.h
|
||||
* Author: Avadis Tevanian, Jr.
|
||||
* Date: 1985
|
||||
*
|
||||
* Header file for VM data types. I386 version.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_I386_VM_TYPES_H_
|
||||
#define _MACH_I386_VM_TYPES_H_
|
||||
|
||||
#ifndef ASSEMBLER
|
||||
|
||||
#include <i386/_types.h>
|
||||
#include <mach/i386/vm_param.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
* natural_t and integer_t are Mach's legacy types for machine-
|
||||
* independent integer types (unsigned, and signed, respectively).
|
||||
* Their original purpose was to define other types in a machine/
|
||||
* compiler independent way.
|
||||
*
|
||||
* They also had an implicit "same size as pointer" characteristic
|
||||
* to them (i.e. Mach's traditional types are very ILP32 or ILP64
|
||||
* centric). We support x86 ABIs that do not follow either of
|
||||
* these models (specifically LP64). Therefore, we had to make a
|
||||
* choice between making these types scale with pointers or stay
|
||||
* tied to integers. Because their use is predominantly tied to
|
||||
* to the size of an integer, we are keeping that association and
|
||||
* breaking free from pointer size guarantees.
|
||||
*
|
||||
* New use of these types is discouraged.
|
||||
*/
|
||||
typedef __darwin_natural_t natural_t;
|
||||
typedef int integer_t;
|
||||
|
||||
/*
|
||||
* A vm_offset_t is a type-neutral pointer,
|
||||
* e.g. an offset into a virtual memory space.
|
||||
*/
|
||||
#ifdef __LP64__
|
||||
typedef uintptr_t vm_offset_t;
|
||||
#else /* __LP64__ */
|
||||
typedef natural_t vm_offset_t;
|
||||
#endif /* __LP64__ */
|
||||
|
||||
/*
|
||||
* A vm_size_t is the proper type for e.g.
|
||||
* expressing the difference between two
|
||||
* vm_offset_t entities.
|
||||
*/
|
||||
#ifdef __LP64__
|
||||
typedef uintptr_t vm_size_t;
|
||||
#else /* __LP64__ */
|
||||
typedef natural_t vm_size_t;
|
||||
#endif /* __LP64__ */
|
||||
|
||||
/*
|
||||
* This new type is independent of a particular vm map's
|
||||
* implementation size - and represents appropriate types
|
||||
* for all possible maps. This is used for interfaces
|
||||
* where the size of the map is not known - or we don't
|
||||
* want to have to distinguish.
|
||||
*/
|
||||
typedef uint64_t mach_vm_address_t;
|
||||
typedef uint64_t mach_vm_offset_t;
|
||||
typedef uint64_t mach_vm_size_t;
|
||||
|
||||
typedef uint64_t vm_map_offset_t;
|
||||
typedef uint64_t vm_map_address_t;
|
||||
typedef uint64_t vm_map_size_t;
|
||||
|
||||
typedef mach_vm_address_t mach_port_context_t;
|
||||
|
||||
|
||||
#endif /* ASSEMBLER */
|
||||
|
||||
/*
|
||||
* If composing messages by hand (please do not)
|
||||
*/
|
||||
#define MACH_MSG_TYPE_INTEGER_T MACH_MSG_TYPE_INTEGER_32
|
||||
|
||||
#endif /* _MACH_I386_VM_TYPES_H_ */
|
|
@ -0,0 +1,330 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
* File: h/kern_return.h
|
||||
* Author: Avadis Tevanian, Jr.
|
||||
* Date: 1985
|
||||
*
|
||||
* Kernel return codes.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_KERN_RETURN_H_
|
||||
#define _MACH_KERN_RETURN_H_
|
||||
|
||||
#include <mach/machine/kern_return.h>
|
||||
|
||||
#define KERN_SUCCESS 0
|
||||
|
||||
#define KERN_INVALID_ADDRESS 1
|
||||
/* Specified address is not currently valid.
|
||||
*/
|
||||
|
||||
#define KERN_PROTECTION_FAILURE 2
|
||||
/* Specified memory is valid, but does not permit the
|
||||
* required forms of access.
|
||||
*/
|
||||
|
||||
#define KERN_NO_SPACE 3
|
||||
/* The address range specified is already in use, or
|
||||
* no address range of the size specified could be
|
||||
* found.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_ARGUMENT 4
|
||||
/* The function requested was not applicable to this
|
||||
* type of argument, or an argument is invalid
|
||||
*/
|
||||
|
||||
#define KERN_FAILURE 5
|
||||
/* The function could not be performed. A catch-all.
|
||||
*/
|
||||
|
||||
#define KERN_RESOURCE_SHORTAGE 6
|
||||
/* A system resource could not be allocated to fulfill
|
||||
* this request. This failure may not be permanent.
|
||||
*/
|
||||
|
||||
#define KERN_NOT_RECEIVER 7
|
||||
/* The task in question does not hold receive rights
|
||||
* for the port argument.
|
||||
*/
|
||||
|
||||
#define KERN_NO_ACCESS 8
|
||||
/* Bogus access restriction.
|
||||
*/
|
||||
|
||||
#define KERN_MEMORY_FAILURE 9
|
||||
/* During a page fault, the target address refers to a
|
||||
* memory object that has been destroyed. This
|
||||
* failure is permanent.
|
||||
*/
|
||||
|
||||
#define KERN_MEMORY_ERROR 10
|
||||
/* During a page fault, the memory object indicated
|
||||
* that the data could not be returned. This failure
|
||||
* may be temporary; future attempts to access this
|
||||
* same data may succeed, as defined by the memory
|
||||
* object.
|
||||
*/
|
||||
|
||||
#define KERN_ALREADY_IN_SET 11
|
||||
/* The receive right is already a member of the portset.
|
||||
*/
|
||||
|
||||
#define KERN_NOT_IN_SET 12
|
||||
/* The receive right is not a member of a port set.
|
||||
*/
|
||||
|
||||
#define KERN_NAME_EXISTS 13
|
||||
/* The name already denotes a right in the task.
|
||||
*/
|
||||
|
||||
#define KERN_ABORTED 14
|
||||
/* The operation was aborted. Ipc code will
|
||||
* catch this and reflect it as a message error.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_NAME 15
|
||||
/* The name doesn't denote a right in the task.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_TASK 16
|
||||
/* Target task isn't an active task.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_RIGHT 17
|
||||
/* The name denotes a right, but not an appropriate right.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_VALUE 18
|
||||
/* A blatant range error.
|
||||
*/
|
||||
|
||||
#define KERN_UREFS_OVERFLOW 19
|
||||
/* Operation would overflow limit on user-references.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_CAPABILITY 20
|
||||
/* The supplied (port) capability is improper.
|
||||
*/
|
||||
|
||||
#define KERN_RIGHT_EXISTS 21
|
||||
/* The task already has send or receive rights
|
||||
* for the port under another name.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_HOST 22
|
||||
/* Target host isn't actually a host.
|
||||
*/
|
||||
|
||||
#define KERN_MEMORY_PRESENT 23
|
||||
/* An attempt was made to supply "precious" data
|
||||
* for memory that is already present in a
|
||||
* memory object.
|
||||
*/
|
||||
|
||||
#define KERN_MEMORY_DATA_MOVED 24
|
||||
/* A page was requested of a memory manager via
|
||||
* memory_object_data_request for an object using
|
||||
* a MEMORY_OBJECT_COPY_CALL strategy, with the
|
||||
* VM_PROT_WANTS_COPY flag being used to specify
|
||||
* that the page desired is for a copy of the
|
||||
* object, and the memory manager has detected
|
||||
* the page was pushed into a copy of the object
|
||||
* while the kernel was walking the shadow chain
|
||||
* from the copy to the object. This error code
|
||||
* is delivered via memory_object_data_error
|
||||
* and is handled by the kernel (it forces the
|
||||
* kernel to restart the fault). It will not be
|
||||
* seen by users.
|
||||
*/
|
||||
|
||||
#define KERN_MEMORY_RESTART_COPY 25
|
||||
/* A strategic copy was attempted of an object
|
||||
* upon which a quicker copy is now possible.
|
||||
* The caller should retry the copy using
|
||||
* vm_object_copy_quickly. This error code
|
||||
* is seen only by the kernel.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_PROCESSOR_SET 26
|
||||
/* An argument applied to assert processor set privilege
|
||||
* was not a processor set control port.
|
||||
*/
|
||||
|
||||
#define KERN_POLICY_LIMIT 27
|
||||
/* The specified scheduling attributes exceed the thread's
|
||||
* limits.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_POLICY 28
|
||||
/* The specified scheduling policy is not currently
|
||||
* enabled for the processor set.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_OBJECT 29
|
||||
/* The external memory manager failed to initialize the
|
||||
* memory object.
|
||||
*/
|
||||
|
||||
#define KERN_ALREADY_WAITING 30
|
||||
/* A thread is attempting to wait for an event for which
|
||||
* there is already a waiting thread.
|
||||
*/
|
||||
|
||||
#define KERN_DEFAULT_SET 31
|
||||
/* An attempt was made to destroy the default processor
|
||||
* set.
|
||||
*/
|
||||
|
||||
#define KERN_EXCEPTION_PROTECTED 32
|
||||
/* An attempt was made to fetch an exception port that is
|
||||
* protected, or to abort a thread while processing a
|
||||
* protected exception.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_LEDGER 33
|
||||
/* A ledger was required but not supplied.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_MEMORY_CONTROL 34
|
||||
/* The port was not a memory cache control port.
|
||||
*/
|
||||
|
||||
#define KERN_INVALID_SECURITY 35
|
||||
/* An argument supplied to assert security privilege
|
||||
* was not a host security port.
|
||||
*/
|
||||
|
||||
#define KERN_NOT_DEPRESSED 36
|
||||
/* thread_depress_abort was called on a thread which
|
||||
* was not currently depressed.
|
||||
*/
|
||||
|
||||
#define KERN_TERMINATED 37
|
||||
/* Object has been terminated and is no longer available
|
||||
*/
|
||||
|
||||
#define KERN_LOCK_SET_DESTROYED 38
|
||||
/* Lock set has been destroyed and is no longer available.
|
||||
*/
|
||||
|
||||
#define KERN_LOCK_UNSTABLE 39
|
||||
/* The thread holding the lock terminated before releasing
|
||||
* the lock
|
||||
*/
|
||||
|
||||
#define KERN_LOCK_OWNED 40
|
||||
/* The lock is already owned by another thread
|
||||
*/
|
||||
|
||||
#define KERN_LOCK_OWNED_SELF 41
|
||||
/* The lock is already owned by the calling thread
|
||||
*/
|
||||
|
||||
#define KERN_SEMAPHORE_DESTROYED 42
|
||||
/* Semaphore has been destroyed and is no longer available.
|
||||
*/
|
||||
|
||||
#define KERN_RPC_SERVER_TERMINATED 43
|
||||
/* Return from RPC indicating the target server was
|
||||
* terminated before it successfully replied
|
||||
*/
|
||||
|
||||
#define KERN_RPC_TERMINATE_ORPHAN 44
|
||||
/* Terminate an orphaned activation.
|
||||
*/
|
||||
|
||||
#define KERN_RPC_CONTINUE_ORPHAN 45
|
||||
/* Allow an orphaned activation to continue executing.
|
||||
*/
|
||||
|
||||
#define KERN_NOT_SUPPORTED 46
|
||||
/* Empty thread activation (No thread linked to it)
|
||||
*/
|
||||
|
||||
#define KERN_NODE_DOWN 47
|
||||
/* Remote node down or inaccessible.
|
||||
*/
|
||||
|
||||
#define KERN_NOT_WAITING 48
|
||||
/* A signalled thread was not actually waiting. */
|
||||
|
||||
#define KERN_OPERATION_TIMED_OUT 49
|
||||
/* Some thread-oriented operation (semaphore_wait) timed out
|
||||
*/
|
||||
|
||||
#define KERN_CODESIGN_ERROR 50
|
||||
/* During a page fault, indicates that the page was rejected
|
||||
* as a result of a signature check.
|
||||
*/
|
||||
|
||||
#define KERN_POLICY_STATIC 51
|
||||
/* The requested property cannot be changed at this time.
|
||||
*/
|
||||
|
||||
#define KERN_INSUFFICIENT_BUFFER_SIZE 52
|
||||
/* The provided buffer is of insufficient size for the requested data.
|
||||
*/
|
||||
|
||||
#define KERN_RETURN_MAX 0x100
|
||||
/* Maximum return value allowable
|
||||
*/
|
||||
|
||||
#endif /* _MACH_KERN_RETURN_H_ */
|
|
@ -0,0 +1,395 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2016 Apple, Inc. All rights reserved.
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/* File: machine.h
|
||||
* Author: Avadis Tevanian, Jr.
|
||||
* Date: 1986
|
||||
*
|
||||
* Machine independent machine abstraction.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_H_
|
||||
#define _MACH_MACHINE_H_
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <mach/machine/vm_types.h>
|
||||
#include <mach/boolean.h>
|
||||
|
||||
typedef integer_t cpu_type_t;
|
||||
typedef integer_t cpu_subtype_t;
|
||||
typedef integer_t cpu_threadtype_t;
|
||||
|
||||
#define CPU_STATE_MAX 4
|
||||
|
||||
#define CPU_STATE_USER 0
|
||||
#define CPU_STATE_SYSTEM 1
|
||||
#define CPU_STATE_IDLE 2
|
||||
#define CPU_STATE_NICE 3
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Capability bits used in the definition of cpu_type.
|
||||
*/
|
||||
#define CPU_ARCH_MASK 0xff000000 /* mask for architecture bits */
|
||||
#define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
|
||||
#define CPU_ARCH_ABI64_32 0x02000000 /* ABI for 64-bit hardware with 32-bit types; LP32 */
|
||||
|
||||
/*
|
||||
* Machine types known by all.
|
||||
*/
|
||||
|
||||
#define CPU_TYPE_ANY ((cpu_type_t) -1)
|
||||
|
||||
#define CPU_TYPE_VAX ((cpu_type_t) 1)
|
||||
/* skip ((cpu_type_t) 2) */
|
||||
/* skip ((cpu_type_t) 3) */
|
||||
/* skip ((cpu_type_t) 4) */
|
||||
/* skip ((cpu_type_t) 5) */
|
||||
#define CPU_TYPE_MC680x0 ((cpu_type_t) 6)
|
||||
#define CPU_TYPE_X86 ((cpu_type_t) 7)
|
||||
#define CPU_TYPE_I386 CPU_TYPE_X86 /* compatibility */
|
||||
#define CPU_TYPE_X86_64 (CPU_TYPE_X86 | CPU_ARCH_ABI64)
|
||||
|
||||
/* skip CPU_TYPE_MIPS ((cpu_type_t) 8) */
|
||||
/* skip ((cpu_type_t) 9) */
|
||||
#define CPU_TYPE_MC98000 ((cpu_type_t) 10)
|
||||
#define CPU_TYPE_HPPA ((cpu_type_t) 11)
|
||||
#define CPU_TYPE_ARM ((cpu_type_t) 12)
|
||||
#define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
|
||||
#define CPU_TYPE_ARM64_32 (CPU_TYPE_ARM | CPU_ARCH_ABI64_32)
|
||||
#define CPU_TYPE_MC88000 ((cpu_type_t) 13)
|
||||
#define CPU_TYPE_SPARC ((cpu_type_t) 14)
|
||||
#define CPU_TYPE_I860 ((cpu_type_t) 15)
|
||||
/* skip CPU_TYPE_ALPHA ((cpu_type_t) 16) */
|
||||
/* skip ((cpu_type_t) 17) */
|
||||
#define CPU_TYPE_POWERPC ((cpu_type_t) 18)
|
||||
#define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
|
||||
/* skip ((cpu_type_t) 19) */
|
||||
|
||||
/*
|
||||
* Machine subtypes (these are defined here, instead of in a machine
|
||||
* dependent directory, so that any program can get all definitions
|
||||
* regardless of where is it compiled).
|
||||
*/
|
||||
|
||||
/*
|
||||
* Capability bits used in the definition of cpu_subtype.
|
||||
*/
|
||||
#define CPU_SUBTYPE_MASK 0xff000000 /* mask for feature flags */
|
||||
#define CPU_SUBTYPE_LIB64 0x80000000 /* 64 bit libraries */
|
||||
|
||||
|
||||
/*
|
||||
* Object files that are hand-crafted to run on any
|
||||
* implementation of an architecture are tagged with
|
||||
* CPU_SUBTYPE_MULTIPLE. This functions essentially the same as
|
||||
* the "ALL" subtype of an architecture except that it allows us
|
||||
* to easily find object files that may need to be modified
|
||||
* whenever a new implementation of an architecture comes out.
|
||||
*
|
||||
* It is the responsibility of the implementor to make sure the
|
||||
* software handles unsupported implementations elegantly.
|
||||
*/
|
||||
#define CPU_SUBTYPE_MULTIPLE ((cpu_subtype_t) -1)
|
||||
#define CPU_SUBTYPE_LITTLE_ENDIAN ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_BIG_ENDIAN ((cpu_subtype_t) 1)
|
||||
|
||||
/*
|
||||
* Machine threadtypes.
|
||||
* This is none - not defined - for most machine types/subtypes.
|
||||
*/
|
||||
#define CPU_THREADTYPE_NONE ((cpu_threadtype_t) 0)
|
||||
|
||||
/*
|
||||
* VAX subtypes (these do *not* necessary conform to the actual cpu
|
||||
* ID assigned by DEC available via the SID register).
|
||||
*/
|
||||
|
||||
#define CPU_SUBTYPE_VAX_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_VAX780 ((cpu_subtype_t) 1)
|
||||
#define CPU_SUBTYPE_VAX785 ((cpu_subtype_t) 2)
|
||||
#define CPU_SUBTYPE_VAX750 ((cpu_subtype_t) 3)
|
||||
#define CPU_SUBTYPE_VAX730 ((cpu_subtype_t) 4)
|
||||
#define CPU_SUBTYPE_UVAXI ((cpu_subtype_t) 5)
|
||||
#define CPU_SUBTYPE_UVAXII ((cpu_subtype_t) 6)
|
||||
#define CPU_SUBTYPE_VAX8200 ((cpu_subtype_t) 7)
|
||||
#define CPU_SUBTYPE_VAX8500 ((cpu_subtype_t) 8)
|
||||
#define CPU_SUBTYPE_VAX8600 ((cpu_subtype_t) 9)
|
||||
#define CPU_SUBTYPE_VAX8650 ((cpu_subtype_t) 10)
|
||||
#define CPU_SUBTYPE_VAX8800 ((cpu_subtype_t) 11)
|
||||
#define CPU_SUBTYPE_UVAXIII ((cpu_subtype_t) 12)
|
||||
|
||||
/*
|
||||
* 680x0 subtypes
|
||||
*
|
||||
* The subtype definitions here are unusual for historical reasons.
|
||||
* NeXT used to consider 68030 code as generic 68000 code. For
|
||||
* backwards compatability:
|
||||
*
|
||||
* CPU_SUBTYPE_MC68030 symbol has been preserved for source code
|
||||
* compatability.
|
||||
*
|
||||
* CPU_SUBTYPE_MC680x0_ALL has been defined to be the same
|
||||
* subtype as CPU_SUBTYPE_MC68030 for binary comatability.
|
||||
*
|
||||
* CPU_SUBTYPE_MC68030_ONLY has been added to allow new object
|
||||
* files to be tagged as containing 68030-specific instructions.
|
||||
*/
|
||||
|
||||
#define CPU_SUBTYPE_MC680x0_ALL ((cpu_subtype_t) 1)
|
||||
#define CPU_SUBTYPE_MC68030 ((cpu_subtype_t) 1) /* compat */
|
||||
#define CPU_SUBTYPE_MC68040 ((cpu_subtype_t) 2)
|
||||
#define CPU_SUBTYPE_MC68030_ONLY ((cpu_subtype_t) 3)
|
||||
|
||||
/*
|
||||
* I386 subtypes
|
||||
*/
|
||||
|
||||
#define CPU_SUBTYPE_INTEL(f, m) ((cpu_subtype_t) (f) + ((m) << 4))
|
||||
|
||||
#define CPU_SUBTYPE_I386_ALL CPU_SUBTYPE_INTEL(3, 0)
|
||||
#define CPU_SUBTYPE_386 CPU_SUBTYPE_INTEL(3, 0)
|
||||
#define CPU_SUBTYPE_486 CPU_SUBTYPE_INTEL(4, 0)
|
||||
#define CPU_SUBTYPE_486SX CPU_SUBTYPE_INTEL(4, 8) // 8 << 4 = 128
|
||||
#define CPU_SUBTYPE_586 CPU_SUBTYPE_INTEL(5, 0)
|
||||
#define CPU_SUBTYPE_PENT CPU_SUBTYPE_INTEL(5, 0)
|
||||
#define CPU_SUBTYPE_PENTPRO CPU_SUBTYPE_INTEL(6, 1)
|
||||
#define CPU_SUBTYPE_PENTII_M3 CPU_SUBTYPE_INTEL(6, 3)
|
||||
#define CPU_SUBTYPE_PENTII_M5 CPU_SUBTYPE_INTEL(6, 5)
|
||||
#define CPU_SUBTYPE_CELERON CPU_SUBTYPE_INTEL(7, 6)
|
||||
#define CPU_SUBTYPE_CELERON_MOBILE CPU_SUBTYPE_INTEL(7, 7)
|
||||
#define CPU_SUBTYPE_PENTIUM_3 CPU_SUBTYPE_INTEL(8, 0)
|
||||
#define CPU_SUBTYPE_PENTIUM_3_M CPU_SUBTYPE_INTEL(8, 1)
|
||||
#define CPU_SUBTYPE_PENTIUM_3_XEON CPU_SUBTYPE_INTEL(8, 2)
|
||||
#define CPU_SUBTYPE_PENTIUM_M CPU_SUBTYPE_INTEL(9, 0)
|
||||
#define CPU_SUBTYPE_PENTIUM_4 CPU_SUBTYPE_INTEL(10, 0)
|
||||
#define CPU_SUBTYPE_PENTIUM_4_M CPU_SUBTYPE_INTEL(10, 1)
|
||||
#define CPU_SUBTYPE_ITANIUM CPU_SUBTYPE_INTEL(11, 0)
|
||||
#define CPU_SUBTYPE_ITANIUM_2 CPU_SUBTYPE_INTEL(11, 1)
|
||||
#define CPU_SUBTYPE_XEON CPU_SUBTYPE_INTEL(12, 0)
|
||||
#define CPU_SUBTYPE_XEON_MP CPU_SUBTYPE_INTEL(12, 1)
|
||||
|
||||
#define CPU_SUBTYPE_INTEL_FAMILY(x) ((x) & 15)
|
||||
#define CPU_SUBTYPE_INTEL_FAMILY_MAX 15
|
||||
|
||||
#define CPU_SUBTYPE_INTEL_MODEL(x) ((x) >> 4)
|
||||
#define CPU_SUBTYPE_INTEL_MODEL_ALL 0
|
||||
|
||||
/*
|
||||
* X86 subtypes.
|
||||
*/
|
||||
|
||||
#define CPU_SUBTYPE_X86_ALL ((cpu_subtype_t)3)
|
||||
#define CPU_SUBTYPE_X86_64_ALL ((cpu_subtype_t)3)
|
||||
#define CPU_SUBTYPE_X86_ARCH1 ((cpu_subtype_t)4)
|
||||
#define CPU_SUBTYPE_X86_64_H ((cpu_subtype_t)8) /* Haswell feature subset */
|
||||
|
||||
|
||||
#define CPU_THREADTYPE_INTEL_HTT ((cpu_threadtype_t) 1)
|
||||
|
||||
/*
|
||||
* Mips subtypes.
|
||||
*/
|
||||
|
||||
#define CPU_SUBTYPE_MIPS_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_MIPS_R2300 ((cpu_subtype_t) 1)
|
||||
#define CPU_SUBTYPE_MIPS_R2600 ((cpu_subtype_t) 2)
|
||||
#define CPU_SUBTYPE_MIPS_R2800 ((cpu_subtype_t) 3)
|
||||
#define CPU_SUBTYPE_MIPS_R2000a ((cpu_subtype_t) 4) /* pmax */
|
||||
#define CPU_SUBTYPE_MIPS_R2000 ((cpu_subtype_t) 5)
|
||||
#define CPU_SUBTYPE_MIPS_R3000a ((cpu_subtype_t) 6) /* 3max */
|
||||
#define CPU_SUBTYPE_MIPS_R3000 ((cpu_subtype_t) 7)
|
||||
|
||||
/*
|
||||
* MC98000 (PowerPC) subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_MC98000_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_MC98601 ((cpu_subtype_t) 1)
|
||||
|
||||
/*
|
||||
* HPPA subtypes for Hewlett-Packard HP-PA family of
|
||||
* risc processors. Port by NeXT to 700 series.
|
||||
*/
|
||||
|
||||
#define CPU_SUBTYPE_HPPA_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_HPPA_7100 ((cpu_subtype_t) 0) /* compat */
|
||||
#define CPU_SUBTYPE_HPPA_7100LC ((cpu_subtype_t) 1)
|
||||
|
||||
/*
|
||||
* MC88000 subtypes.
|
||||
*/
|
||||
#define CPU_SUBTYPE_MC88000_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_MC88100 ((cpu_subtype_t) 1)
|
||||
#define CPU_SUBTYPE_MC88110 ((cpu_subtype_t) 2)
|
||||
|
||||
/*
|
||||
* SPARC subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_SPARC_ALL ((cpu_subtype_t) 0)
|
||||
|
||||
/*
|
||||
* I860 subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_I860_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_I860_860 ((cpu_subtype_t) 1)
|
||||
|
||||
/*
|
||||
* PowerPC subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)
|
||||
#define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 2)
|
||||
#define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 3)
|
||||
#define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 4)
|
||||
#define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 5)
|
||||
#define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 6)
|
||||
#define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 7)
|
||||
#define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 8)
|
||||
#define CPU_SUBTYPE_POWERPC_750 ((cpu_subtype_t) 9)
|
||||
#define CPU_SUBTYPE_POWERPC_7400 ((cpu_subtype_t) 10)
|
||||
#define CPU_SUBTYPE_POWERPC_7450 ((cpu_subtype_t) 11)
|
||||
#define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
|
||||
|
||||
/*
|
||||
* ARM subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
|
||||
#define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
|
||||
#define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
|
||||
#define CPU_SUBTYPE_ARM_XSCALE ((cpu_subtype_t) 8)
|
||||
#define CPU_SUBTYPE_ARM_V7 ((cpu_subtype_t) 9) /* ARMv7-A and ARMv7-R */
|
||||
#define CPU_SUBTYPE_ARM_V7F ((cpu_subtype_t) 10) /* Cortex A9 */
|
||||
#define CPU_SUBTYPE_ARM_V7S ((cpu_subtype_t) 11) /* Swift */
|
||||
#define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t) 12)
|
||||
#define CPU_SUBTYPE_ARM_V8 ((cpu_subtype_t) 13)
|
||||
#define CPU_SUBTYPE_ARM_V6M ((cpu_subtype_t) 14) /* Not meant to be run under xnu */
|
||||
#define CPU_SUBTYPE_ARM_V7M ((cpu_subtype_t) 15) /* Not meant to be run under xnu */
|
||||
#define CPU_SUBTYPE_ARM_V7EM ((cpu_subtype_t) 16) /* Not meant to be run under xnu */
|
||||
#define CPU_SUBTYPE_ARM_V8M ((cpu_subtype_t) 17) /* Not meant to be run under xnu */
|
||||
|
||||
/*
|
||||
* ARM64 subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_ARM64_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_ARM64_V8 ((cpu_subtype_t) 1)
|
||||
#define CPU_SUBTYPE_ARM64E ((cpu_subtype_t) 2)
|
||||
|
||||
/* CPU subtype feature flags for ptrauth on arm64e platforms */
|
||||
#define CPU_SUBTYPE_ARM64_PTR_AUTH_MASK 0x0f000000
|
||||
#define CPU_SUBTYPE_ARM64_PTR_AUTH_VERSION(x) (((x) & CPU_SUBTYPE_ARM64_PTR_AUTH_MASK) >> 24)
|
||||
|
||||
/*
|
||||
* ARM64_32 subtypes
|
||||
*/
|
||||
#define CPU_SUBTYPE_ARM64_32_ALL ((cpu_subtype_t) 0)
|
||||
#define CPU_SUBTYPE_ARM64_32_V8 ((cpu_subtype_t) 1)
|
||||
|
||||
#endif /* !__ASSEMBLER__ */
|
||||
|
||||
/*
|
||||
* CPU families (sysctl hw.cpufamily)
|
||||
*
|
||||
* These are meant to identify the CPU's marketing name - an
|
||||
* application can map these to (possibly) localized strings.
|
||||
* NB: the encodings of the CPU families are intentionally arbitrary.
|
||||
* There is no ordering, and you should never try to deduce whether
|
||||
* or not some feature is available based on the family.
|
||||
* Use feature flags (eg, hw.optional.altivec) to test for optional
|
||||
* functionality.
|
||||
*/
|
||||
#define CPUFAMILY_UNKNOWN 0
|
||||
#define CPUFAMILY_POWERPC_G3 0xcee41549
|
||||
#define CPUFAMILY_POWERPC_G4 0x77c184ae
|
||||
#define CPUFAMILY_POWERPC_G5 0xed76d8aa
|
||||
#define CPUFAMILY_INTEL_6_13 0xaa33392b
|
||||
#define CPUFAMILY_INTEL_PENRYN 0x78ea4fbc
|
||||
#define CPUFAMILY_INTEL_NEHALEM 0x6b5a4cd2
|
||||
#define CPUFAMILY_INTEL_WESTMERE 0x573b5eec
|
||||
#define CPUFAMILY_INTEL_SANDYBRIDGE 0x5490b78c
|
||||
#define CPUFAMILY_INTEL_IVYBRIDGE 0x1f65e835
|
||||
#define CPUFAMILY_INTEL_HASWELL 0x10b282dc
|
||||
#define CPUFAMILY_INTEL_BROADWELL 0x582ed09c
|
||||
#define CPUFAMILY_INTEL_SKYLAKE 0x37fc219f
|
||||
#define CPUFAMILY_INTEL_KABYLAKE 0x0f817246
|
||||
#if !defined(RC_HIDE_XNU_ICELAKE)
|
||||
#define CPUFAMILY_INTEL_ICELAKE 0x38435547
|
||||
#endif /* not RC_HIDE_XNU_ICELAKE */
|
||||
#if !defined(RC_HIDE_XNU_COMETLAKE)
|
||||
#define CPUFAMILY_INTEL_COMETLAKE 0x1cf8a03e
|
||||
#endif /* not RC_HIDE_XNU_COMETLAKE */
|
||||
#define CPUFAMILY_ARM_9 0xe73283ae
|
||||
#define CPUFAMILY_ARM_11 0x8ff620d8
|
||||
#define CPUFAMILY_ARM_XSCALE 0x53b005f5
|
||||
#define CPUFAMILY_ARM_12 0xbd1b0ae9
|
||||
#define CPUFAMILY_ARM_13 0x0cc90e64
|
||||
#define CPUFAMILY_ARM_14 0x96077ef1
|
||||
#define CPUFAMILY_ARM_15 0xa8511bca
|
||||
#define CPUFAMILY_ARM_SWIFT 0x1e2d6381
|
||||
#define CPUFAMILY_ARM_CYCLONE 0x37a09642
|
||||
#define CPUFAMILY_ARM_TYPHOON 0x2c91a47e
|
||||
#define CPUFAMILY_ARM_TWISTER 0x92fb37c8
|
||||
#define CPUFAMILY_ARM_HURRICANE 0x67ceee93
|
||||
#define CPUFAMILY_ARM_MONSOON_MISTRAL 0xe81e7ef6
|
||||
#define CPUFAMILY_ARM_VORTEX_TEMPEST 0x07d34b9f
|
||||
#define CPUFAMILY_ARM_LIGHTNING_THUNDER 0x462504d2
|
||||
|
||||
/* The following synonyms are deprecated: */
|
||||
#define CPUFAMILY_INTEL_6_23 CPUFAMILY_INTEL_PENRYN
|
||||
#define CPUFAMILY_INTEL_6_26 CPUFAMILY_INTEL_NEHALEM
|
||||
|
||||
|
||||
#endif /* _MACH_MACHINE_H_ */
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_BOOLEAN_H_
|
||||
#define _MACH_MACHINE_BOOLEAN_H_
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#include "mach/i386/boolean.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_MACHINE_BOOLEAN_H_ */
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_EXCEPTION_H_
|
||||
#define _MACH_MACHINE_EXCEPTION_H_
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#include "mach/i386/exception.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_MACHINE_EXCEPTION_H_ */
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_KERN_RETURN_H_
|
||||
#define _MACH_MACHINE_KERN_RETURN_H_
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#include "mach/i386/kern_return.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_MACHINE_KERN_RETURN_H_ */
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_THREAD_STATE_H_
|
||||
#define _MACH_MACHINE_THREAD_STATE_H_
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#include "mach/i386/thread_state.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_MACHINE_THREAD_STATE_H_ */
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_THREAD_STATUS_H_
|
||||
#define _MACH_MACHINE_THREAD_STATUS_H_
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#include "mach/i386/thread_status.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_MACHINE_THREAD_STATUS_H_ */
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MACHINE_VM_TYPES_H_
|
||||
#define _MACH_MACHINE_VM_TYPES_H_
|
||||
|
||||
#if defined (__i386__) || defined(__x86_64__)
|
||||
#include "mach/i386/vm_types.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_MACHINE_VM_TYPES_H_ */
|
|
@ -0,0 +1,902 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
* NOTICE: This file was modified by McAfee Research in 2004 to introduce
|
||||
* support for mandatory and extensible security protections. This notice
|
||||
* is included in support of clause 2.2 (b) of the Apple Public License,
|
||||
* Version 2.0.
|
||||
* Copyright (c) 2005 SPARTA, Inc.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
* File: mach/message.h
|
||||
*
|
||||
* Mach IPC message and primitive function definitions.
|
||||
*/
|
||||
|
||||
#ifndef _MACH_MESSAGE_H_
|
||||
#define _MACH_MESSAGE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <mach/port.h>
|
||||
#include <mach/boolean.h>
|
||||
#include <mach/kern_return.h>
|
||||
#include <mach/machine/vm_types.h>
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/appleapiopts.h>
|
||||
#include <Availability.h>
|
||||
|
||||
/*
|
||||
* The timeout mechanism uses mach_msg_timeout_t values,
|
||||
* passed by value. The timeout units are milliseconds.
|
||||
* It is controlled with the MACH_SEND_TIMEOUT
|
||||
* and MACH_RCV_TIMEOUT options.
|
||||
*/
|
||||
|
||||
typedef natural_t mach_msg_timeout_t;
|
||||
|
||||
/*
|
||||
* The value to be used when there is no timeout.
|
||||
* (No MACH_SEND_TIMEOUT/MACH_RCV_TIMEOUT option.)
|
||||
*/
|
||||
|
||||
#define MACH_MSG_TIMEOUT_NONE ((mach_msg_timeout_t) 0)
|
||||
|
||||
/*
|
||||
* The kernel uses MACH_MSGH_BITS_COMPLEX as a hint. If it isn't on, it
|
||||
* assumes the body of the message doesn't contain port rights or OOL
|
||||
* data. The field is set in received messages. A user task must
|
||||
* use caution in interpreting the body of a message if the bit isn't
|
||||
* on, because the mach_msg_type's in the body might "lie" about the
|
||||
* contents. If the bit isn't on, but the mach_msg_types
|
||||
* in the body specify rights or OOL data, the behavior is undefined.
|
||||
* (Ie, an error may or may not be produced.)
|
||||
*
|
||||
* The value of MACH_MSGH_BITS_REMOTE determines the interpretation
|
||||
* of the msgh_remote_port field. It is handled like a msgt_name,
|
||||
* but must result in a send or send-once type right.
|
||||
*
|
||||
* The value of MACH_MSGH_BITS_LOCAL determines the interpretation
|
||||
* of the msgh_local_port field. It is handled like a msgt_name,
|
||||
* and also must result in a send or send-once type right.
|
||||
*
|
||||
* The value of MACH_MSGH_BITS_VOUCHER determines the interpretation
|
||||
* of the msgh_voucher_port field. It is handled like a msgt_name,
|
||||
* but must result in a send right (and the msgh_voucher_port field
|
||||
* must be the name of a send right to a Mach voucher kernel object.
|
||||
*
|
||||
* MACH_MSGH_BITS() combines two MACH_MSG_TYPE_* values, for the remote
|
||||
* and local fields, into a single value suitable for msgh_bits.
|
||||
*
|
||||
* MACH_MSGH_BITS_CIRCULAR should be zero; is is used internally.
|
||||
*
|
||||
* The unused bits should be zero and are reserved for the kernel
|
||||
* or for future interface expansion.
|
||||
*/
|
||||
|
||||
#define MACH_MSGH_BITS_ZERO 0x00000000
|
||||
|
||||
#define MACH_MSGH_BITS_REMOTE_MASK 0x0000001f
|
||||
#define MACH_MSGH_BITS_LOCAL_MASK 0x00001f00
|
||||
#define MACH_MSGH_BITS_VOUCHER_MASK 0x001f0000
|
||||
|
||||
#define MACH_MSGH_BITS_PORTS_MASK \
|
||||
(MACH_MSGH_BITS_REMOTE_MASK | \
|
||||
MACH_MSGH_BITS_LOCAL_MASK | \
|
||||
MACH_MSGH_BITS_VOUCHER_MASK)
|
||||
|
||||
#define MACH_MSGH_BITS_COMPLEX 0x80000000U /* message is complex */
|
||||
|
||||
#define MACH_MSGH_BITS_USER 0x801f1f1fU /* allowed bits user->kernel */
|
||||
|
||||
#define MACH_MSGH_BITS_RAISEIMP 0x20000000U /* importance raised due to msg */
|
||||
#define MACH_MSGH_BITS_DENAP MACH_MSGH_BITS_RAISEIMP
|
||||
|
||||
#define MACH_MSGH_BITS_IMPHOLDASRT 0x10000000U /* assertion help, userland private */
|
||||
#define MACH_MSGH_BITS_DENAPHOLDASRT MACH_MSGH_BITS_IMPHOLDASRT
|
||||
|
||||
#define MACH_MSGH_BITS_CIRCULAR 0x10000000U /* message circular, kernel private */
|
||||
|
||||
#define MACH_MSGH_BITS_USED 0xb01f1f1fU
|
||||
|
||||
/* setter macros for the bits */
|
||||
#define MACH_MSGH_BITS(remote, local) /* legacy */ \
|
||||
((remote) | ((local) << 8))
|
||||
#define MACH_MSGH_BITS_SET_PORTS(remote, local, voucher) \
|
||||
(((remote) & MACH_MSGH_BITS_REMOTE_MASK) | \
|
||||
(((local) << 8) & MACH_MSGH_BITS_LOCAL_MASK) | \
|
||||
(((voucher) << 16) & MACH_MSGH_BITS_VOUCHER_MASK))
|
||||
#define MACH_MSGH_BITS_SET(remote, local, voucher, other) \
|
||||
(MACH_MSGH_BITS_SET_PORTS((remote), (local), (voucher)) \
|
||||
| ((other) &~ MACH_MSGH_BITS_PORTS_MASK))
|
||||
|
||||
/* getter macros for pulling values out of the bits field */
|
||||
#define MACH_MSGH_BITS_REMOTE(bits) \
|
||||
((bits) & MACH_MSGH_BITS_REMOTE_MASK)
|
||||
#define MACH_MSGH_BITS_LOCAL(bits) \
|
||||
(((bits) & MACH_MSGH_BITS_LOCAL_MASK) >> 8)
|
||||
#define MACH_MSGH_BITS_VOUCHER(bits) \
|
||||
(((bits) & MACH_MSGH_BITS_VOUCHER_MASK) >> 16)
|
||||
#define MACH_MSGH_BITS_PORTS(bits) \
|
||||
((bits) & MACH_MSGH_BITS_PORTS_MASK)
|
||||
#define MACH_MSGH_BITS_OTHER(bits) \
|
||||
((bits) &~ MACH_MSGH_BITS_PORTS_MASK)
|
||||
|
||||
/* checking macros */
|
||||
#define MACH_MSGH_BITS_HAS_REMOTE(bits) \
|
||||
(MACH_MSGH_BITS_REMOTE(bits) != MACH_MSGH_BITS_ZERO)
|
||||
#define MACH_MSGH_BITS_HAS_LOCAL(bits) \
|
||||
(MACH_MSGH_BITS_LOCAL(bits) != MACH_MSGH_BITS_ZERO)
|
||||
#define MACH_MSGH_BITS_HAS_VOUCHER(bits) \
|
||||
(MACH_MSGH_BITS_VOUCHER(bits) != MACH_MSGH_BITS_ZERO)
|
||||
#define MACH_MSGH_BITS_IS_COMPLEX(bits) \
|
||||
(((bits) & MACH_MSGH_BITS_COMPLEX) != MACH_MSGH_BITS_ZERO)
|
||||
|
||||
/* importance checking macros */
|
||||
#define MACH_MSGH_BITS_RAISED_IMPORTANCE(bits) \
|
||||
(((bits) & MACH_MSGH_BITS_RAISEIMP) != MACH_MSGH_BITS_ZERO)
|
||||
#define MACH_MSGH_BITS_HOLDS_IMPORTANCE_ASSERTION(bits) \
|
||||
(((bits) & MACH_MSGH_BITS_IMPHOLDASRT) != MACH_MSGH_BITS_ZERO)
|
||||
|
||||
/*
|
||||
* Every message starts with a message header.
|
||||
* Following the message header, if the message is complex, are a count
|
||||
* of type descriptors and the type descriptors themselves
|
||||
* (mach_msg_descriptor_t). The size of the message must be specified in
|
||||
* bytes, and includes the message header, descriptor count, descriptors,
|
||||
* and inline data.
|
||||
*
|
||||
* The msgh_remote_port field specifies the destination of the message.
|
||||
* It must specify a valid send or send-once right for a port.
|
||||
*
|
||||
* The msgh_local_port field specifies a "reply port". Normally,
|
||||
* This field carries a send-once right that the receiver will use
|
||||
* to reply to the message. It may carry the values MACH_PORT_NULL,
|
||||
* MACH_PORT_DEAD, a send-once right, or a send right.
|
||||
*
|
||||
* The msgh_voucher_port field specifies a Mach voucher port. Only
|
||||
* send rights to kernel-implemented Mach Voucher kernel objects in
|
||||
* addition to MACH_PORT_NULL or MACH_PORT_DEAD may be passed.
|
||||
*
|
||||
* The msgh_id field is uninterpreted by the message primitives.
|
||||
* It normally carries information specifying the format
|
||||
* or meaning of the message.
|
||||
*/
|
||||
|
||||
typedef unsigned int mach_msg_bits_t;
|
||||
typedef natural_t mach_msg_size_t;
|
||||
typedef integer_t mach_msg_id_t;
|
||||
|
||||
#define MACH_MSG_SIZE_NULL (mach_msg_size_t *) 0
|
||||
|
||||
typedef unsigned int mach_msg_priority_t;
|
||||
|
||||
#define MACH_MSG_PRIORITY_UNSPECIFIED (mach_msg_priority_t) 0
|
||||
|
||||
typedef unsigned int mach_msg_type_name_t;
|
||||
|
||||
#define MACH_MSG_TYPE_MOVE_RECEIVE 16 /* Must hold receive right */
|
||||
#define MACH_MSG_TYPE_MOVE_SEND 17 /* Must hold send right(s) */
|
||||
#define MACH_MSG_TYPE_MOVE_SEND_ONCE 18 /* Must hold sendonce right */
|
||||
#define MACH_MSG_TYPE_COPY_SEND 19 /* Must hold send right(s) */
|
||||
#define MACH_MSG_TYPE_MAKE_SEND 20 /* Must hold receive right */
|
||||
#define MACH_MSG_TYPE_MAKE_SEND_ONCE 21 /* Must hold receive right */
|
||||
#define MACH_MSG_TYPE_COPY_RECEIVE 22 /* NOT VALID */
|
||||
#define MACH_MSG_TYPE_DISPOSE_RECEIVE 24 /* must hold receive right */
|
||||
#define MACH_MSG_TYPE_DISPOSE_SEND 25 /* must hold send right(s) */
|
||||
#define MACH_MSG_TYPE_DISPOSE_SEND_ONCE 26 /* must hold sendonce right */
|
||||
|
||||
typedef unsigned int mach_msg_copy_options_t;
|
||||
|
||||
#define MACH_MSG_PHYSICAL_COPY 0
|
||||
#define MACH_MSG_VIRTUAL_COPY 1
|
||||
#define MACH_MSG_ALLOCATE 2
|
||||
#define MACH_MSG_OVERWRITE 3 /* deprecated */
|
||||
#ifdef MACH_KERNEL
|
||||
#define MACH_MSG_KALLOC_COPY_T 4
|
||||
#endif /* MACH_KERNEL */
|
||||
|
||||
#define MACH_MSG_GUARD_FLAGS_NONE 0x0000
|
||||
#define MACH_MSG_GUARD_FLAGS_IMMOVABLE_RECEIVE 0x0001 /* Move the receive right and mark it as immovable */
|
||||
#define MACH_MSG_GUARD_FLAGS_UNGUARDED_ON_SEND 0x0002 /* Verify that the port is unguarded */
|
||||
#define MACH_MSG_GUARD_FLAGS_MASK 0x0003 /* Valid flag bits */
|
||||
typedef unsigned int mach_msg_guard_flags_t;
|
||||
|
||||
/*
|
||||
* In a complex mach message, the mach_msg_header_t is followed by
|
||||
* a descriptor count, then an array of that number of descriptors
|
||||
* (mach_msg_*_descriptor_t). The type field of mach_msg_type_descriptor_t
|
||||
* (which any descriptor can be cast to) indicates the flavor of the
|
||||
* descriptor.
|
||||
*
|
||||
* Note that in LP64, the various types of descriptors are no longer all
|
||||
* the same size as mach_msg_descriptor_t, so the array cannot be indexed
|
||||
* as expected.
|
||||
*/
|
||||
|
||||
typedef unsigned int mach_msg_descriptor_type_t;
|
||||
|
||||
#define MACH_MSG_PORT_DESCRIPTOR 0
|
||||
#define MACH_MSG_OOL_DESCRIPTOR 1
|
||||
#define MACH_MSG_OOL_PORTS_DESCRIPTOR 2
|
||||
#define MACH_MSG_OOL_VOLATILE_DESCRIPTOR 3
|
||||
#define MACH_MSG_GUARDED_PORT_DESCRIPTOR 4
|
||||
|
||||
#pragma pack(push, 4)
|
||||
|
||||
typedef struct{
|
||||
natural_t pad1;
|
||||
mach_msg_size_t pad2;
|
||||
unsigned int pad3 : 24;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
} mach_msg_type_descriptor_t;
|
||||
|
||||
typedef struct{
|
||||
mach_port_t name;
|
||||
// Pad to 8 bytes everywhere except the K64 kernel where mach_port_t is 8 bytes
|
||||
mach_msg_size_t pad1;
|
||||
unsigned int pad2 : 16;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
} mach_msg_port_descriptor_t;
|
||||
|
||||
typedef struct{
|
||||
uint32_t address;
|
||||
mach_msg_size_t size;
|
||||
boolean_t deallocate: 8;
|
||||
mach_msg_copy_options_t copy: 8;
|
||||
unsigned int pad1: 8;
|
||||
mach_msg_descriptor_type_t type: 8;
|
||||
} mach_msg_ool_descriptor32_t;
|
||||
|
||||
typedef struct{
|
||||
uint64_t address;
|
||||
boolean_t deallocate: 8;
|
||||
mach_msg_copy_options_t copy: 8;
|
||||
unsigned int pad1: 8;
|
||||
mach_msg_descriptor_type_t type: 8;
|
||||
mach_msg_size_t size;
|
||||
} mach_msg_ool_descriptor64_t;
|
||||
|
||||
typedef struct{
|
||||
void* address;
|
||||
#if !defined(__LP64__)
|
||||
mach_msg_size_t size;
|
||||
#endif
|
||||
boolean_t deallocate: 8;
|
||||
mach_msg_copy_options_t copy: 8;
|
||||
unsigned int pad1: 8;
|
||||
mach_msg_descriptor_type_t type: 8;
|
||||
#if defined(__LP64__)
|
||||
mach_msg_size_t size;
|
||||
#endif
|
||||
} mach_msg_ool_descriptor_t;
|
||||
|
||||
typedef struct{
|
||||
uint32_t address;
|
||||
mach_msg_size_t count;
|
||||
boolean_t deallocate: 8;
|
||||
mach_msg_copy_options_t copy: 8;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
} mach_msg_ool_ports_descriptor32_t;
|
||||
|
||||
typedef struct{
|
||||
uint64_t address;
|
||||
boolean_t deallocate: 8;
|
||||
mach_msg_copy_options_t copy: 8;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
mach_msg_size_t count;
|
||||
} mach_msg_ool_ports_descriptor64_t;
|
||||
|
||||
typedef struct{
|
||||
void* address;
|
||||
#if !defined(__LP64__)
|
||||
mach_msg_size_t count;
|
||||
#endif
|
||||
boolean_t deallocate: 8;
|
||||
mach_msg_copy_options_t copy: 8;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
#if defined(__LP64__)
|
||||
mach_msg_size_t count;
|
||||
#endif
|
||||
} mach_msg_ool_ports_descriptor_t;
|
||||
|
||||
typedef struct{
|
||||
uint32_t context;
|
||||
mach_port_name_t name;
|
||||
mach_msg_guard_flags_t flags : 16;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
} mach_msg_guarded_port_descriptor32_t;
|
||||
|
||||
typedef struct{
|
||||
uint64_t context;
|
||||
mach_msg_guard_flags_t flags : 16;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
mach_port_name_t name;
|
||||
} mach_msg_guarded_port_descriptor64_t;
|
||||
|
||||
typedef struct{
|
||||
mach_port_context_t context;
|
||||
#if !defined(__LP64__)
|
||||
mach_port_name_t name;
|
||||
#endif
|
||||
mach_msg_guard_flags_t flags : 16;
|
||||
mach_msg_type_name_t disposition : 8;
|
||||
mach_msg_descriptor_type_t type : 8;
|
||||
#if defined(__LP64__)
|
||||
mach_port_name_t name;
|
||||
#endif /* defined(__LP64__) */
|
||||
} mach_msg_guarded_port_descriptor_t;
|
||||
|
||||
/*
|
||||
* LP64support - This union definition is not really
|
||||
* appropriate in LP64 mode because not all descriptors
|
||||
* are of the same size in that environment.
|
||||
*/
|
||||
typedef union{
|
||||
mach_msg_port_descriptor_t port;
|
||||
mach_msg_ool_descriptor_t out_of_line;
|
||||
mach_msg_ool_ports_descriptor_t ool_ports;
|
||||
mach_msg_type_descriptor_t type;
|
||||
mach_msg_guarded_port_descriptor_t guarded_port;
|
||||
} mach_msg_descriptor_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_size_t msgh_descriptor_count;
|
||||
} mach_msg_body_t;
|
||||
|
||||
#define MACH_MSG_BODY_NULL (mach_msg_body_t *) 0
|
||||
#define MACH_MSG_DESCRIPTOR_NULL (mach_msg_descriptor_t *) 0
|
||||
|
||||
typedef struct{
|
||||
mach_msg_bits_t msgh_bits;
|
||||
mach_msg_size_t msgh_size;
|
||||
mach_port_t msgh_remote_port;
|
||||
mach_port_t msgh_local_port;
|
||||
mach_port_name_t msgh_voucher_port;
|
||||
mach_msg_id_t msgh_id;
|
||||
} mach_msg_header_t;
|
||||
|
||||
#define msgh_reserved msgh_voucher_port
|
||||
#define MACH_MSG_NULL (mach_msg_header_t *) 0
|
||||
|
||||
typedef struct{
|
||||
mach_msg_header_t header;
|
||||
mach_msg_body_t body;
|
||||
} mach_msg_base_t;
|
||||
|
||||
typedef unsigned int mach_msg_trailer_type_t;
|
||||
|
||||
#define MACH_MSG_TRAILER_FORMAT_0 0
|
||||
|
||||
typedef unsigned int mach_msg_trailer_size_t;
|
||||
typedef char *mach_msg_trailer_info_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_trailer_type_t msgh_trailer_type;
|
||||
mach_msg_trailer_size_t msgh_trailer_size;
|
||||
} mach_msg_trailer_t;
|
||||
|
||||
/*
|
||||
* The msgh_seqno field carries a sequence number
|
||||
* associated with the received-from port. A port's
|
||||
* sequence number is incremented every time a message
|
||||
* is received from it and included in the received
|
||||
* trailer to help put messages back in sequence if
|
||||
* multiple threads receive and/or process received
|
||||
* messages.
|
||||
*/
|
||||
typedef struct{
|
||||
mach_msg_trailer_type_t msgh_trailer_type;
|
||||
mach_msg_trailer_size_t msgh_trailer_size;
|
||||
mach_port_seqno_t msgh_seqno;
|
||||
} mach_msg_seqno_trailer_t;
|
||||
|
||||
typedef struct{
|
||||
unsigned int val[2];
|
||||
} security_token_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_trailer_type_t msgh_trailer_type;
|
||||
mach_msg_trailer_size_t msgh_trailer_size;
|
||||
mach_port_seqno_t msgh_seqno;
|
||||
security_token_t msgh_sender;
|
||||
} mach_msg_security_trailer_t;
|
||||
|
||||
/*
|
||||
* The audit token is an opaque token which identifies
|
||||
* Mach tasks and senders of Mach messages as subjects
|
||||
* to the BSM audit system. Only the appropriate BSM
|
||||
* library routines should be used to interpret the
|
||||
* contents of the audit token as the representation
|
||||
* of the subject identity within the token may change
|
||||
* over time.
|
||||
*/
|
||||
typedef struct{
|
||||
unsigned int val[8];
|
||||
} audit_token_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_trailer_type_t msgh_trailer_type;
|
||||
mach_msg_trailer_size_t msgh_trailer_size;
|
||||
mach_port_seqno_t msgh_seqno;
|
||||
security_token_t msgh_sender;
|
||||
audit_token_t msgh_audit;
|
||||
} mach_msg_audit_trailer_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_trailer_type_t msgh_trailer_type;
|
||||
mach_msg_trailer_size_t msgh_trailer_size;
|
||||
mach_port_seqno_t msgh_seqno;
|
||||
security_token_t msgh_sender;
|
||||
audit_token_t msgh_audit;
|
||||
mach_port_context_t msgh_context;
|
||||
} mach_msg_context_trailer_t;
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
mach_port_name_t sender;
|
||||
} msg_labels_t;
|
||||
|
||||
/*
|
||||
* Trailer type to pass MAC policy label info as a mach message trailer.
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct{
|
||||
mach_msg_trailer_type_t msgh_trailer_type;
|
||||
mach_msg_trailer_size_t msgh_trailer_size;
|
||||
mach_port_seqno_t msgh_seqno;
|
||||
security_token_t msgh_sender;
|
||||
audit_token_t msgh_audit;
|
||||
mach_port_context_t msgh_context;
|
||||
int msgh_ad;
|
||||
msg_labels_t msgh_labels;
|
||||
} mach_msg_mac_trailer_t;
|
||||
|
||||
|
||||
#define MACH_MSG_TRAILER_MINIMUM_SIZE sizeof(mach_msg_trailer_t)
|
||||
|
||||
/*
|
||||
* These values can change from release to release - but clearly
|
||||
* code cannot request additional trailer elements one was not
|
||||
* compiled to understand. Therefore, it is safe to use this
|
||||
* constant when the same module specified the receive options.
|
||||
* Otherwise, you run the risk that the options requested by
|
||||
* another module may exceed the local modules notion of
|
||||
* MAX_TRAILER_SIZE.
|
||||
*/
|
||||
|
||||
typedef mach_msg_mac_trailer_t mach_msg_max_trailer_t;
|
||||
#define MAX_TRAILER_SIZE ((mach_msg_size_t)sizeof(mach_msg_max_trailer_t))
|
||||
|
||||
/*
|
||||
* Legacy requirements keep us from ever updating these defines (even
|
||||
* when the format_0 trailers gain new option data fields in the future).
|
||||
* Therefore, they shouldn't be used going forward. Instead, the sizes
|
||||
* should be compared against the specific element size requested using
|
||||
* REQUESTED_TRAILER_SIZE.
|
||||
*/
|
||||
typedef mach_msg_security_trailer_t mach_msg_format_0_trailer_t;
|
||||
|
||||
/*typedef mach_msg_mac_trailer_t mach_msg_format_0_trailer_t;
|
||||
*/
|
||||
|
||||
#define MACH_MSG_TRAILER_FORMAT_0_SIZE sizeof(mach_msg_format_0_trailer_t)
|
||||
|
||||
#define KERNEL_SECURITY_TOKEN_VALUE { {0, 1} }
|
||||
extern const security_token_t KERNEL_SECURITY_TOKEN;
|
||||
|
||||
#define KERNEL_AUDIT_TOKEN_VALUE { {0, 0, 0, 0, 0, 0, 0, 0} }
|
||||
extern const audit_token_t KERNEL_AUDIT_TOKEN;
|
||||
|
||||
typedef integer_t mach_msg_options_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_header_t header;
|
||||
} mach_msg_empty_send_t;
|
||||
|
||||
typedef struct{
|
||||
mach_msg_header_t header;
|
||||
mach_msg_trailer_t trailer;
|
||||
} mach_msg_empty_rcv_t;
|
||||
|
||||
typedef union{
|
||||
mach_msg_empty_send_t send;
|
||||
mach_msg_empty_rcv_t rcv;
|
||||
} mach_msg_empty_t;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
/* utility to round the message size - will become machine dependent */
|
||||
#define round_msg(x) (((mach_msg_size_t)(x) + sizeof (natural_t) - 1) & \
|
||||
~(sizeof (natural_t) - 1))
|
||||
|
||||
|
||||
/*
|
||||
* There is no fixed upper bound to the size of Mach messages.
|
||||
*/
|
||||
#define MACH_MSG_SIZE_MAX ((mach_msg_size_t) ~0)
|
||||
|
||||
#if defined(__APPLE_API_PRIVATE)
|
||||
/*
|
||||
* But architectural limits of a given implementation, or
|
||||
* temporal conditions may cause unpredictable send failures
|
||||
* for messages larger than MACH_MSG_SIZE_RELIABLE.
|
||||
*
|
||||
* In either case, waiting for memory is [currently] outside
|
||||
* the scope of send timeout values provided to IPC.
|
||||
*/
|
||||
#define MACH_MSG_SIZE_RELIABLE ((mach_msg_size_t) 256 * 1024)
|
||||
#endif
|
||||
/*
|
||||
* Compatibility definitions, for code written
|
||||
* when there was a msgh_kind instead of msgh_seqno.
|
||||
*/
|
||||
#define MACH_MSGH_KIND_NORMAL 0x00000000
|
||||
#define MACH_MSGH_KIND_NOTIFICATION 0x00000001
|
||||
#define msgh_kind msgh_seqno
|
||||
#define mach_msg_kind_t mach_port_seqno_t
|
||||
|
||||
typedef natural_t mach_msg_type_size_t;
|
||||
typedef natural_t mach_msg_type_number_t;
|
||||
|
||||
/*
|
||||
* Values received/carried in messages. Tells the receiver what
|
||||
* sort of port right he now has.
|
||||
*
|
||||
* MACH_MSG_TYPE_PORT_NAME is used to transfer a port name
|
||||
* which should remain uninterpreted by the kernel. (Port rights
|
||||
* are not transferred, just the port name.)
|
||||
*/
|
||||
|
||||
#define MACH_MSG_TYPE_PORT_NONE 0
|
||||
|
||||
#define MACH_MSG_TYPE_PORT_NAME 15
|
||||
#define MACH_MSG_TYPE_PORT_RECEIVE MACH_MSG_TYPE_MOVE_RECEIVE
|
||||
#define MACH_MSG_TYPE_PORT_SEND MACH_MSG_TYPE_MOVE_SEND
|
||||
#define MACH_MSG_TYPE_PORT_SEND_ONCE MACH_MSG_TYPE_MOVE_SEND_ONCE
|
||||
|
||||
#define MACH_MSG_TYPE_LAST 22 /* Last assigned */
|
||||
|
||||
/*
|
||||
* A dummy value. Mostly used to indicate that the actual value
|
||||
* will be filled in later, dynamically.
|
||||
*/
|
||||
|
||||
#define MACH_MSG_TYPE_POLYMORPHIC ((mach_msg_type_name_t) -1)
|
||||
|
||||
/*
|
||||
* Is a given item a port type?
|
||||
*/
|
||||
|
||||
#define MACH_MSG_TYPE_PORT_ANY(x) \
|
||||
(((x) >= MACH_MSG_TYPE_MOVE_RECEIVE) && \
|
||||
((x) <= MACH_MSG_TYPE_MAKE_SEND_ONCE))
|
||||
|
||||
#define MACH_MSG_TYPE_PORT_ANY_SEND(x) \
|
||||
(((x) >= MACH_MSG_TYPE_MOVE_SEND) && \
|
||||
((x) <= MACH_MSG_TYPE_MAKE_SEND_ONCE))
|
||||
|
||||
#define MACH_MSG_TYPE_PORT_ANY_RIGHT(x) \
|
||||
(((x) >= MACH_MSG_TYPE_MOVE_RECEIVE) && \
|
||||
((x) <= MACH_MSG_TYPE_MOVE_SEND_ONCE))
|
||||
|
||||
typedef integer_t mach_msg_option_t;
|
||||
|
||||
#define MACH_MSG_OPTION_NONE 0x00000000
|
||||
|
||||
#define MACH_SEND_MSG 0x00000001
|
||||
#define MACH_RCV_MSG 0x00000002
|
||||
|
||||
#define MACH_RCV_LARGE 0x00000004 /* report large message sizes */
|
||||
#define MACH_RCV_LARGE_IDENTITY 0x00000008 /* identify source of large messages */
|
||||
|
||||
#define MACH_SEND_TIMEOUT 0x00000010 /* timeout value applies to send */
|
||||
#define MACH_SEND_OVERRIDE 0x00000020 /* priority override for send */
|
||||
#define MACH_SEND_INTERRUPT 0x00000040 /* don't restart interrupted sends */
|
||||
#define MACH_SEND_NOTIFY 0x00000080 /* arm send-possible notify */
|
||||
#define MACH_SEND_ALWAYS 0x00010000 /* ignore qlimits - kernel only */
|
||||
#define MACH_SEND_TRAILER 0x00020000 /* sender-provided trailer */
|
||||
#define MACH_SEND_NOIMPORTANCE 0x00040000 /* msg won't carry importance */
|
||||
#define MACH_SEND_NODENAP MACH_SEND_NOIMPORTANCE
|
||||
#define MACH_SEND_IMPORTANCE 0x00080000 /* msg carries importance - kernel only */
|
||||
#define MACH_SEND_SYNC_OVERRIDE 0x00100000 /* msg should do sync ipc override */
|
||||
#define MACH_SEND_PROPAGATE_QOS 0x00200000 /* IPC should propagate the caller's QoS */
|
||||
#define MACH_SEND_SYNC_USE_THRPRI MACH_SEND_PROPAGATE_QOS /* obsolete name */
|
||||
#define MACH_SEND_KERNEL 0x00400000 /* full send from kernel space - kernel only */
|
||||
#define MACH_SEND_SYNC_BOOTSTRAP_CHECKIN 0x00800000 /* special reply port should boost thread doing sync bootstrap checkin */
|
||||
|
||||
#define MACH_RCV_TIMEOUT 0x00000100 /* timeout value applies to receive */
|
||||
#define MACH_RCV_NOTIFY 0x00000000 /* legacy name (value was: 0x00000200) */
|
||||
#define MACH_RCV_INTERRUPT 0x00000400 /* don't restart interrupted receive */
|
||||
#define MACH_RCV_VOUCHER 0x00000800 /* willing to receive voucher port */
|
||||
#define MACH_RCV_OVERWRITE 0x00000000 /* scatter receive (deprecated) */
|
||||
#define MACH_RCV_GUARDED_DESC 0x00001000 /* Can receive new guarded descriptor */
|
||||
#define MACH_RCV_SYNC_WAIT 0x00004000 /* sync waiter waiting for rcv */
|
||||
#define MACH_RCV_SYNC_PEEK 0x00008000 /* sync waiter waiting to peek */
|
||||
|
||||
#define MACH_MSG_STRICT_REPLY 0x00000200 /* Enforce specific properties about the reply port, and
|
||||
* the context in which a thread replies to a message.
|
||||
* This flag must be passed on both the SEND and RCV */
|
||||
|
||||
|
||||
/*
|
||||
* NOTE: a 0x00------ RCV mask implies to ask for
|
||||
* a MACH_MSG_TRAILER_FORMAT_0 with 0 Elements,
|
||||
* which is equivalent to a mach_msg_trailer_t.
|
||||
*
|
||||
* XXXMAC: unlike the rest of the MACH_RCV_* flags, MACH_RCV_TRAILER_LABELS
|
||||
* needs its own private bit since we only calculate its fields when absolutely
|
||||
* required.
|
||||
*/
|
||||
#define MACH_RCV_TRAILER_NULL 0
|
||||
#define MACH_RCV_TRAILER_SEQNO 1
|
||||
#define MACH_RCV_TRAILER_SENDER 2
|
||||
#define MACH_RCV_TRAILER_AUDIT 3
|
||||
#define MACH_RCV_TRAILER_CTX 4
|
||||
#define MACH_RCV_TRAILER_AV 7
|
||||
#define MACH_RCV_TRAILER_LABELS 8
|
||||
|
||||
#define MACH_RCV_TRAILER_TYPE(x) (((x) & 0xf) << 28)
|
||||
#define MACH_RCV_TRAILER_ELEMENTS(x) (((x) & 0xf) << 24)
|
||||
#define MACH_RCV_TRAILER_MASK ((0xf << 24))
|
||||
|
||||
#define GET_RCV_ELEMENTS(y) (((y) >> 24) & 0xf)
|
||||
|
||||
|
||||
/*
|
||||
* XXXMAC: note that in the case of MACH_RCV_TRAILER_LABELS,
|
||||
* we just fall through to mach_msg_max_trailer_t.
|
||||
* This is correct behavior since mach_msg_max_trailer_t is defined as
|
||||
* mac_msg_mac_trailer_t which is used for the LABELS trailer.
|
||||
* It also makes things work properly if MACH_RCV_TRAILER_LABELS is ORed
|
||||
* with one of the other options.
|
||||
*/
|
||||
|
||||
#define REQUESTED_TRAILER_SIZE_NATIVE(y) \
|
||||
((mach_msg_trailer_size_t) \
|
||||
((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_NULL) ? \
|
||||
sizeof(mach_msg_trailer_t) : \
|
||||
((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_SEQNO) ? \
|
||||
sizeof(mach_msg_seqno_trailer_t) : \
|
||||
((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_SENDER) ? \
|
||||
sizeof(mach_msg_security_trailer_t) : \
|
||||
((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_AUDIT) ? \
|
||||
sizeof(mach_msg_audit_trailer_t) : \
|
||||
((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_CTX) ? \
|
||||
sizeof(mach_msg_context_trailer_t) : \
|
||||
((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_AV) ? \
|
||||
sizeof(mach_msg_mac_trailer_t) : \
|
||||
sizeof(mach_msg_max_trailer_t))))))))
|
||||
|
||||
|
||||
#define REQUESTED_TRAILER_SIZE(y) REQUESTED_TRAILER_SIZE_NATIVE(y)
|
||||
|
||||
/*
|
||||
* Much code assumes that mach_msg_return_t == kern_return_t.
|
||||
* This definition is useful for descriptive purposes.
|
||||
*
|
||||
* See <mach/error.h> for the format of error codes.
|
||||
* IPC errors are system 4. Send errors are subsystem 0;
|
||||
* receive errors are subsystem 1. The code field is always non-zero.
|
||||
* The high bits of the code field communicate extra information
|
||||
* for some error codes. MACH_MSG_MASK masks off these special bits.
|
||||
*/
|
||||
|
||||
typedef kern_return_t mach_msg_return_t;
|
||||
|
||||
#define MACH_MSG_SUCCESS 0x00000000
|
||||
|
||||
|
||||
#define MACH_MSG_MASK 0x00003e00
|
||||
/* All special error code bits defined below. */
|
||||
#define MACH_MSG_IPC_SPACE 0x00002000
|
||||
/* No room in IPC name space for another capability name. */
|
||||
#define MACH_MSG_VM_SPACE 0x00001000
|
||||
/* No room in VM address space for out-of-line memory. */
|
||||
#define MACH_MSG_IPC_KERNEL 0x00000800
|
||||
/* Kernel resource shortage handling an IPC capability. */
|
||||
#define MACH_MSG_VM_KERNEL 0x00000400
|
||||
/* Kernel resource shortage handling out-of-line memory. */
|
||||
|
||||
#define MACH_SEND_IN_PROGRESS 0x10000001
|
||||
/* Thread is waiting to send. (Internal use only.) */
|
||||
#define MACH_SEND_INVALID_DATA 0x10000002
|
||||
/* Bogus in-line data. */
|
||||
#define MACH_SEND_INVALID_DEST 0x10000003
|
||||
/* Bogus destination port. */
|
||||
#define MACH_SEND_TIMED_OUT 0x10000004
|
||||
/* Message not sent before timeout expired. */
|
||||
#define MACH_SEND_INVALID_VOUCHER 0x10000005
|
||||
/* Bogus voucher port. */
|
||||
#define MACH_SEND_INTERRUPTED 0x10000007
|
||||
/* Software interrupt. */
|
||||
#define MACH_SEND_MSG_TOO_SMALL 0x10000008
|
||||
/* Data doesn't contain a complete message. */
|
||||
#define MACH_SEND_INVALID_REPLY 0x10000009
|
||||
/* Bogus reply port. */
|
||||
#define MACH_SEND_INVALID_RIGHT 0x1000000a
|
||||
/* Bogus port rights in the message body. */
|
||||
#define MACH_SEND_INVALID_NOTIFY 0x1000000b
|
||||
/* Bogus notify port argument. */
|
||||
#define MACH_SEND_INVALID_MEMORY 0x1000000c
|
||||
/* Invalid out-of-line memory pointer. */
|
||||
#define MACH_SEND_NO_BUFFER 0x1000000d
|
||||
/* No message buffer is available. */
|
||||
#define MACH_SEND_TOO_LARGE 0x1000000e
|
||||
/* Send is too large for port */
|
||||
#define MACH_SEND_INVALID_TYPE 0x1000000f
|
||||
/* Invalid msg-type specification. */
|
||||
#define MACH_SEND_INVALID_HEADER 0x10000010
|
||||
/* A field in the header had a bad value. */
|
||||
#define MACH_SEND_INVALID_TRAILER 0x10000011
|
||||
/* The trailer to be sent does not match kernel format. */
|
||||
#define MACH_SEND_INVALID_CONTEXT 0x10000012
|
||||
/* The sending thread context did not match the context on the dest port */
|
||||
#define MACH_SEND_INVALID_RT_OOL_SIZE 0x10000015
|
||||
/* compatibility: no longer a returned error */
|
||||
#define MACH_SEND_NO_GRANT_DEST 0x10000016
|
||||
/* The destination port doesn't accept ports in body */
|
||||
|
||||
#define MACH_RCV_IN_PROGRESS 0x10004001
|
||||
/* Thread is waiting for receive. (Internal use only.) */
|
||||
#define MACH_RCV_INVALID_NAME 0x10004002
|
||||
/* Bogus name for receive port/port-set. */
|
||||
#define MACH_RCV_TIMED_OUT 0x10004003
|
||||
/* Didn't get a message within the timeout value. */
|
||||
#define MACH_RCV_TOO_LARGE 0x10004004
|
||||
/* Message buffer is not large enough for inline data. */
|
||||
#define MACH_RCV_INTERRUPTED 0x10004005
|
||||
/* Software interrupt. */
|
||||
#define MACH_RCV_PORT_CHANGED 0x10004006
|
||||
/* compatibility: no longer a returned error */
|
||||
#define MACH_RCV_INVALID_NOTIFY 0x10004007
|
||||
/* Bogus notify port argument. */
|
||||
#define MACH_RCV_INVALID_DATA 0x10004008
|
||||
/* Bogus message buffer for inline data. */
|
||||
#define MACH_RCV_PORT_DIED 0x10004009
|
||||
/* Port/set was sent away/died during receive. */
|
||||
#define MACH_RCV_IN_SET 0x1000400a
|
||||
/* compatibility: no longer a returned error */
|
||||
#define MACH_RCV_HEADER_ERROR 0x1000400b
|
||||
/* Error receiving message header. See special bits. */
|
||||
#define MACH_RCV_BODY_ERROR 0x1000400c
|
||||
/* Error receiving message body. See special bits. */
|
||||
#define MACH_RCV_INVALID_TYPE 0x1000400d
|
||||
/* Invalid msg-type specification in scatter list. */
|
||||
#define MACH_RCV_SCATTER_SMALL 0x1000400e
|
||||
/* Out-of-line overwrite region is not large enough */
|
||||
#define MACH_RCV_INVALID_TRAILER 0x1000400f
|
||||
/* trailer type or number of trailer elements not supported */
|
||||
#define MACH_RCV_IN_PROGRESS_TIMED 0x10004011
|
||||
/* Waiting for receive with timeout. (Internal use only.) */
|
||||
#define MACH_RCV_INVALID_REPLY 0x10004012
|
||||
/* invalid reply port used in a STRICT_REPLY message */
|
||||
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/*
|
||||
* Routine: mach_msg_overwrite
|
||||
* Purpose:
|
||||
* Send and/or receive a message. If the message operation
|
||||
* is interrupted, and the user did not request an indication
|
||||
* of that fact, then restart the appropriate parts of the
|
||||
* operation silently (trap version does not restart).
|
||||
*
|
||||
* Distinct send and receive buffers may be specified. If
|
||||
* no separate receive buffer is specified, the msg parameter
|
||||
* will be used for both send and receive operations.
|
||||
*
|
||||
* In addition to a distinct receive buffer, that buffer may
|
||||
* already contain scatter control information to direct the
|
||||
* receiving of the message.
|
||||
*/
|
||||
__WATCHOS_PROHIBITED __TVOS_PROHIBITED
|
||||
extern mach_msg_return_t mach_msg_overwrite(
|
||||
mach_msg_header_t *msg,
|
||||
mach_msg_option_t option,
|
||||
mach_msg_size_t send_size,
|
||||
mach_msg_size_t rcv_size,
|
||||
mach_port_name_t rcv_name,
|
||||
mach_msg_timeout_t timeout,
|
||||
mach_port_name_t notify,
|
||||
mach_msg_header_t *rcv_msg,
|
||||
mach_msg_size_t rcv_limit);
|
||||
|
||||
|
||||
/*
|
||||
* Routine: mach_msg
|
||||
* Purpose:
|
||||
* Send and/or receive a message. If the message operation
|
||||
* is interrupted, and the user did not request an indication
|
||||
* of that fact, then restart the appropriate parts of the
|
||||
* operation silently (trap version does not restart).
|
||||
*/
|
||||
__WATCHOS_PROHIBITED __TVOS_PROHIBITED
|
||||
extern mach_msg_return_t mach_msg(
|
||||
mach_msg_header_t *msg,
|
||||
mach_msg_option_t option,
|
||||
mach_msg_size_t send_size,
|
||||
mach_msg_size_t rcv_size,
|
||||
mach_port_name_t rcv_name,
|
||||
mach_msg_timeout_t timeout,
|
||||
mach_port_name_t notify);
|
||||
|
||||
/*
|
||||
* Routine: mach_voucher_deallocate
|
||||
* Purpose:
|
||||
* Deallocate a mach voucher created or received in a message. Drops
|
||||
* one (send right) reference to the voucher.
|
||||
*/
|
||||
__WATCHOS_PROHIBITED __TVOS_PROHIBITED
|
||||
extern kern_return_t mach_voucher_deallocate(
|
||||
mach_port_name_t voucher);
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _MACH_MESSAGE_H_ */
|
|
@ -0,0 +1,422 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
* NOTICE: This file was modified by McAfee Research in 2004 to introduce
|
||||
* support for mandatory and extensible security protections. This notice
|
||||
* is included in support of clause 2.2 (b) of the Apple Public License,
|
||||
* Version 2.0.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
* File: mach/port.h
|
||||
*
|
||||
* Definition of a Mach port
|
||||
*
|
||||
* Mach ports are the endpoints to Mach-implemented communications
|
||||
* channels (usually uni-directional message queues, but other types
|
||||
* also exist).
|
||||
*
|
||||
* Unique collections of these endpoints are maintained for each
|
||||
* Mach task. Each Mach port in the task's collection is given a
|
||||
* [task-local] name to identify it - and the the various "rights"
|
||||
* held by the task for that specific endpoint.
|
||||
*
|
||||
* This header defines the types used to identify these Mach ports
|
||||
* and the various rights associated with them. For more info see:
|
||||
*
|
||||
* <mach/mach_port.h> - manipulation of port rights in a given space
|
||||
* <mach/message.h> - message queue [and port right passing] mechanism
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_PORT_H_
|
||||
#define _MACH_PORT_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <stdint.h>
|
||||
#include <mach/boolean.h>
|
||||
#include <mach/machine/vm_types.h>
|
||||
|
||||
/*
|
||||
* mach_port_name_t - the local identity for a Mach port
|
||||
*
|
||||
* The name is Mach port namespace specific. It is used to
|
||||
* identify the rights held for that port by the task whose
|
||||
* namespace is implied [or specifically provided].
|
||||
*
|
||||
* Use of this type usually implies just a name - no rights.
|
||||
* See mach_port_t for a type that implies a "named right."
|
||||
*
|
||||
*/
|
||||
|
||||
typedef natural_t mach_port_name_t;
|
||||
typedef mach_port_name_t *mach_port_name_array_t;
|
||||
|
||||
|
||||
/*
|
||||
* mach_port_t - a named port right
|
||||
*
|
||||
* In user-space, "rights" are represented by the name of the
|
||||
* right in the Mach port namespace. Even so, this type is
|
||||
* presented as a unique one to more clearly denote the presence
|
||||
* of a right coming along with the name.
|
||||
*
|
||||
* Often, various rights for a port held in a single name space
|
||||
* will coalesce and are, therefore, be identified by a single name
|
||||
* [this is the case for send and receive rights]. But not
|
||||
* always [send-once rights currently get a unique name for
|
||||
* each right].
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/_types.h>
|
||||
#include <sys/_types/_mach_port_t.h>
|
||||
|
||||
|
||||
typedef mach_port_t *mach_port_array_t;
|
||||
|
||||
/*
|
||||
* MACH_PORT_NULL is a legal value that can be carried in messages.
|
||||
* It indicates the absence of any port or port rights. (A port
|
||||
* argument keeps the message from being "simple", even if the
|
||||
* value is MACH_PORT_NULL.) The value MACH_PORT_DEAD is also a legal
|
||||
* value that can be carried in messages. It indicates
|
||||
* that a port right was present, but it died.
|
||||
*/
|
||||
|
||||
#define MACH_PORT_NULL 0 /* intentional loose typing */
|
||||
#define MACH_PORT_DEAD ((mach_port_name_t) ~0)
|
||||
#define MACH_PORT_VALID(name) \
|
||||
(((name) != MACH_PORT_NULL) && \
|
||||
((name) != MACH_PORT_DEAD))
|
||||
|
||||
|
||||
/*
|
||||
* For kernel-selected [assigned] port names, the name is
|
||||
* comprised of two parts: a generation number and an index.
|
||||
* This approach keeps the exact same name from being generated
|
||||
* and reused too quickly [to catch right/reference counting bugs].
|
||||
* The dividing line between the constituent parts is exposed so
|
||||
* that efficient "mach_port_name_t to data structure pointer"
|
||||
* conversion implementation can be made. But it is possible
|
||||
* for user-level code to assign their own names to Mach ports.
|
||||
* These are not required to participate in this algorithm. So
|
||||
* care should be taken before "assuming" this model.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NO_PORT_GEN
|
||||
|
||||
#define MACH_PORT_INDEX(name) ((name) >> 8)
|
||||
#define MACH_PORT_GEN(name) (((name) & 0xff) << 24)
|
||||
#define MACH_PORT_MAKE(index, gen) \
|
||||
(((index) << 8) | (gen) >> 24)
|
||||
|
||||
#else /* NO_PORT_GEN */
|
||||
|
||||
#define MACH_PORT_INDEX(name) (name)
|
||||
#define MACH_PORT_GEN(name) (0)
|
||||
#define MACH_PORT_MAKE(index, gen) (index)
|
||||
|
||||
#endif /* NO_PORT_GEN */
|
||||
|
||||
|
||||
/*
|
||||
* These are the different rights a task may have for a port.
|
||||
* The MACH_PORT_RIGHT_* definitions are used as arguments
|
||||
* to mach_port_allocate, mach_port_get_refs, etc, to specify
|
||||
* a particular right to act upon. The mach_port_names and
|
||||
* mach_port_type calls return bitmasks using the MACH_PORT_TYPE_*
|
||||
* definitions. This is because a single name may denote
|
||||
* multiple rights.
|
||||
*/
|
||||
|
||||
typedef natural_t mach_port_right_t;
|
||||
|
||||
#define MACH_PORT_RIGHT_SEND ((mach_port_right_t) 0)
|
||||
#define MACH_PORT_RIGHT_RECEIVE ((mach_port_right_t) 1)
|
||||
#define MACH_PORT_RIGHT_SEND_ONCE ((mach_port_right_t) 2)
|
||||
#define MACH_PORT_RIGHT_PORT_SET ((mach_port_right_t) 3)
|
||||
#define MACH_PORT_RIGHT_DEAD_NAME ((mach_port_right_t) 4)
|
||||
#define MACH_PORT_RIGHT_LABELH ((mach_port_right_t) 5) /* obsolete right */
|
||||
#define MACH_PORT_RIGHT_NUMBER ((mach_port_right_t) 6) /* right not implemented */
|
||||
|
||||
|
||||
typedef natural_t mach_port_type_t;
|
||||
typedef mach_port_type_t *mach_port_type_array_t;
|
||||
|
||||
#define MACH_PORT_TYPE(right) \
|
||||
((mach_port_type_t)(((mach_port_type_t) 1) \
|
||||
<< ((right) + ((mach_port_right_t) 16))))
|
||||
#define MACH_PORT_TYPE_NONE ((mach_port_type_t) 0L)
|
||||
#define MACH_PORT_TYPE_SEND MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND)
|
||||
#define MACH_PORT_TYPE_RECEIVE MACH_PORT_TYPE(MACH_PORT_RIGHT_RECEIVE)
|
||||
#define MACH_PORT_TYPE_SEND_ONCE MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND_ONCE)
|
||||
#define MACH_PORT_TYPE_PORT_SET MACH_PORT_TYPE(MACH_PORT_RIGHT_PORT_SET)
|
||||
#define MACH_PORT_TYPE_DEAD_NAME MACH_PORT_TYPE(MACH_PORT_RIGHT_DEAD_NAME)
|
||||
#define MACH_PORT_TYPE_LABELH MACH_PORT_TYPE(MACH_PORT_RIGHT_LABELH) /* obsolete */
|
||||
|
||||
|
||||
|
||||
/* Convenient combinations. */
|
||||
|
||||
#define MACH_PORT_TYPE_SEND_RECEIVE \
|
||||
(MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_RECEIVE)
|
||||
#define MACH_PORT_TYPE_SEND_RIGHTS \
|
||||
(MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_SEND_ONCE)
|
||||
#define MACH_PORT_TYPE_PORT_RIGHTS \
|
||||
(MACH_PORT_TYPE_SEND_RIGHTS|MACH_PORT_TYPE_RECEIVE)
|
||||
#define MACH_PORT_TYPE_PORT_OR_DEAD \
|
||||
(MACH_PORT_TYPE_PORT_RIGHTS|MACH_PORT_TYPE_DEAD_NAME)
|
||||
#define MACH_PORT_TYPE_ALL_RIGHTS \
|
||||
(MACH_PORT_TYPE_PORT_OR_DEAD|MACH_PORT_TYPE_PORT_SET)
|
||||
|
||||
/* Dummy type bits that mach_port_type/mach_port_names can return. */
|
||||
|
||||
#define MACH_PORT_TYPE_DNREQUEST 0x80000000
|
||||
#define MACH_PORT_TYPE_SPREQUEST 0x40000000
|
||||
#define MACH_PORT_TYPE_SPREQUEST_DELAYED 0x20000000
|
||||
|
||||
/* User-references for capabilities. */
|
||||
|
||||
typedef natural_t mach_port_urefs_t;
|
||||
typedef integer_t mach_port_delta_t; /* change in urefs */
|
||||
|
||||
/* Attributes of ports. (See mach_port_get_receive_status.) */
|
||||
|
||||
typedef natural_t mach_port_seqno_t; /* sequence number */
|
||||
typedef natural_t mach_port_mscount_t; /* make-send count */
|
||||
typedef natural_t mach_port_msgcount_t; /* number of msgs */
|
||||
typedef natural_t mach_port_rights_t; /* number of rights */
|
||||
|
||||
/*
|
||||
* Are there outstanding send rights for a given port?
|
||||
*/
|
||||
#define MACH_PORT_SRIGHTS_NONE 0 /* no srights */
|
||||
#define MACH_PORT_SRIGHTS_PRESENT 1 /* srights */
|
||||
typedef unsigned int mach_port_srights_t; /* status of send rights */
|
||||
|
||||
typedef struct mach_port_status {
|
||||
mach_port_rights_t mps_pset; /* count of containing port sets */
|
||||
mach_port_seqno_t mps_seqno; /* sequence number */
|
||||
mach_port_mscount_t mps_mscount; /* make-send count */
|
||||
mach_port_msgcount_t mps_qlimit; /* queue limit */
|
||||
mach_port_msgcount_t mps_msgcount; /* number in the queue */
|
||||
mach_port_rights_t mps_sorights; /* how many send-once rights */
|
||||
boolean_t mps_srights; /* do send rights exist? */
|
||||
boolean_t mps_pdrequest; /* port-deleted requested? */
|
||||
boolean_t mps_nsrequest; /* no-senders requested? */
|
||||
natural_t mps_flags; /* port flags */
|
||||
} mach_port_status_t;
|
||||
|
||||
/* System-wide values for setting queue limits on a port */
|
||||
#define MACH_PORT_QLIMIT_ZERO (0)
|
||||
#define MACH_PORT_QLIMIT_BASIC (5)
|
||||
#define MACH_PORT_QLIMIT_SMALL (16)
|
||||
#define MACH_PORT_QLIMIT_LARGE (1024)
|
||||
#define MACH_PORT_QLIMIT_KERNEL (65534)
|
||||
#define MACH_PORT_QLIMIT_MIN MACH_PORT_QLIMIT_ZERO
|
||||
#define MACH_PORT_QLIMIT_DEFAULT MACH_PORT_QLIMIT_BASIC
|
||||
#define MACH_PORT_QLIMIT_MAX MACH_PORT_QLIMIT_LARGE
|
||||
|
||||
typedef struct mach_port_limits {
|
||||
mach_port_msgcount_t mpl_qlimit; /* number of msgs */
|
||||
} mach_port_limits_t;
|
||||
|
||||
/* Possible values for mps_flags (part of mach_port_status_t) */
|
||||
#define MACH_PORT_STATUS_FLAG_TEMPOWNER 0x01
|
||||
#define MACH_PORT_STATUS_FLAG_GUARDED 0x02
|
||||
#define MACH_PORT_STATUS_FLAG_STRICT_GUARD 0x04
|
||||
#define MACH_PORT_STATUS_FLAG_IMP_DONATION 0x08
|
||||
#define MACH_PORT_STATUS_FLAG_REVIVE 0x10
|
||||
#define MACH_PORT_STATUS_FLAG_TASKPTR 0x20
|
||||
#define MACH_PORT_STATUS_FLAG_GUARD_IMMOVABLE_RECEIVE 0x40
|
||||
#define MACH_PORT_STATUS_FLAG_NO_GRANT 0x80
|
||||
|
||||
typedef struct mach_port_info_ext {
|
||||
mach_port_status_t mpie_status;
|
||||
mach_port_msgcount_t mpie_boost_cnt;
|
||||
uint32_t reserved[6];
|
||||
} mach_port_info_ext_t;
|
||||
|
||||
typedef integer_t *mach_port_info_t; /* varying array of natural_t */
|
||||
|
||||
/* Flavors for mach_port_get/set_attributes() */
|
||||
typedef int mach_port_flavor_t;
|
||||
#define MACH_PORT_LIMITS_INFO 1 /* uses mach_port_limits_t */
|
||||
#define MACH_PORT_RECEIVE_STATUS 2 /* uses mach_port_status_t */
|
||||
#define MACH_PORT_DNREQUESTS_SIZE 3 /* info is int */
|
||||
#define MACH_PORT_TEMPOWNER 4 /* indicates receive right will be reassigned to another task */
|
||||
#define MACH_PORT_IMPORTANCE_RECEIVER 5 /* indicates recieve right accepts priority donation */
|
||||
#define MACH_PORT_DENAP_RECEIVER 6 /* indicates receive right accepts de-nap donation */
|
||||
#define MACH_PORT_INFO_EXT 7 /* uses mach_port_info_ext_t */
|
||||
|
||||
#define MACH_PORT_LIMITS_INFO_COUNT ((natural_t) \
|
||||
(sizeof(mach_port_limits_t)/sizeof(natural_t)))
|
||||
#define MACH_PORT_RECEIVE_STATUS_COUNT ((natural_t) \
|
||||
(sizeof(mach_port_status_t)/sizeof(natural_t)))
|
||||
#define MACH_PORT_DNREQUESTS_SIZE_COUNT 1
|
||||
#define MACH_PORT_INFO_EXT_COUNT ((natural_t) \
|
||||
(sizeof(mach_port_info_ext_t)/sizeof(natural_t)))
|
||||
/*
|
||||
* Structure used to pass information about port allocation requests.
|
||||
* Must be padded to 64-bits total length.
|
||||
*/
|
||||
typedef struct mach_port_qos {
|
||||
unsigned int name:1; /* name given */
|
||||
unsigned int prealloc:1; /* prealloced message */
|
||||
boolean_t pad1:30;
|
||||
natural_t len;
|
||||
} mach_port_qos_t;
|
||||
|
||||
/* Mach Port Guarding definitions */
|
||||
|
||||
/*
|
||||
* Flags for mach_port_options (used for
|
||||
* invocation of mach_port_construct).
|
||||
* Indicates attributes to be set for the newly
|
||||
* allocated port.
|
||||
*/
|
||||
#define MPO_CONTEXT_AS_GUARD 0x01 /* Add guard to the port */
|
||||
#define MPO_QLIMIT 0x02 /* Set qlimit for the port msg queue */
|
||||
#define MPO_TEMPOWNER 0x04 /* Set the tempowner bit of the port */
|
||||
#define MPO_IMPORTANCE_RECEIVER 0x08 /* Mark the port as importance receiver */
|
||||
#define MPO_INSERT_SEND_RIGHT 0x10 /* Insert a send right for the port */
|
||||
#define MPO_STRICT 0x20 /* Apply strict guarding for port */
|
||||
#define MPO_DENAP_RECEIVER 0x40 /* Mark the port as App de-nap receiver */
|
||||
#define MPO_IMMOVABLE_RECEIVE 0x80 /* Mark the port as immovable; protected by the guard context */
|
||||
/*
|
||||
* Structure to define optional attributes for a newly
|
||||
* constructed port.
|
||||
*/
|
||||
typedef struct mach_port_options {
|
||||
uint32_t flags; /* Flags defining attributes for port */
|
||||
mach_port_limits_t mpl; /* Message queue limit for port */
|
||||
uint64_t reserved[2]; /* Reserved */
|
||||
}mach_port_options_t;
|
||||
|
||||
typedef mach_port_options_t *mach_port_options_ptr_t;
|
||||
|
||||
/*
|
||||
* EXC_GUARD represents a guard violation for both
|
||||
* mach ports and file descriptors. GUARD_TYPE_ is used
|
||||
* to differentiate among them.
|
||||
*/
|
||||
#define GUARD_TYPE_MACH_PORT 0x1
|
||||
|
||||
/* Reasons for exception for a guarded mach port */
|
||||
enum mach_port_guard_exception_codes {
|
||||
kGUARD_EXC_DESTROY = 1u << 0,
|
||||
kGUARD_EXC_MOD_REFS = 1u << 1,
|
||||
kGUARD_EXC_SET_CONTEXT = 1u << 2,
|
||||
kGUARD_EXC_UNGUARDED = 1u << 3,
|
||||
kGUARD_EXC_INCORRECT_GUARD = 1u << 4,
|
||||
kGUARD_EXC_IMMOVABLE = 1u << 5,
|
||||
kGUARD_EXC_STRICT_REPLY = 1u << 6,
|
||||
/* start of [optionally] non-fatal guards */
|
||||
kGUARD_EXC_INVALID_RIGHT = 1u << 8,
|
||||
kGUARD_EXC_INVALID_NAME = 1u << 9,
|
||||
kGUARD_EXC_INVALID_VALUE = 1u << 10,
|
||||
kGUARD_EXC_INVALID_ARGUMENT = 1u << 11,
|
||||
kGUARD_EXC_RIGHT_EXISTS = 1u << 12,
|
||||
kGUARD_EXC_KERN_NO_SPACE = 1u << 13,
|
||||
kGUARD_EXC_KERN_FAILURE = 1u << 14,
|
||||
kGUARD_EXC_KERN_RESOURCE = 1u << 15,
|
||||
kGUARD_EXC_SEND_INVALID_REPLY = 1u << 16,
|
||||
kGUARD_EXC_SEND_INVALID_VOUCHER = 1u << 17,
|
||||
kGUARD_EXC_SEND_INVALID_RIGHT = 1u << 18,
|
||||
kGUARD_EXC_RCV_INVALID_NAME = 1u << 19,
|
||||
kGUARD_EXC_RCV_GUARDED_DESC = 1u << 20, /* should never be fatal; for development only */
|
||||
};
|
||||
|
||||
#define MAX_FATAL_kGUARD_EXC_CODE (1u << 6)
|
||||
|
||||
/*
|
||||
* These flags are used as bits in the subcode of kGUARD_EXC_STRICT_REPLY exceptions.
|
||||
*/
|
||||
#define MPG_FLAGS_STRICT_REPLY_INVALID_REPLY_DISP (0x01ull << 56)
|
||||
#define MPG_FLAGS_STRICT_REPLY_INVALID_REPLY_PORT (0x02ull << 56)
|
||||
#define MPG_FLAGS_STRICT_REPLY_INVALID_VOUCHER (0x04ull << 56)
|
||||
#define MPG_FLAGS_STRICT_REPLY_NO_BANK_ATTR (0x08ull << 56)
|
||||
#define MPG_FLAGS_STRICT_REPLY_MISMATCHED_PERSONA (0x10ull << 56)
|
||||
#define MPG_FLAGS_STRICT_REPLY_MASK (0xffull << 56)
|
||||
|
||||
/*
|
||||
* Flags for mach_port_guard_with_flags. These flags extend
|
||||
* the attributes associated with a guarded port.
|
||||
*/
|
||||
#define MPG_STRICT 0x01 /* Apply strict guarding for a port */
|
||||
#define MPG_IMMOVABLE_RECEIVE 0x02 /* Receive right cannot be moved out of the space */
|
||||
|
||||
#if !__DARWIN_UNIX03 && !defined(_NO_PORT_T_FROM_MACH)
|
||||
/*
|
||||
* Mach 3.0 renamed everything to have mach_ in front of it.
|
||||
* These types and macros are provided for backward compatibility
|
||||
* but are deprecated.
|
||||
*/
|
||||
typedef mach_port_t port_t;
|
||||
typedef mach_port_name_t port_name_t;
|
||||
typedef mach_port_name_t *port_name_array_t;
|
||||
|
||||
#define PORT_NULL ((port_t) 0)
|
||||
#define PORT_DEAD ((port_t) ~0)
|
||||
#define PORT_VALID(name) \
|
||||
((port_t)(name) != PORT_NULL && (port_t)(name) != PORT_DEAD)
|
||||
|
||||
#endif /* !__DARWIN_UNIX03 && !_NO_PORT_T_FROM_MACH */
|
||||
|
||||
#endif /* _MACH_PORT_H_ */
|
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* @OSF_COPYRIGHT@
|
||||
*/
|
||||
/*
|
||||
* Mach Operating System
|
||||
* Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||
* the rights to redistribute these changes.
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
* File: mach/thread_status.h
|
||||
* Author: Avadis Tevanian, Jr.
|
||||
*
|
||||
* This file contains the structure definitions for the user-visible
|
||||
* thread state. This thread state is examined with the thread_get_state
|
||||
* kernel call and may be changed with the thread_set_state kernel call.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_THREAD_STATUS_H_
|
||||
#define _MACH_THREAD_STATUS_H_
|
||||
|
||||
/*
|
||||
* The actual structure that comprises the thread state is defined
|
||||
* in the machine dependent module.
|
||||
*/
|
||||
#include <mach/machine/vm_types.h>
|
||||
#include <mach/machine/thread_status.h>
|
||||
#include <mach/machine/thread_state.h>
|
||||
|
||||
/*
|
||||
* Generic definition for machine-dependent thread status.
|
||||
*/
|
||||
|
||||
typedef natural_t *thread_state_t; /* Variable-length array */
|
||||
|
||||
/* THREAD_STATE_MAX is now defined in <mach/machine/thread_state.h> */
|
||||
typedef natural_t thread_state_data_t[THREAD_STATE_MAX];
|
||||
|
||||
#define THREAD_STATE_FLAVOR_LIST 0 /* List of valid flavors */
|
||||
#define THREAD_STATE_FLAVOR_LIST_NEW 128
|
||||
#define THREAD_STATE_FLAVOR_LIST_10_9 129
|
||||
#define THREAD_STATE_FLAVOR_LIST_10_13 130
|
||||
#define THREAD_STATE_FLAVOR_LIST_10_15 131
|
||||
|
||||
typedef int thread_state_flavor_t;
|
||||
typedef thread_state_flavor_t *thread_state_flavor_array_t;
|
||||
|
||||
#endif /* _MACH_THREAD_STATUS_H_ */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2004-2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#if defined (__i386__) || defined (__x86_64__)
|
||||
#include "i386/_param.h"
|
||||
#else
|
||||
#error architecture not supported
|
||||
#endif
|
|
@ -0,0 +1,45 @@
|
|||
/*-
|
||||
* Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: /repoman/r/ncvs/src/include/monetary.h,v 1.7 2002/09/20 08:22:48 mike Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MONETARY_H_
|
||||
#define _MONETARY_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
#include <sys/_types/_ssize_t.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
ssize_t strfmon(char *, size_t, const char *, ...);
|
||||
__END_DECLS
|
||||
|
||||
#ifdef _USE_EXTENDED_LOCALES_
|
||||
#include <xlocale/_monetary.h>
|
||||
#endif /* _USE_EXTENDED_LOCALES_ */
|
||||
|
||||
#endif /* !_MONETARY_H_ */
|
|
@ -0,0 +1,120 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Margo Seltzer.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ndbm.h 8.1 (Berkeley) 6/2/93
|
||||
*/
|
||||
|
||||
#ifndef _NDBM_H_
|
||||
#define _NDBM_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_mode_t.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
/* Map dbm interface onto db(3). */
|
||||
#include <fcntl.h>
|
||||
#define DBM_RDONLY O_RDONLY
|
||||
#endif
|
||||
|
||||
/* Flags to dbm_store(). */
|
||||
#define DBM_INSERT 0
|
||||
#define DBM_REPLACE 1
|
||||
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
/*
|
||||
* The db(3) support for ndbm(3) always appends this suffix to the
|
||||
* file name to avoid overwriting the user's original database.
|
||||
*/
|
||||
#define DBM_SUFFIX ".db"
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
void *dptr;
|
||||
size_t dsize;
|
||||
} datum;
|
||||
|
||||
#ifndef _DBM
|
||||
#define _DBM
|
||||
typedef struct {
|
||||
char __opaque[sizeof(int) + 8 * sizeof(void *)];
|
||||
} DBM;
|
||||
#endif /* _DBM */
|
||||
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
#define dbm_pagfno(a) DBM_PAGFNO_NOT_AVAILABLE
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
int dbm_clearerr( DBM *);
|
||||
void dbm_close(DBM *);
|
||||
int dbm_delete(DBM *, datum);
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
int dbm_dirfno(DBM *);
|
||||
#endif
|
||||
int dbm_error( DBM *);
|
||||
datum dbm_fetch(DBM *, datum);
|
||||
datum dbm_firstkey(DBM *);
|
||||
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
long dbm_forder(DBM *, datum);
|
||||
#endif
|
||||
datum dbm_nextkey(DBM *);
|
||||
DBM *dbm_open(const char *, int, mode_t);
|
||||
int dbm_store(DBM *, datum, datum, int);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_NDBM_H_ */
|
|
@ -0,0 +1,442 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2019 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)if.h 8.1 (Berkeley) 6/10/93
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_H_
|
||||
#define _NET_IF_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <net/net_kev.h>
|
||||
|
||||
#define IF_NAMESIZE 16
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#include <sys/appleapiopts.h>
|
||||
#ifdef __APPLE__
|
||||
|
||||
#include <net/if_var.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#endif
|
||||
|
||||
struct if_clonereq {
|
||||
int ifcr_total; /* total cloners (out) */
|
||||
int ifcr_count; /* room for this many in user buffer */
|
||||
char *ifcr_buffer; /* buffer for cloner names */
|
||||
};
|
||||
|
||||
|
||||
#define IFF_UP 0x1 /* interface is up */
|
||||
#define IFF_BROADCAST 0x2 /* broadcast address valid */
|
||||
#define IFF_DEBUG 0x4 /* turn on debugging */
|
||||
#define IFF_LOOPBACK 0x8 /* is a loopback net */
|
||||
#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
|
||||
#define IFF_NOTRAILERS 0x20 /* obsolete: avoid use of trailers */
|
||||
#define IFF_RUNNING 0x40 /* resources allocated */
|
||||
#define IFF_NOARP 0x80 /* no address resolution protocol */
|
||||
#define IFF_PROMISC 0x100 /* receive all packets */
|
||||
#define IFF_ALLMULTI 0x200 /* receive all multicast packets */
|
||||
#define IFF_OACTIVE 0x400 /* transmission in progress */
|
||||
#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */
|
||||
#define IFF_LINK0 0x1000 /* per link layer defined bit */
|
||||
#define IFF_LINK1 0x2000 /* per link layer defined bit */
|
||||
#define IFF_LINK2 0x4000 /* per link layer defined bit */
|
||||
#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */
|
||||
#define IFF_MULTICAST 0x8000 /* supports multicast */
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Capabilities that interfaces can advertise.
|
||||
*
|
||||
* struct ifnet.if_capabilities
|
||||
* contains the optional features & capabilities a particular interface
|
||||
* supports (not only the driver but also the detected hw revision).
|
||||
* Capabilities are defined by IFCAP_* below.
|
||||
* struct ifnet.if_capenable
|
||||
* contains the enabled (either by default or through ifconfig) optional
|
||||
* features & capabilities on this interface.
|
||||
* Capabilities are defined by IFCAP_* below.
|
||||
* struct if_data.ifi_hwassist in IFNET_* form, defined in net/kpi_interface.h,
|
||||
* contains the enabled optional features & capabilites that can be used
|
||||
* individually per packet and are specified in the mbuf pkthdr.csum_flags
|
||||
* field. IFCAP_* and IFNET_* do not match one to one and IFNET_* may be
|
||||
* more detailed or differentiated than IFCAP_*.
|
||||
* IFNET_* hwassist flags have corresponding CSUM_* in sys/mbuf.h
|
||||
*/
|
||||
#define IFCAP_RXCSUM 0x00001 /* can offload checksum on RX */
|
||||
#define IFCAP_TXCSUM 0x00002 /* can offload checksum on TX */
|
||||
#define IFCAP_VLAN_MTU 0x00004 /* VLAN-compatible MTU */
|
||||
#define IFCAP_VLAN_HWTAGGING 0x00008 /* hardware VLAN tag support */
|
||||
#define IFCAP_JUMBO_MTU 0x00010 /* 9000 byte MTU supported */
|
||||
#define IFCAP_TSO4 0x00020 /* can do TCP Segmentation Offload */
|
||||
#define IFCAP_TSO6 0x00040 /* can do TCP6 Segmentation Offload */
|
||||
#define IFCAP_LRO 0x00080 /* can do Large Receive Offload */
|
||||
#define IFCAP_AV 0x00100 /* can do 802.1 AV Bridging */
|
||||
#define IFCAP_TXSTATUS 0x00200 /* can return linklevel xmit status */
|
||||
#define IFCAP_SKYWALK 0x00400 /* Skywalk mode supported/enabled */
|
||||
#define IFCAP_HW_TIMESTAMP 0x00800 /* Time stamping in hardware */
|
||||
#define IFCAP_SW_TIMESTAMP 0x01000 /* Time stamping in software */
|
||||
#define IFCAP_CSUM_PARTIAL 0x02000 /* can offload partial checksum */
|
||||
#define IFCAP_CSUM_ZERO_INVERT 0x04000 /* can invert 0 to -0 (0xffff) */
|
||||
|
||||
#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)
|
||||
#define IFCAP_TSO (IFCAP_TSO4 | IFCAP_TSO6)
|
||||
|
||||
#define IFCAP_VALID (IFCAP_HWCSUM | IFCAP_TSO | IFCAP_LRO | IFCAP_VLAN_MTU | \
|
||||
IFCAP_VLAN_HWTAGGING | IFCAP_JUMBO_MTU | IFCAP_AV | IFCAP_TXSTATUS | \
|
||||
IFCAP_SKYWALK | IFCAP_SW_TIMESTAMP | IFCAP_HW_TIMESTAMP | \
|
||||
IFCAP_CSUM_PARTIAL | IFCAP_CSUM_ZERO_INVERT)
|
||||
|
||||
#define IFQ_MAXLEN 128
|
||||
#define IFNET_SLOWHZ 1 /* granularity is 1 second */
|
||||
#define IFQ_TARGET_DELAY (10ULL * 1000 * 1000) /* 10 ms */
|
||||
#define IFQ_UPDATE_INTERVAL (100ULL * 1000 * 1000) /* 100 ms */
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about interfaces
|
||||
* from sysctl and the routing socket
|
||||
*/
|
||||
struct if_msghdr {
|
||||
unsigned short ifm_msglen; /* to skip non-understood messages */
|
||||
unsigned char ifm_version; /* future binary compatability */
|
||||
unsigned char ifm_type; /* message type */
|
||||
int ifm_addrs; /* like rtm_addrs */
|
||||
int ifm_flags; /* value of if_flags */
|
||||
unsigned short ifm_index; /* index for associated ifp */
|
||||
struct if_data ifm_data; /* statistics and other data about if */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about interface addresses
|
||||
* from sysctl and the routing socket
|
||||
*/
|
||||
struct ifa_msghdr {
|
||||
unsigned short ifam_msglen; /* to skip non-understood messages */
|
||||
unsigned char ifam_version; /* future binary compatability */
|
||||
unsigned char ifam_type; /* message type */
|
||||
int ifam_addrs; /* like rtm_addrs */
|
||||
int ifam_flags; /* value of ifa_flags */
|
||||
unsigned short ifam_index; /* index for associated ifp */
|
||||
int ifam_metric; /* value of ifa_metric */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about multicast addresses
|
||||
* from the routing socket
|
||||
*/
|
||||
struct ifma_msghdr {
|
||||
unsigned short ifmam_msglen; /* to skip non-understood messages */
|
||||
unsigned char ifmam_version; /* future binary compatability */
|
||||
unsigned char ifmam_type; /* message type */
|
||||
int ifmam_addrs; /* like rtm_addrs */
|
||||
int ifmam_flags; /* value of ifa_flags */
|
||||
unsigned short ifmam_index; /* index for associated ifp */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about interfaces
|
||||
* from sysctl
|
||||
*/
|
||||
struct if_msghdr2 {
|
||||
u_short ifm_msglen; /* to skip over non-understood messages */
|
||||
u_char ifm_version; /* future binary compatability */
|
||||
u_char ifm_type; /* message type */
|
||||
int ifm_addrs; /* like rtm_addrs */
|
||||
int ifm_flags; /* value of if_flags */
|
||||
u_short ifm_index; /* index for associated ifp */
|
||||
int ifm_snd_len; /* instantaneous length of send queue */
|
||||
int ifm_snd_maxlen; /* maximum length of send queue */
|
||||
int ifm_snd_drops; /* number of drops in send queue */
|
||||
int ifm_timer; /* time until if_watchdog called */
|
||||
struct if_data64 ifm_data; /* statistics and other data */
|
||||
};
|
||||
|
||||
/*
|
||||
* Message format for use in obtaining information about multicast addresses
|
||||
* from sysctl
|
||||
*/
|
||||
struct ifma_msghdr2 {
|
||||
u_short ifmam_msglen; /* to skip over non-understood messages */
|
||||
u_char ifmam_version; /* future binary compatability */
|
||||
u_char ifmam_type; /* message type */
|
||||
int ifmam_addrs; /* like rtm_addrs */
|
||||
int ifmam_flags; /* value of ifa_flags */
|
||||
u_short ifmam_index; /* index for associated ifp */
|
||||
int32_t ifmam_refcount;
|
||||
};
|
||||
|
||||
/*
|
||||
* ifdevmtu: interface device mtu
|
||||
* Used with SIOCGIFDEVMTU to get the current mtu in use by the device,
|
||||
* as well as the minimum and maximum mtu allowed by the device.
|
||||
*/
|
||||
struct ifdevmtu {
|
||||
int ifdm_current;
|
||||
int ifdm_min;
|
||||
int ifdm_max;
|
||||
};
|
||||
|
||||
#pragma pack(4)
|
||||
|
||||
/*
|
||||
* ifkpi: interface kpi ioctl
|
||||
* Used with SIOCSIFKPI and SIOCGIFKPI.
|
||||
*
|
||||
* ifk_module_id - From in the kernel, a value from kev_vendor_code_find. From
|
||||
* user space, a value from SIOCGKEVVENDOR ioctl on a kernel event socket.
|
||||
* ifk_type - The type. Types are specific to each module id.
|
||||
* ifk_data - The data. ifk_ptr may be a 64bit pointer for 64 bit processes.
|
||||
*
|
||||
* Copying data between user space and kernel space is done using copyin
|
||||
* and copyout. A process may be running in 64bit mode. In such a case,
|
||||
* the pointer will be a 64bit pointer, not a 32bit pointer. The following
|
||||
* sample is a safe way to copy the data in to the kernel from either a
|
||||
* 32bit or 64bit process:
|
||||
*
|
||||
* user_addr_t tmp_ptr;
|
||||
* if (IS_64BIT_PROCESS(current_proc())) {
|
||||
* tmp_ptr = CAST_USER_ADDR_T(ifkpi.ifk_data.ifk_ptr64);
|
||||
* }
|
||||
* else {
|
||||
* tmp_ptr = CAST_USER_ADDR_T(ifkpi.ifk_data.ifk_ptr);
|
||||
* }
|
||||
* error = copyin(tmp_ptr, allocated_dst_buffer, size of allocated_dst_buffer);
|
||||
*/
|
||||
|
||||
struct ifkpi {
|
||||
unsigned int ifk_module_id;
|
||||
unsigned int ifk_type;
|
||||
union {
|
||||
void *ifk_ptr;
|
||||
int ifk_value;
|
||||
} ifk_data;
|
||||
};
|
||||
|
||||
/* Wake capabilities of a interface */
|
||||
#define IF_WAKE_ON_MAGIC_PACKET 0x01
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
/*
|
||||
* Interface request structure used for socket
|
||||
* ioctl's. All interface ioctl's must have parameter
|
||||
* definitions which begin with ifr_name. The
|
||||
* remainder may be interface specific.
|
||||
*/
|
||||
struct ifreq {
|
||||
#ifndef IFNAMSIZ
|
||||
#define IFNAMSIZ IF_NAMESIZE
|
||||
#endif
|
||||
char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
union {
|
||||
struct sockaddr ifru_addr;
|
||||
struct sockaddr ifru_dstaddr;
|
||||
struct sockaddr ifru_broadaddr;
|
||||
short ifru_flags;
|
||||
int ifru_metric;
|
||||
int ifru_mtu;
|
||||
int ifru_phys;
|
||||
int ifru_media;
|
||||
int ifru_intval;
|
||||
caddr_t ifru_data;
|
||||
struct ifdevmtu ifru_devmtu;
|
||||
struct ifkpi ifru_kpi;
|
||||
u_int32_t ifru_wake_flags;
|
||||
u_int32_t ifru_route_refcnt;
|
||||
int ifru_cap[2];
|
||||
u_int32_t ifru_functional_type;
|
||||
#define IFRTYPE_FUNCTIONAL_UNKNOWN 0
|
||||
#define IFRTYPE_FUNCTIONAL_LOOPBACK 1
|
||||
#define IFRTYPE_FUNCTIONAL_WIRED 2
|
||||
#define IFRTYPE_FUNCTIONAL_WIFI_INFRA 3
|
||||
#define IFRTYPE_FUNCTIONAL_WIFI_AWDL 4
|
||||
#define IFRTYPE_FUNCTIONAL_CELLULAR 5
|
||||
#define IFRTYPE_FUNCTIONAL_INTCOPROC 6
|
||||
#define IFRTYPE_FUNCTIONAL_COMPANIONLINK 7
|
||||
#define IFRTYPE_FUNCTIONAL_LAST 7
|
||||
} ifr_ifru;
|
||||
#define ifr_addr ifr_ifru.ifru_addr /* address */
|
||||
#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
|
||||
#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
|
||||
#ifdef __APPLE__
|
||||
#define ifr_flags ifr_ifru.ifru_flags /* flags */
|
||||
#else
|
||||
#define ifr_flags ifr_ifru.ifru_flags[0] /* flags */
|
||||
#define ifr_prevflags ifr_ifru.ifru_flags[1] /* flags */
|
||||
#endif /* __APPLE__ */
|
||||
#define ifr_metric ifr_ifru.ifru_metric /* metric */
|
||||
#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
|
||||
#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
|
||||
#define ifr_media ifr_ifru.ifru_media /* physical media */
|
||||
#define ifr_data ifr_ifru.ifru_data /* for use by interface */
|
||||
#define ifr_devmtu ifr_ifru.ifru_devmtu
|
||||
#define ifr_intval ifr_ifru.ifru_intval /* integer value */
|
||||
#define ifr_kpi ifr_ifru.ifru_kpi
|
||||
#define ifr_wake_flags ifr_ifru.ifru_wake_flags /* wake capabilities */
|
||||
#define ifr_route_refcnt ifr_ifru.ifru_route_refcnt /* route references count */
|
||||
#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */
|
||||
#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
|
||||
};
|
||||
|
||||
#define _SIZEOF_ADDR_IFREQ(ifr) \
|
||||
((ifr).ifr_addr.sa_len > sizeof (struct sockaddr) ? \
|
||||
(sizeof (struct ifreq) - sizeof (struct sockaddr) + \
|
||||
(ifr).ifr_addr.sa_len) : sizeof (struct ifreq))
|
||||
|
||||
struct ifaliasreq {
|
||||
char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
struct sockaddr ifra_addr;
|
||||
struct sockaddr ifra_broadaddr;
|
||||
struct sockaddr ifra_mask;
|
||||
};
|
||||
|
||||
struct rslvmulti_req {
|
||||
struct sockaddr *sa;
|
||||
struct sockaddr **llsa;
|
||||
};
|
||||
|
||||
#pragma pack(4)
|
||||
|
||||
struct ifmediareq {
|
||||
char ifm_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
int ifm_current; /* current media options */
|
||||
int ifm_mask; /* don't care mask */
|
||||
int ifm_status; /* media status */
|
||||
int ifm_active; /* active options */
|
||||
int ifm_count; /* # entries in ifm_ulist array */
|
||||
int *ifm_ulist; /* media words */
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
|
||||
#pragma pack(4)
|
||||
struct ifdrv {
|
||||
char ifd_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
unsigned long ifd_cmd;
|
||||
size_t ifd_len; /* length of ifd_data buffer */
|
||||
void *ifd_data;
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
|
||||
/*
|
||||
* Structure used to retrieve aux status data from interfaces.
|
||||
* Kernel suppliers to this interface should respect the formatting
|
||||
* needed by ifconfig(8): each line starts with a TAB and ends with
|
||||
* a newline.
|
||||
*/
|
||||
|
||||
#define IFSTATMAX 800 /* 10 lines of text */
|
||||
struct ifstat {
|
||||
char ifs_name[IFNAMSIZ]; /* if name, e.g. "en0" */
|
||||
char ascii[IFSTATMAX + 1];
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure used in SIOCGIFCONF request.
|
||||
* Used to retrieve interface configuration
|
||||
* for machine (useful for programs which
|
||||
* must know all networks accessible).
|
||||
*/
|
||||
#pragma pack(4)
|
||||
struct ifconf {
|
||||
int ifc_len; /* size of associated buffer */
|
||||
union {
|
||||
caddr_t ifcu_buf;
|
||||
struct ifreq *ifcu_req;
|
||||
} ifc_ifcu;
|
||||
};
|
||||
#pragma pack()
|
||||
#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
|
||||
#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
|
||||
|
||||
|
||||
/*
|
||||
* DLIL KEV_DL_PROTO_ATTACHED/DETACHED structure
|
||||
*/
|
||||
struct kev_dl_proto_data {
|
||||
struct net_event_data link_data;
|
||||
u_int32_t proto_family;
|
||||
u_int32_t proto_remaining_count;
|
||||
};
|
||||
|
||||
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
struct if_nameindex {
|
||||
unsigned int if_index; /* 1, 2, ... */
|
||||
char *if_name; /* null terminated name: "le0", ... */
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
unsigned int if_nametoindex(const char *);
|
||||
char *if_indextoname(unsigned int, char *);
|
||||
struct if_nameindex *if_nameindex(void);
|
||||
void if_freenameindex(struct if_nameindex *);
|
||||
__END_DECLS
|
||||
|
||||
|
||||
#endif /* !_NET_IF_H_ */
|
|
@ -0,0 +1,242 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2019 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* From: @(#)if.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/net/if_var.h,v 1.18.2.7 2001/07/24 19:10:18 brooks Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NET_IF_VAR_H_
|
||||
#define _NET_IF_VAR_H_
|
||||
|
||||
#include <sys/appleapiopts.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/queue.h> /* get TAILQ macros */
|
||||
#ifdef BSD_KERN_PRIVATE
|
||||
#include <sys/eventhandler.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __APPLE__
|
||||
#define APPLE_IF_FAM_LOOPBACK 1
|
||||
#define APPLE_IF_FAM_ETHERNET 2
|
||||
#define APPLE_IF_FAM_SLIP 3
|
||||
#define APPLE_IF_FAM_TUN 4
|
||||
#define APPLE_IF_FAM_VLAN 5
|
||||
#define APPLE_IF_FAM_PPP 6
|
||||
#define APPLE_IF_FAM_PVC 7
|
||||
#define APPLE_IF_FAM_DISC 8
|
||||
#define APPLE_IF_FAM_MDECAP 9
|
||||
#define APPLE_IF_FAM_GIF 10
|
||||
#define APPLE_IF_FAM_FAITH 11 /* deprecated */
|
||||
#define APPLE_IF_FAM_STF 12
|
||||
#define APPLE_IF_FAM_FIREWIRE 13
|
||||
#define APPLE_IF_FAM_BOND 14
|
||||
#define APPLE_IF_FAM_CELLULAR 15
|
||||
#define APPLE_IF_FAM_6LOWPAN 16
|
||||
#define APPLE_IF_FAM_UTUN 17
|
||||
#define APPLE_IF_FAM_IPSEC 18
|
||||
#endif /* __APPLE__ */
|
||||
|
||||
/*
|
||||
* 72 was chosen below because it is the size of a TCP/IP
|
||||
* header (40) + the minimum mss (32).
|
||||
*/
|
||||
#define IF_MINMTU 72
|
||||
#define IF_MAXMTU 65535
|
||||
|
||||
/*
|
||||
* Structures defining a network interface, providing a packet
|
||||
* transport mechanism (ala level 0 of the PUP protocols).
|
||||
*
|
||||
* Each interface accepts output datagrams of a specified maximum
|
||||
* length, and provides higher level routines with input datagrams
|
||||
* received from its medium.
|
||||
*
|
||||
* Output occurs when the routine if_output is called, with three parameters:
|
||||
* (*ifp->if_output)(ifp, m, dst, rt)
|
||||
* Here m is the mbuf chain to be sent and dst is the destination address.
|
||||
* The output routine encapsulates the supplied datagram if necessary,
|
||||
* and then transmits it on its medium.
|
||||
*
|
||||
* On input, each interface unwraps the data received by it, and either
|
||||
* places it on the input queue of a internetwork datagram routine
|
||||
* and posts the associated software interrupt, or passes the datagram to a raw
|
||||
* packet input routine.
|
||||
*
|
||||
* Routines exist for locating interfaces by their addresses
|
||||
* or for locating a interface on a certain network, as well as more general
|
||||
* routing and gateway routines maintaining information used to locate
|
||||
* interfaces. These routines live in the files if.c and route.c
|
||||
*/
|
||||
|
||||
#define IFNAMSIZ 16
|
||||
|
||||
/* This belongs up in socket.h or socketvar.h, depending on how far the
|
||||
* event bubbles up.
|
||||
*/
|
||||
|
||||
struct net_event_data {
|
||||
u_int32_t if_family;
|
||||
u_int32_t if_unit;
|
||||
char if_name[IFNAMSIZ];
|
||||
};
|
||||
|
||||
#if defined(__LP64__)
|
||||
#include <sys/_types/_timeval32.h>
|
||||
#define IF_DATA_TIMEVAL timeval32
|
||||
#else
|
||||
#define IF_DATA_TIMEVAL timeval
|
||||
#endif
|
||||
|
||||
#pragma pack(4)
|
||||
|
||||
/*
|
||||
* Structure describing information about an interface
|
||||
* which may be of interest to management entities.
|
||||
*/
|
||||
struct if_data {
|
||||
/* generic interface information */
|
||||
u_char ifi_type; /* ethernet, tokenring, etc */
|
||||
u_char ifi_typelen; /* Length of frame type id */
|
||||
u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
|
||||
u_char ifi_addrlen; /* media address length */
|
||||
u_char ifi_hdrlen; /* media header length */
|
||||
u_char ifi_recvquota; /* polling quota for receive intrs */
|
||||
u_char ifi_xmitquota; /* polling quota for xmit intrs */
|
||||
u_char ifi_unused1; /* for future use */
|
||||
u_int32_t ifi_mtu; /* maximum transmission unit */
|
||||
u_int32_t ifi_metric; /* routing metric (external only) */
|
||||
u_int32_t ifi_baudrate; /* linespeed */
|
||||
/* volatile statistics */
|
||||
u_int32_t ifi_ipackets; /* packets received on interface */
|
||||
u_int32_t ifi_ierrors; /* input errors on interface */
|
||||
u_int32_t ifi_opackets; /* packets sent on interface */
|
||||
u_int32_t ifi_oerrors; /* output errors on interface */
|
||||
u_int32_t ifi_collisions; /* collisions on csma interfaces */
|
||||
u_int32_t ifi_ibytes; /* total number of octets received */
|
||||
u_int32_t ifi_obytes; /* total number of octets sent */
|
||||
u_int32_t ifi_imcasts; /* packets received via multicast */
|
||||
u_int32_t ifi_omcasts; /* packets sent via multicast */
|
||||
u_int32_t ifi_iqdrops; /* dropped on input, this interface */
|
||||
u_int32_t ifi_noproto; /* destined for unsupported protocol */
|
||||
u_int32_t ifi_recvtiming; /* usec spent receiving when timing */
|
||||
u_int32_t ifi_xmittiming; /* usec spent xmitting when timing */
|
||||
struct IF_DATA_TIMEVAL ifi_lastchange; /* time of last administrative change */
|
||||
u_int32_t ifi_unused2; /* used to be the default_proto */
|
||||
u_int32_t ifi_hwassist; /* HW offload capabilities */
|
||||
u_int32_t ifi_reserved1; /* for future use */
|
||||
u_int32_t ifi_reserved2; /* for future use */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure describing information about an interface
|
||||
* which may be of interest to management entities.
|
||||
*/
|
||||
struct if_data64 {
|
||||
/* generic interface information */
|
||||
u_char ifi_type; /* ethernet, tokenring, etc */
|
||||
u_char ifi_typelen; /* Length of frame type id */
|
||||
u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
|
||||
u_char ifi_addrlen; /* media address length */
|
||||
u_char ifi_hdrlen; /* media header length */
|
||||
u_char ifi_recvquota; /* polling quota for receive intrs */
|
||||
u_char ifi_xmitquota; /* polling quota for xmit intrs */
|
||||
u_char ifi_unused1; /* for future use */
|
||||
u_int32_t ifi_mtu; /* maximum transmission unit */
|
||||
u_int32_t ifi_metric; /* routing metric (external only) */
|
||||
u_int64_t ifi_baudrate; /* linespeed */
|
||||
/* volatile statistics */
|
||||
u_int64_t ifi_ipackets; /* packets received on interface */
|
||||
u_int64_t ifi_ierrors; /* input errors on interface */
|
||||
u_int64_t ifi_opackets; /* packets sent on interface */
|
||||
u_int64_t ifi_oerrors; /* output errors on interface */
|
||||
u_int64_t ifi_collisions; /* collisions on csma interfaces */
|
||||
u_int64_t ifi_ibytes; /* total number of octets received */
|
||||
u_int64_t ifi_obytes; /* total number of octets sent */
|
||||
u_int64_t ifi_imcasts; /* packets received via multicast */
|
||||
u_int64_t ifi_omcasts; /* packets sent via multicast */
|
||||
u_int64_t ifi_iqdrops; /* dropped on input, this interface */
|
||||
u_int64_t ifi_noproto; /* destined for unsupported protocol */
|
||||
u_int32_t ifi_recvtiming; /* usec spent receiving when timing */
|
||||
u_int32_t ifi_xmittiming; /* usec spent xmitting when timing */
|
||||
struct IF_DATA_TIMEVAL ifi_lastchange; /* time of last administrative change */
|
||||
};
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
/*
|
||||
* Structure defining a queue for a network interface.
|
||||
*/
|
||||
struct ifqueue {
|
||||
void *ifq_head;
|
||||
void *ifq_tail;
|
||||
int ifq_len;
|
||||
int ifq_maxlen;
|
||||
int ifq_drops;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* !_NET_IF_VAR_H_ */
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2018 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _NET_NETKEV_H_
|
||||
#define _NET_NETKEV_H_
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
|
||||
/* Kernel event subclass identifiers for KEV_NETWORK_CLASS */
|
||||
#define KEV_INET_SUBCLASS 1 /* inet subclass */
|
||||
/* KEV_INET_SUBCLASS event codes */
|
||||
#define KEV_INET_NEW_ADDR 1 /* Userland configured IP address */
|
||||
#define KEV_INET_CHANGED_ADDR 2 /* Address changed event */
|
||||
#define KEV_INET_ADDR_DELETED 3 /* IPv6 address was deleted */
|
||||
#define KEV_INET_SIFDSTADDR 4 /* Dest. address was set */
|
||||
#define KEV_INET_SIFBRDADDR 5 /* Broadcast address was set */
|
||||
#define KEV_INET_SIFNETMASK 6 /* Netmask was set */
|
||||
#define KEV_INET_ARPCOLLISION 7 /* ARP collision detected */
|
||||
#ifdef __APPLE_API_PRIVATE
|
||||
#define KEV_INET_PORTINUSE 8 /* use ken_in_portinuse */
|
||||
#endif
|
||||
#define KEV_INET_ARPRTRFAILURE 9 /* ARP resolution failed for router */
|
||||
#define KEV_INET_ARPRTRALIVE 10 /* ARP resolution succeeded for router */
|
||||
|
||||
#define KEV_DL_SUBCLASS 2 /* Data Link subclass */
|
||||
/*
|
||||
* Define Data-Link event subclass, and associated
|
||||
* events.
|
||||
*/
|
||||
#define KEV_DL_SIFFLAGS 1
|
||||
#define KEV_DL_SIFMETRICS 2
|
||||
#define KEV_DL_SIFMTU 3
|
||||
#define KEV_DL_SIFPHYS 4
|
||||
#define KEV_DL_SIFMEDIA 5
|
||||
#define KEV_DL_SIFGENERIC 6
|
||||
#define KEV_DL_ADDMULTI 7
|
||||
#define KEV_DL_DELMULTI 8
|
||||
#define KEV_DL_IF_ATTACHED 9
|
||||
#define KEV_DL_IF_DETACHING 10
|
||||
#define KEV_DL_IF_DETACHED 11
|
||||
#define KEV_DL_LINK_OFF 12
|
||||
#define KEV_DL_LINK_ON 13
|
||||
#define KEV_DL_PROTO_ATTACHED 14
|
||||
#define KEV_DL_PROTO_DETACHED 15
|
||||
#define KEV_DL_LINK_ADDRESS_CHANGED 16
|
||||
#define KEV_DL_WAKEFLAGS_CHANGED 17
|
||||
#define KEV_DL_IF_IDLE_ROUTE_REFCNT 18
|
||||
#define KEV_DL_IFCAP_CHANGED 19
|
||||
#define KEV_DL_LINK_QUALITY_METRIC_CHANGED 20
|
||||
#define KEV_DL_NODE_PRESENCE 21
|
||||
#define KEV_DL_NODE_ABSENCE 22
|
||||
#define KEV_DL_MASTER_ELECTED 23
|
||||
#define KEV_DL_ISSUES 24
|
||||
#define KEV_DL_IFDELEGATE_CHANGED 25
|
||||
#define KEV_DL_AWDL_RESTRICTED 26
|
||||
#define KEV_DL_AWDL_UNRESTRICTED 27
|
||||
#define KEV_DL_RRC_STATE_CHANGED 28
|
||||
#define KEV_DL_QOS_MODE_CHANGED 29
|
||||
#define KEV_DL_LOW_POWER_MODE_CHANGED 30
|
||||
|
||||
|
||||
#define KEV_INET6_SUBCLASS 6 /* inet6 subclass */
|
||||
/* KEV_INET6_SUBCLASS event codes */
|
||||
#define KEV_INET6_NEW_USER_ADDR 1 /* Userland configured IPv6 address */
|
||||
#define KEV_INET6_CHANGED_ADDR 2 /* Address changed event (future) */
|
||||
#define KEV_INET6_ADDR_DELETED 3 /* IPv6 address was deleted */
|
||||
#define KEV_INET6_NEW_LL_ADDR 4 /* Autoconf LL address appeared */
|
||||
#define KEV_INET6_NEW_RTADV_ADDR 5 /* Autoconf address has appeared */
|
||||
#define KEV_INET6_DEFROUTER 6 /* Default router detected */
|
||||
#define KEV_INET6_REQUEST_NAT64_PREFIX 7 /* Asking for the NAT64-prefix */
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#endif /* _NET_NETKEV_H_ */
|
|
@ -0,0 +1,319 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2009 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* ++Copyright++ 1980, 1983, 1988, 1993
|
||||
* -
|
||||
* Copyright (c) 1980, 1983, 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
* -
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)netdb.h 8.1 (Berkeley) 6/2/93
|
||||
*/
|
||||
|
||||
#ifndef _NETDB_H_
|
||||
#define _NETDB_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
#include <sys/_types/_socklen_t.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <netinet/in.h> /* IPPORT_RESERVED */
|
||||
|
||||
#ifndef _PATH_HEQUIV
|
||||
# define _PATH_HEQUIV "/etc/hosts.equiv"
|
||||
#endif
|
||||
#define _PATH_HOSTS "/etc/hosts"
|
||||
#define _PATH_NETWORKS "/etc/networks"
|
||||
#define _PATH_PROTOCOLS "/etc/protocols"
|
||||
#define _PATH_SERVICES "/etc/services"
|
||||
|
||||
extern int h_errno;
|
||||
|
||||
#ifndef IPPORT_RESERVED
|
||||
#define IPPORT_RESERVED __DARWIN_IPPORT_RESERVED
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structures returned by network data base library. All addresses are
|
||||
* supplied in host order, and returned in network order (suitable for
|
||||
* use in system calls).
|
||||
*/
|
||||
struct hostent {
|
||||
char *h_name; /* official name of host */
|
||||
char **h_aliases; /* alias list */
|
||||
int h_addrtype; /* host address type */
|
||||
int h_length; /* length of address */
|
||||
char **h_addr_list; /* list of addresses from name server */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define h_addr h_addr_list[0] /* address, for backward compatibility */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
};
|
||||
|
||||
/*
|
||||
* Assumption here is that a network number
|
||||
* fits in an unsigned long -- probably a poor one.
|
||||
*/
|
||||
struct netent {
|
||||
char *n_name; /* official name of net */
|
||||
char **n_aliases; /* alias list */
|
||||
int n_addrtype; /* net address type */
|
||||
uint32_t n_net; /* network # */
|
||||
};
|
||||
|
||||
struct servent {
|
||||
char *s_name; /* official service name */
|
||||
char **s_aliases; /* alias list */
|
||||
int s_port; /* port # */
|
||||
char *s_proto; /* protocol to use */
|
||||
};
|
||||
|
||||
struct protoent {
|
||||
char *p_name; /* official protocol name */
|
||||
char **p_aliases; /* alias list */
|
||||
int p_proto; /* protocol # */
|
||||
};
|
||||
|
||||
struct addrinfo {
|
||||
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
|
||||
int ai_family; /* PF_xxx */
|
||||
int ai_socktype; /* SOCK_xxx */
|
||||
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
||||
socklen_t ai_addrlen; /* length of ai_addr */
|
||||
char *ai_canonname; /* canonical name for hostname */
|
||||
struct sockaddr *ai_addr; /* binary address */
|
||||
struct addrinfo *ai_next; /* next structure in linked list */
|
||||
};
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
struct rpcent {
|
||||
char *r_name; /* name of server for this rpc program */
|
||||
char **r_aliases; /* alias list */
|
||||
int r_number; /* rpc program number */
|
||||
};
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Error return codes from gethostbyname() and gethostbyaddr()
|
||||
* (left in h_errno).
|
||||
*/
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define NETDB_INTERNAL -1 /* see errno */
|
||||
#define NETDB_SUCCESS 0 /* no problem */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
|
||||
#define TRY_AGAIN 2 /* Non-Authoritative Host not found, or SERVERFAIL */
|
||||
#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
|
||||
#define NO_DATA 4 /* Valid name, no data record of requested type */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define NO_ADDRESS NO_DATA /* no address, look for MX record */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
/*
|
||||
* Error return codes from getaddrinfo()
|
||||
*/
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define EAI_AGAIN 2 /* temporary failure in name resolution */
|
||||
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
|
||||
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
|
||||
#define EAI_FAMILY 5 /* ai_family not supported */
|
||||
#define EAI_MEMORY 6 /* memory allocation failure */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define EAI_NODATA 7 /* no address associated with hostname */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define EAI_NONAME 8 /* hostname nor servname provided, or not known */
|
||||
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
|
||||
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
|
||||
#define EAI_SYSTEM 11 /* system error returned in errno */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define EAI_BADHINTS 12 /* invalid value for hints */
|
||||
#define EAI_PROTOCOL 13 /* resolved protocol is unknown */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define EAI_OVERFLOW 14 /* argument buffer overflow */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define EAI_MAX 15
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Flag values for getaddrinfo()
|
||||
*/
|
||||
#define AI_PASSIVE 0x00000001 /* get address to use bind() */
|
||||
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
||||
#define AI_NUMERICHOST 0x00000004 /* prevent host name resolution */
|
||||
#define AI_NUMERICSERV 0x00001000 /* prevent service name resolution */
|
||||
/* valid flags for addrinfo (not a standard def, apps should not use it) */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define AI_MASK \
|
||||
(AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV | \
|
||||
AI_ADDRCONFIG)
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
|
||||
#define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */
|
||||
/* special recommended flags for getipnodebyname */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define AI_DEFAULT (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
|
||||
/* If the hints pointer is null or ai_flags is zero, getaddrinfo() automatically defaults to the AI_DEFAULT behavior.
|
||||
* To override this default behavior, thereby causing unusable addresses to be included in the results, pass any nonzero
|
||||
* value for ai_flags, by setting any desired flag values, or by setting AI_UNUSABLE if no other flags are desired. */
|
||||
#define AI_UNUSABLE 0x10000000 /* return addresses even if unusable (i.e. opposite of AI_DEFAULT) */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Constants for getnameinfo()
|
||||
*/
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define NI_MAXHOST 1025
|
||||
#define NI_MAXSERV 32
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
/*
|
||||
* Flag values for getnameinfo()
|
||||
*/
|
||||
#define NI_NOFQDN 0x00000001
|
||||
#define NI_NUMERICHOST 0x00000002
|
||||
#define NI_NAMEREQD 0x00000004
|
||||
#define NI_NUMERICSERV 0x00000008
|
||||
#define NI_NUMERICSCOPE 0x00000100
|
||||
#define NI_DGRAM 0x00000010
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define NI_WITHSCOPEID 0x00000020
|
||||
|
||||
/*
|
||||
* Scope delimit character
|
||||
*/
|
||||
#define SCOPE_DELIMITER '%'
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
void endhostent(void);
|
||||
void endnetent(void);
|
||||
void endprotoent(void);
|
||||
void endservent(void);
|
||||
|
||||
void freeaddrinfo(struct addrinfo *);
|
||||
const char *gai_strerror(int);
|
||||
int getaddrinfo(const char * __restrict, const char * __restrict,
|
||||
const struct addrinfo * __restrict,
|
||||
struct addrinfo ** __restrict);
|
||||
struct hostent *gethostbyaddr(const void *, socklen_t, int);
|
||||
struct hostent *gethostbyname(const char *);
|
||||
struct hostent *gethostent(void);
|
||||
int getnameinfo(const struct sockaddr * __restrict, socklen_t,
|
||||
char * __restrict, socklen_t, char * __restrict,
|
||||
socklen_t, int);
|
||||
struct netent *getnetbyaddr(uint32_t, int);
|
||||
struct netent *getnetbyname(const char *);
|
||||
struct netent *getnetent(void);
|
||||
struct protoent *getprotobyname(const char *);
|
||||
struct protoent *getprotobynumber(int);
|
||||
struct protoent *getprotoent(void);
|
||||
struct servent *getservbyname(const char *, const char *);
|
||||
struct servent *getservbyport(int, const char *);
|
||||
struct servent *getservent(void);
|
||||
void sethostent(int);
|
||||
/* void sethostfile(const char *); */
|
||||
void setnetent(int);
|
||||
void setprotoent(int);
|
||||
void setservent(int);
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
void freehostent(struct hostent *);
|
||||
struct hostent *gethostbyname2(const char *, int);
|
||||
struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
|
||||
struct hostent *getipnodebyname(const char *, int, int, int *);
|
||||
struct rpcent *getrpcbyname(const char *name);
|
||||
#ifdef __LP64__
|
||||
struct rpcent *getrpcbynumber(int number);
|
||||
#else
|
||||
struct rpcent *getrpcbynumber(long number);
|
||||
#endif
|
||||
struct rpcent *getrpcent(void);
|
||||
void setrpcent(int stayopen);
|
||||
void endrpcent(void);
|
||||
void herror(const char *);
|
||||
const char *hstrerror(int);
|
||||
int innetgr(const char *, const char *, const char *, const char *);
|
||||
int getnetgrent(char **, char **, char **);
|
||||
void endnetgrent(void);
|
||||
void setnetgrent(const char *);
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_NETDB_H_ */
|
|
@ -0,0 +1,671 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2018 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in.h 8.3 (Berkeley) 1/3/94
|
||||
* $FreeBSD: src/sys/netinet/in.h,v 1.48.2.2 2001/04/21 14:53:06 ume Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IN_H_
|
||||
#define _NETINET_IN_H_
|
||||
#include <sys/appleapiopts.h>
|
||||
#include <sys/_types.h>
|
||||
#include <stdint.h> /* uint(8|16|32)_t */
|
||||
|
||||
#include <Availability.h>
|
||||
|
||||
#include <sys/_types/_in_addr_t.h>
|
||||
|
||||
#include <sys/_types/_in_port_t.h>
|
||||
|
||||
/*
|
||||
* POSIX 1003.1-2003
|
||||
* "Inclusion of the <netinet/in.h> header may also make visible all
|
||||
* symbols from <inttypes.h> and <sys/socket.h>".
|
||||
*/
|
||||
#include <sys/socket.h>
|
||||
|
||||
/*
|
||||
* The following two #includes insure htonl and family are defined
|
||||
*/
|
||||
#include <machine/endian.h>
|
||||
#include <sys/_endian.h>
|
||||
|
||||
/*
|
||||
* Constants and structures defined by the internet system,
|
||||
* Per RFC 790, September 1981, and numerous additions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Protocols (RFC 1700)
|
||||
*/
|
||||
#define IPPROTO_IP 0 /* dummy for IP */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPPROTO_HOPOPTS 0 /* IP6 hop-by-hop options */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define IPPROTO_ICMP 1 /* control message protocol */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPPROTO_IGMP 2 /* group mgmt protocol */
|
||||
#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
|
||||
#define IPPROTO_IPV4 4 /* IPv4 encapsulation */
|
||||
#define IPPROTO_IPIP IPPROTO_IPV4 /* for compatibility */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define IPPROTO_TCP 6 /* tcp */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPPROTO_ST 7 /* Stream protocol II */
|
||||
#define IPPROTO_EGP 8 /* exterior gateway protocol */
|
||||
#define IPPROTO_PIGP 9 /* private interior gateway */
|
||||
#define IPPROTO_RCCMON 10 /* BBN RCC Monitoring */
|
||||
#define IPPROTO_NVPII 11 /* network voice protocol*/
|
||||
#define IPPROTO_PUP 12 /* pup */
|
||||
#define IPPROTO_ARGUS 13 /* Argus */
|
||||
#define IPPROTO_EMCON 14 /* EMCON */
|
||||
#define IPPROTO_XNET 15 /* Cross Net Debugger */
|
||||
#define IPPROTO_CHAOS 16 /* Chaos*/
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define IPPROTO_UDP 17 /* user datagram protocol */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPPROTO_MUX 18 /* Multiplexing */
|
||||
#define IPPROTO_MEAS 19 /* DCN Measurement Subsystems */
|
||||
#define IPPROTO_HMP 20 /* Host Monitoring */
|
||||
#define IPPROTO_PRM 21 /* Packet Radio Measurement */
|
||||
#define IPPROTO_IDP 22 /* xns idp */
|
||||
#define IPPROTO_TRUNK1 23 /* Trunk-1 */
|
||||
#define IPPROTO_TRUNK2 24 /* Trunk-2 */
|
||||
#define IPPROTO_LEAF1 25 /* Leaf-1 */
|
||||
#define IPPROTO_LEAF2 26 /* Leaf-2 */
|
||||
#define IPPROTO_RDP 27 /* Reliable Data */
|
||||
#define IPPROTO_IRTP 28 /* Reliable Transaction */
|
||||
#define IPPROTO_TP 29 /* tp-4 w/ class negotiation */
|
||||
#define IPPROTO_BLT 30 /* Bulk Data Transfer */
|
||||
#define IPPROTO_NSP 31 /* Network Services */
|
||||
#define IPPROTO_INP 32 /* Merit Internodal */
|
||||
#define IPPROTO_SEP 33 /* Sequential Exchange */
|
||||
#define IPPROTO_3PC 34 /* Third Party Connect */
|
||||
#define IPPROTO_IDPR 35 /* InterDomain Policy Routing */
|
||||
#define IPPROTO_XTP 36 /* XTP */
|
||||
#define IPPROTO_DDP 37 /* Datagram Delivery */
|
||||
#define IPPROTO_CMTP 38 /* Control Message Transport */
|
||||
#define IPPROTO_TPXX 39 /* TP++ Transport */
|
||||
#define IPPROTO_IL 40 /* IL transport protocol */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define IPPROTO_IPV6 41 /* IP6 header */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPPROTO_SDRP 42 /* Source Demand Routing */
|
||||
#define IPPROTO_ROUTING 43 /* IP6 routing header */
|
||||
#define IPPROTO_FRAGMENT 44 /* IP6 fragmentation header */
|
||||
#define IPPROTO_IDRP 45 /* InterDomain Routing*/
|
||||
#define IPPROTO_RSVP 46 /* resource reservation */
|
||||
#define IPPROTO_GRE 47 /* General Routing Encap. */
|
||||
#define IPPROTO_MHRP 48 /* Mobile Host Routing */
|
||||
#define IPPROTO_BHA 49 /* BHA */
|
||||
#define IPPROTO_ESP 50 /* IP6 Encap Sec. Payload */
|
||||
#define IPPROTO_AH 51 /* IP6 Auth Header */
|
||||
#define IPPROTO_INLSP 52 /* Integ. Net Layer Security */
|
||||
#define IPPROTO_SWIPE 53 /* IP with encryption */
|
||||
#define IPPROTO_NHRP 54 /* Next Hop Resolution */
|
||||
/* 55-57: Unassigned */
|
||||
#define IPPROTO_ICMPV6 58 /* ICMP6 */
|
||||
#define IPPROTO_NONE 59 /* IP6 no next header */
|
||||
#define IPPROTO_DSTOPTS 60 /* IP6 destination option */
|
||||
#define IPPROTO_AHIP 61 /* any host internal protocol */
|
||||
#define IPPROTO_CFTP 62 /* CFTP */
|
||||
#define IPPROTO_HELLO 63 /* "hello" routing protocol */
|
||||
#define IPPROTO_SATEXPAK 64 /* SATNET/Backroom EXPAK */
|
||||
#define IPPROTO_KRYPTOLAN 65 /* Kryptolan */
|
||||
#define IPPROTO_RVD 66 /* Remote Virtual Disk */
|
||||
#define IPPROTO_IPPC 67 /* Pluribus Packet Core */
|
||||
#define IPPROTO_ADFS 68 /* Any distributed FS */
|
||||
#define IPPROTO_SATMON 69 /* Satnet Monitoring */
|
||||
#define IPPROTO_VISA 70 /* VISA Protocol */
|
||||
#define IPPROTO_IPCV 71 /* Packet Core Utility */
|
||||
#define IPPROTO_CPNX 72 /* Comp. Prot. Net. Executive */
|
||||
#define IPPROTO_CPHB 73 /* Comp. Prot. HeartBeat */
|
||||
#define IPPROTO_WSN 74 /* Wang Span Network */
|
||||
#define IPPROTO_PVP 75 /* Packet Video Protocol */
|
||||
#define IPPROTO_BRSATMON 76 /* BackRoom SATNET Monitoring */
|
||||
#define IPPROTO_ND 77 /* Sun net disk proto (temp.) */
|
||||
#define IPPROTO_WBMON 78 /* WIDEBAND Monitoring */
|
||||
#define IPPROTO_WBEXPAK 79 /* WIDEBAND EXPAK */
|
||||
#define IPPROTO_EON 80 /* ISO cnlp */
|
||||
#define IPPROTO_VMTP 81 /* VMTP */
|
||||
#define IPPROTO_SVMTP 82 /* Secure VMTP */
|
||||
#define IPPROTO_VINES 83 /* Banyon VINES */
|
||||
#define IPPROTO_TTP 84 /* TTP */
|
||||
#define IPPROTO_IGP 85 /* NSFNET-IGP */
|
||||
#define IPPROTO_DGP 86 /* dissimilar gateway prot. */
|
||||
#define IPPROTO_TCF 87 /* TCF */
|
||||
#define IPPROTO_IGRP 88 /* Cisco/GXS IGRP */
|
||||
#define IPPROTO_OSPFIGP 89 /* OSPFIGP */
|
||||
#define IPPROTO_SRPC 90 /* Strite RPC protocol */
|
||||
#define IPPROTO_LARP 91 /* Locus Address Resoloution */
|
||||
#define IPPROTO_MTP 92 /* Multicast Transport */
|
||||
#define IPPROTO_AX25 93 /* AX.25 Frames */
|
||||
#define IPPROTO_IPEIP 94 /* IP encapsulated in IP */
|
||||
#define IPPROTO_MICP 95 /* Mobile Int.ing control */
|
||||
#define IPPROTO_SCCSP 96 /* Semaphore Comm. security */
|
||||
#define IPPROTO_ETHERIP 97 /* Ethernet IP encapsulation */
|
||||
#define IPPROTO_ENCAP 98 /* encapsulation header */
|
||||
#define IPPROTO_APES 99 /* any private encr. scheme */
|
||||
#define IPPROTO_GMTP 100 /* GMTP*/
|
||||
/* 101-252: Partly Unassigned */
|
||||
#define IPPROTO_PIM 103 /* Protocol Independent Mcast */
|
||||
#define IPPROTO_IPCOMP 108 /* payload compression (IPComp) */
|
||||
#define IPPROTO_PGM 113 /* PGM */
|
||||
#define IPPROTO_SCTP 132 /* SCTP */
|
||||
/* 253-254: Experimentation and testing; 255: Reserved (RFC3692) */
|
||||
/* BSD Private, local use, namespace incursion */
|
||||
#define IPPROTO_DIVERT 254 /* divert pseudo-protocol */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#define IPPROTO_RAW 255 /* raw IP packet */
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPPROTO_MAX 256
|
||||
|
||||
/* last return value of *_input(), meaning "all job for this pkt is done". */
|
||||
#define IPPROTO_DONE 257
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Local port number conventions:
|
||||
*
|
||||
* When a user does a bind(2) or connect(2) with a port number of zero,
|
||||
* a non-conflicting local port address is chosen.
|
||||
* The default range is IPPORT_RESERVED through
|
||||
* IPPORT_USERRESERVED, although that is settable by sysctl.
|
||||
*
|
||||
* A user may set the IPPROTO_IP option IP_PORTRANGE to change this
|
||||
* default assignment range.
|
||||
*
|
||||
* The value IP_PORTRANGE_DEFAULT causes the default behavior.
|
||||
*
|
||||
* The value IP_PORTRANGE_HIGH changes the range of candidate port numbers
|
||||
* into the "high" range. These are reserved for client outbound connections
|
||||
* which do not want to be filtered by any firewalls.
|
||||
*
|
||||
* The value IP_PORTRANGE_LOW changes the range to the "low" are
|
||||
* that is (by convention) restricted to privileged processes. This
|
||||
* convention is based on "vouchsafe" principles only. It is only secure
|
||||
* if you trust the remote host to restrict these ports.
|
||||
*
|
||||
* The default range of ports and the high range can be changed by
|
||||
* sysctl(3). (net.inet.ip.port{hi,low}{first,last}_auto)
|
||||
*
|
||||
* Changing those values has bad security implications if you are
|
||||
* using a a stateless firewall that is allowing packets outside of that
|
||||
* range in order to allow transparent outgoing connections.
|
||||
*
|
||||
* Such a firewall configuration will generally depend on the use of these
|
||||
* default values. If you change them, you may find your Security
|
||||
* Administrator looking for you with a heavy object.
|
||||
*
|
||||
* For a slightly more orthodox text view on this:
|
||||
*
|
||||
* ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers
|
||||
*
|
||||
* port numbers are divided into three ranges:
|
||||
*
|
||||
* 0 - 1023 Well Known Ports
|
||||
* 1024 - 49151 Registered Ports
|
||||
* 49152 - 65535 Dynamic and/or Private Ports
|
||||
*
|
||||
*/
|
||||
|
||||
#define __DARWIN_IPPORT_RESERVED 1024
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
/*
|
||||
* Ports < IPPORT_RESERVED are reserved for
|
||||
* privileged processes (e.g. root). (IP_PORTRANGE_LOW)
|
||||
* Ports > IPPORT_USERRESERVED are reserved
|
||||
* for servers, not necessarily privileged. (IP_PORTRANGE_DEFAULT)
|
||||
*/
|
||||
#ifndef IPPORT_RESERVED
|
||||
#define IPPORT_RESERVED __DARWIN_IPPORT_RESERVED
|
||||
#endif
|
||||
#define IPPORT_USERRESERVED 5000
|
||||
|
||||
/*
|
||||
* Default local port range to use by setting IP_PORTRANGE_HIGH
|
||||
*/
|
||||
#define IPPORT_HIFIRSTAUTO 49152
|
||||
#define IPPORT_HILASTAUTO 65535
|
||||
|
||||
/*
|
||||
* Scanning for a free reserved port return a value below IPPORT_RESERVED,
|
||||
* but higher than IPPORT_RESERVEDSTART. Traditionally the start value was
|
||||
* 512, but that conflicts with some well-known-services that firewalls may
|
||||
* have a fit if we use.
|
||||
*/
|
||||
#define IPPORT_RESERVEDSTART 600
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Internet address (a structure for historical reasons)
|
||||
*/
|
||||
struct in_addr {
|
||||
in_addr_t s_addr;
|
||||
};
|
||||
|
||||
/*
|
||||
* Definitions of bits in internet address integers.
|
||||
* On subnets, the decomposition of addresses to host and net parts
|
||||
* is done according to subnet mask, not the masks here.
|
||||
*/
|
||||
#define INADDR_ANY (u_int32_t)0x00000000
|
||||
#define INADDR_BROADCAST (u_int32_t)0xffffffff /* must be masked */
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IN_CLASSA(i) (((u_int32_t)(i) & 0x80000000) == 0)
|
||||
#define IN_CLASSA_NET 0xff000000
|
||||
#define IN_CLASSA_NSHIFT 24
|
||||
#define IN_CLASSA_HOST 0x00ffffff
|
||||
#define IN_CLASSA_MAX 128
|
||||
|
||||
#define IN_CLASSB(i) (((u_int32_t)(i) & 0xc0000000) == 0x80000000)
|
||||
#define IN_CLASSB_NET 0xffff0000
|
||||
#define IN_CLASSB_NSHIFT 16
|
||||
#define IN_CLASSB_HOST 0x0000ffff
|
||||
#define IN_CLASSB_MAX 65536
|
||||
|
||||
#define IN_CLASSC(i) (((u_int32_t)(i) & 0xe0000000) == 0xc0000000)
|
||||
#define IN_CLASSC_NET 0xffffff00
|
||||
#define IN_CLASSC_NSHIFT 8
|
||||
#define IN_CLASSC_HOST 0x000000ff
|
||||
|
||||
#define IN_CLASSD(i) (((u_int32_t)(i) & 0xf0000000) == 0xe0000000)
|
||||
#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
|
||||
#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
|
||||
#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
|
||||
#define IN_MULTICAST(i) IN_CLASSD(i)
|
||||
|
||||
#define IN_EXPERIMENTAL(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
|
||||
#define IN_BADCLASS(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
|
||||
|
||||
#define INADDR_LOOPBACK (u_int32_t)0x7f000001
|
||||
|
||||
#define INADDR_NONE 0xffffffff /* -1 return */
|
||||
|
||||
#define INADDR_UNSPEC_GROUP (u_int32_t)0xe0000000 /* 224.0.0.0 */
|
||||
#define INADDR_ALLHOSTS_GROUP (u_int32_t)0xe0000001 /* 224.0.0.1 */
|
||||
#define INADDR_ALLRTRS_GROUP (u_int32_t)0xe0000002 /* 224.0.0.2 */
|
||||
#define INADDR_ALLRPTS_GROUP (u_int32_t)0xe0000016 /* 224.0.0.22, IGMPv3 */
|
||||
#define INADDR_CARP_GROUP (u_int32_t)0xe0000012 /* 224.0.0.18 */
|
||||
#define INADDR_PFSYNC_GROUP (u_int32_t)0xe00000f0 /* 224.0.0.240 */
|
||||
#define INADDR_ALLMDNS_GROUP (u_int32_t)0xe00000fb /* 224.0.0.251 */
|
||||
#define INADDR_MAX_LOCAL_GROUP (u_int32_t)0xe00000ff /* 224.0.0.255 */
|
||||
|
||||
#ifdef __APPLE__
|
||||
#define IN_LINKLOCALNETNUM (u_int32_t)0xA9FE0000 /* 169.254.0.0 */
|
||||
#define IN_LINKLOCAL(i) (((u_int32_t)(i) & IN_CLASSB_NET) == IN_LINKLOCALNETNUM)
|
||||
#define IN_LOOPBACK(i) (((u_int32_t)(i) & 0xff000000) == 0x7f000000)
|
||||
#define IN_ZERONET(i) (((u_int32_t)(i) & 0xff000000) == 0)
|
||||
|
||||
#define IN_PRIVATE(i) ((((u_int32_t)(i) & 0xff000000) == 0x0a000000) || \
|
||||
(((u_int32_t)(i) & 0xfff00000) == 0xac100000) || \
|
||||
(((u_int32_t)(i) & 0xffff0000) == 0xc0a80000))
|
||||
|
||||
|
||||
#define IN_LOCAL_GROUP(i) (((u_int32_t)(i) & 0xffffff00) == 0xe0000000)
|
||||
|
||||
#define IN_ANY_LOCAL(i) (IN_LINKLOCAL(i) || IN_LOCAL_GROUP(i))
|
||||
#endif /* __APPLE__ */
|
||||
|
||||
#define IN_LOOPBACKNET 127 /* official! */
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Socket address, internet style.
|
||||
*/
|
||||
struct sockaddr_in {
|
||||
__uint8_t sin_len;
|
||||
sa_family_t sin_family;
|
||||
in_port_t sin_port;
|
||||
struct in_addr sin_addr;
|
||||
char sin_zero[8];
|
||||
};
|
||||
|
||||
#define IN_ARE_ADDR_EQUAL(a, b) \
|
||||
(bcmp(&(a)->s_addr, &(b)->s_addr, \
|
||||
sizeof (struct in_addr)) == 0)
|
||||
|
||||
|
||||
#define INET_ADDRSTRLEN 16
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
/*
|
||||
* Structure used to describe IP options.
|
||||
* Used to store options internally, to pass them to a process,
|
||||
* or to restore options retrieved earlier.
|
||||
* The ip_dst is used for the first-hop gateway when using a source route
|
||||
* (this gets put into the header proper).
|
||||
*/
|
||||
struct ip_opts {
|
||||
struct in_addr ip_dst; /* first hop, 0 w/o src rt */
|
||||
char ip_opts[40]; /* actually variable in size */
|
||||
};
|
||||
|
||||
/*
|
||||
* Options for use with [gs]etsockopt at the IP level.
|
||||
* First word of comment is data type; bool is stored in int.
|
||||
*/
|
||||
#define IP_OPTIONS 1 /* buf/ip_opts; set/get IP options */
|
||||
#define IP_HDRINCL 2 /* int; header is included with data */
|
||||
#define IP_TOS 3 /* int; IP type of service and preced. */
|
||||
#define IP_TTL 4 /* int; IP time to live */
|
||||
#define IP_RECVOPTS 5 /* bool; receive all IP opts w/dgram */
|
||||
#define IP_RECVRETOPTS 6 /* bool; receive IP opts for response */
|
||||
#define IP_RECVDSTADDR 7 /* bool; receive IP dst addr w/dgram */
|
||||
#define IP_RETOPTS 8 /* ip_opts; set/get IP options */
|
||||
#define IP_MULTICAST_IF 9 /* u_char; set/get IP multicast i/f */
|
||||
#define IP_MULTICAST_TTL 10 /* u_char; set/get IP multicast ttl */
|
||||
#define IP_MULTICAST_LOOP 11 /* u_char; set/get IP multicast loopback */
|
||||
#define IP_ADD_MEMBERSHIP 12 /* ip_mreq; add an IP group membership */
|
||||
#define IP_DROP_MEMBERSHIP 13 /* ip_mreq; drop an IP group membership */
|
||||
#define IP_MULTICAST_VIF 14 /* set/get IP mcast virt. iface */
|
||||
#define IP_RSVP_ON 15 /* enable RSVP in kernel */
|
||||
#define IP_RSVP_OFF 16 /* disable RSVP in kernel */
|
||||
#define IP_RSVP_VIF_ON 17 /* set RSVP per-vif socket */
|
||||
#define IP_RSVP_VIF_OFF 18 /* unset RSVP per-vif socket */
|
||||
#define IP_PORTRANGE 19 /* int; range to choose for unspec port */
|
||||
#define IP_RECVIF 20 /* bool; receive reception if w/dgram */
|
||||
/* for IPSEC */
|
||||
#define IP_IPSEC_POLICY 21 /* int; set/get security policy */
|
||||
#define IP_FAITH 22 /* deprecated */
|
||||
#ifdef __APPLE__
|
||||
#define IP_STRIPHDR 23 /* bool: drop receive of raw IP header */
|
||||
#endif
|
||||
#define IP_RECVTTL 24 /* bool; receive reception TTL w/dgram */
|
||||
#define IP_BOUND_IF 25 /* int; set/get bound interface */
|
||||
#define IP_PKTINFO 26 /* get pktinfo on recv socket, set src on sent dgram */
|
||||
#define IP_RECVPKTINFO IP_PKTINFO /* receive pktinfo w/dgram */
|
||||
#define IP_RECVTOS 27 /* bool; receive IP TOS w/dgram */
|
||||
|
||||
#define IP_FW_ADD 40 /* add a firewall rule to chain */
|
||||
#define IP_FW_DEL 41 /* delete a firewall rule from chain */
|
||||
#define IP_FW_FLUSH 42 /* flush firewall rule chain */
|
||||
#define IP_FW_ZERO 43 /* clear single/all firewall counter(s) */
|
||||
#define IP_FW_GET 44 /* get entire firewall rule chain */
|
||||
#define IP_FW_RESETLOG 45 /* reset logging counters */
|
||||
|
||||
/* These older firewall socket option codes are maintained for backward compatibility. */
|
||||
#define IP_OLD_FW_ADD 50 /* add a firewall rule to chain */
|
||||
#define IP_OLD_FW_DEL 51 /* delete a firewall rule from chain */
|
||||
#define IP_OLD_FW_FLUSH 52 /* flush firewall rule chain */
|
||||
#define IP_OLD_FW_ZERO 53 /* clear single/all firewall counter(s) */
|
||||
#define IP_OLD_FW_GET 54 /* get entire firewall rule chain */
|
||||
#define IP_NAT__XXX 55 /* set/get NAT opts XXX Deprecated, do not use */
|
||||
#define IP_OLD_FW_RESETLOG 56 /* reset logging counters */
|
||||
|
||||
#define IP_DUMMYNET_CONFIGURE 60 /* add/configure a dummynet pipe */
|
||||
#define IP_DUMMYNET_DEL 61 /* delete a dummynet pipe from chain */
|
||||
#define IP_DUMMYNET_FLUSH 62 /* flush dummynet */
|
||||
#define IP_DUMMYNET_GET 64 /* get entire dummynet pipes */
|
||||
|
||||
#define IP_TRAFFIC_MGT_BACKGROUND 65 /* int*; get background IO flags; set background IO */
|
||||
#define IP_MULTICAST_IFINDEX 66 /* int*; set/get IP multicast i/f index */
|
||||
|
||||
/* IPv4 Source Filter Multicast API [RFC3678] */
|
||||
#define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */
|
||||
#define IP_DROP_SOURCE_MEMBERSHIP 71 /* drop a single source */
|
||||
#define IP_BLOCK_SOURCE 72 /* block a source */
|
||||
#define IP_UNBLOCK_SOURCE 73 /* unblock a source */
|
||||
|
||||
/* The following option is private; do not use it from user applications. */
|
||||
#define IP_MSFILTER 74 /* set/get filter list */
|
||||
|
||||
/* Protocol Independent Multicast API [RFC3678] */
|
||||
#define MCAST_JOIN_GROUP 80 /* join an any-source group */
|
||||
#define MCAST_LEAVE_GROUP 81 /* leave all sources for group */
|
||||
#define MCAST_JOIN_SOURCE_GROUP 82 /* join a source-specific group */
|
||||
#define MCAST_LEAVE_SOURCE_GROUP 83 /* leave a single source */
|
||||
#define MCAST_BLOCK_SOURCE 84 /* block a source */
|
||||
#define MCAST_UNBLOCK_SOURCE 85 /* unblock a source */
|
||||
|
||||
|
||||
/*
|
||||
* Defaults and limits for options
|
||||
*/
|
||||
#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
|
||||
#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
|
||||
|
||||
/*
|
||||
* The imo_membership vector for each socket is now dynamically allocated at
|
||||
* run-time, bounded by USHRT_MAX, and is reallocated when needed, sized
|
||||
* according to a power-of-two increment.
|
||||
*/
|
||||
#define IP_MIN_MEMBERSHIPS 31
|
||||
#define IP_MAX_MEMBERSHIPS 4095
|
||||
|
||||
/*
|
||||
* Default resource limits for IPv4 multicast source filtering.
|
||||
* These may be modified by sysctl.
|
||||
*/
|
||||
#define IP_MAX_GROUP_SRC_FILTER 512 /* sources per group */
|
||||
#define IP_MAX_SOCK_SRC_FILTER 128 /* sources per socket/group */
|
||||
#define IP_MAX_SOCK_MUTE_FILTER 128 /* XXX no longer used */
|
||||
|
||||
/*
|
||||
* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
|
||||
*/
|
||||
struct ip_mreq {
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_interface; /* local IP address of interface */
|
||||
};
|
||||
|
||||
/*
|
||||
* Modified argument structure for IP_MULTICAST_IF, obtained from Linux.
|
||||
* This is used to specify an interface index for multicast sends, as
|
||||
* the IPv4 legacy APIs do not support this (unless IP_SENDIF is available).
|
||||
*/
|
||||
struct ip_mreqn {
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_address; /* local IP address of interface */
|
||||
int imr_ifindex; /* Interface index; cast to uint32_t */
|
||||
};
|
||||
|
||||
#pragma pack(4)
|
||||
/*
|
||||
* Argument structure for IPv4 Multicast Source Filter APIs. [RFC3678]
|
||||
*/
|
||||
struct ip_mreq_source {
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_sourceaddr; /* IP address of source */
|
||||
struct in_addr imr_interface; /* local IP address of interface */
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument structures for Protocol-Independent Multicast Source
|
||||
* Filter APIs. [RFC3678]
|
||||
*/
|
||||
struct group_req {
|
||||
uint32_t gr_interface; /* interface index */
|
||||
struct sockaddr_storage gr_group; /* group address */
|
||||
};
|
||||
|
||||
struct group_source_req {
|
||||
uint32_t gsr_interface; /* interface index */
|
||||
struct sockaddr_storage gsr_group; /* group address */
|
||||
struct sockaddr_storage gsr_source; /* source address */
|
||||
};
|
||||
|
||||
#ifndef __MSFILTERREQ_DEFINED
|
||||
#define __MSFILTERREQ_DEFINED
|
||||
/*
|
||||
* The following structure is private; do not use it from user applications.
|
||||
* It is used to communicate IP_MSFILTER/IPV6_MSFILTER information between
|
||||
* the RFC 3678 libc functions and the kernel.
|
||||
*/
|
||||
struct __msfilterreq {
|
||||
uint32_t msfr_ifindex; /* interface index */
|
||||
uint32_t msfr_fmode; /* filter mode for group */
|
||||
uint32_t msfr_nsrcs; /* # of sources in msfr_srcs */
|
||||
uint32_t __msfr_align;
|
||||
struct sockaddr_storage msfr_group; /* group address */
|
||||
struct sockaddr_storage *msfr_srcs;
|
||||
};
|
||||
|
||||
#endif /* __MSFILTERREQ_DEFINED */
|
||||
|
||||
#pragma pack()
|
||||
struct sockaddr;
|
||||
|
||||
/*
|
||||
* Advanced (Full-state) APIs [RFC3678]
|
||||
* The RFC specifies uint_t for the 6th argument to [sg]etsourcefilter().
|
||||
* We use uint32_t here to be consistent.
|
||||
*/
|
||||
int setipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t,
|
||||
uint32_t, struct in_addr *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
|
||||
int getipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t *,
|
||||
uint32_t *, struct in_addr *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
|
||||
int setsourcefilter(int, uint32_t, struct sockaddr *, socklen_t,
|
||||
uint32_t, uint32_t, struct sockaddr_storage *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
|
||||
int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t,
|
||||
uint32_t *, uint32_t *, struct sockaddr_storage *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
|
||||
|
||||
/*
|
||||
* Filter modes; also used to represent per-socket filter mode internally.
|
||||
*/
|
||||
#define MCAST_UNDEFINED 0 /* fmode: not yet defined */
|
||||
#define MCAST_INCLUDE 1 /* fmode: include these source(s) */
|
||||
#define MCAST_EXCLUDE 2 /* fmode: exclude these source(s) */
|
||||
|
||||
/*
|
||||
* Argument for IP_PORTRANGE:
|
||||
* - which range to search when port is unspecified at bind() or connect()
|
||||
*/
|
||||
#define IP_PORTRANGE_DEFAULT 0 /* default range */
|
||||
#define IP_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
|
||||
#define IP_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
|
||||
|
||||
|
||||
/*
|
||||
* IP_PKTINFO: Packet information (equivalent to RFC2292 sec 5 for IPv4)
|
||||
* This structure is used for
|
||||
*
|
||||
* 1) Receiving ancilliary data about the datagram if IP_PKTINFO sockopt is
|
||||
* set on the socket. In this case ipi_ifindex will contain the interface
|
||||
* index the datagram was received on, ipi_addr is the IP address the
|
||||
* datagram was received to.
|
||||
*
|
||||
* 2) Sending a datagram using a specific interface or IP source address.
|
||||
* if ipi_ifindex is set to non-zero when in_pktinfo is passed as
|
||||
* ancilliary data of type IP_PKTINFO, this will be used as the source
|
||||
* interface to send the datagram from. If ipi_ifindex is null, ip_spec_dst
|
||||
* will be used for the source address.
|
||||
*
|
||||
* Note: if IP_BOUND_IF is set on the socket, ipi_ifindex in the ancillary
|
||||
* IP_PKTINFO option silently overrides the bound interface when it is
|
||||
* specified during send time.
|
||||
*/
|
||||
struct in_pktinfo {
|
||||
unsigned int ipi_ifindex; /* send/recv interface index */
|
||||
struct in_addr ipi_spec_dst; /* Local address */
|
||||
struct in_addr ipi_addr; /* IP Header dst address */
|
||||
};
|
||||
|
||||
/*
|
||||
* Definitions for inet sysctl operations.
|
||||
*
|
||||
* Third level is protocol number.
|
||||
* Fourth level is desired variable within that protocol.
|
||||
*/
|
||||
#define IPPROTO_MAXID (IPPROTO_AH + 1) /* don't list to IPPROTO_MAX */
|
||||
|
||||
|
||||
/*
|
||||
* Names for IP sysctl objects
|
||||
*/
|
||||
#define IPCTL_FORWARDING 1 /* act as router */
|
||||
#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
|
||||
#define IPCTL_DEFTTL 3 /* default TTL */
|
||||
#ifdef notyet
|
||||
#define IPCTL_DEFMTU 4 /* default MTU */
|
||||
#endif
|
||||
#define IPCTL_RTEXPIRE 5 /* cloned route expiration time */
|
||||
#define IPCTL_RTMINEXPIRE 6 /* min value for expiration time */
|
||||
#define IPCTL_RTMAXCACHE 7 /* trigger level for dynamic expire */
|
||||
#define IPCTL_SOURCEROUTE 8 /* may perform source routes */
|
||||
#define IPCTL_DIRECTEDBROADCAST 9 /* may re-broadcast received packets */
|
||||
#define IPCTL_INTRQMAXLEN 10 /* max length of netisr queue */
|
||||
#define IPCTL_INTRQDROPS 11 /* number of netisr q drops */
|
||||
#define IPCTL_STATS 12 /* ipstat structure */
|
||||
#define IPCTL_ACCEPTSOURCEROUTE 13 /* may accept source routed packets */
|
||||
#define IPCTL_FASTFORWARDING 14 /* use fast IP forwarding code */
|
||||
#define IPCTL_KEEPFAITH 15 /* deprecated */
|
||||
#define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */
|
||||
#define IPCTL_MAXID 17
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
|
||||
/* INET6 stuff */
|
||||
#define __KAME_NETINET_IN_H_INCLUDED_
|
||||
#include <netinet6/in6.h>
|
||||
#undef __KAME_NETINET_IN_H_INCLUDED_
|
||||
|
||||
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
__BEGIN_DECLS
|
||||
int bindresvport(int, struct sockaddr_in *);
|
||||
struct sockaddr;
|
||||
int bindresvport_sa(int, struct sockaddr *);
|
||||
__END_DECLS
|
||||
#endif
|
||||
#endif /* _NETINET_IN_H_ */
|
|
@ -0,0 +1,283 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2018 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)tcp.h 8.1 (Berkeley) 6/10/93
|
||||
* $FreeBSD: src/sys/netinet/tcp.h,v 1.13.2.3 2001/03/01 22:08:42 jlemon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_TCP_H_
|
||||
#define _NETINET_TCP_H_
|
||||
#include <sys/types.h>
|
||||
#include <sys/appleapiopts.h>
|
||||
#include <machine/endian.h>
|
||||
#include <machine/types.h> /* __uint32_t */
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
typedef __uint32_t tcp_seq;
|
||||
typedef __uint32_t tcp_cc; /* connection count per rfc1644 */
|
||||
|
||||
#define tcp6_seq tcp_seq /* for KAME src sync over BSD*'s */
|
||||
#define tcp6hdr tcphdr /* for KAME src sync over BSD*'s */
|
||||
|
||||
/*
|
||||
* TCP header.
|
||||
* Per RFC 793, September, 1981.
|
||||
*/
|
||||
struct tcphdr {
|
||||
unsigned short th_sport; /* source port */
|
||||
unsigned short th_dport; /* destination port */
|
||||
tcp_seq th_seq; /* sequence number */
|
||||
tcp_seq th_ack; /* acknowledgement number */
|
||||
#if __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN
|
||||
unsigned int th_x2:4, /* (unused) */
|
||||
th_off:4; /* data offset */
|
||||
#endif
|
||||
#if __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN
|
||||
unsigned int th_off:4, /* data offset */
|
||||
th_x2:4; /* (unused) */
|
||||
#endif
|
||||
unsigned char th_flags;
|
||||
#define TH_FIN 0x01
|
||||
#define TH_SYN 0x02
|
||||
#define TH_RST 0x04
|
||||
#define TH_PUSH 0x08
|
||||
#define TH_ACK 0x10
|
||||
#define TH_URG 0x20
|
||||
#define TH_ECE 0x40
|
||||
#define TH_CWR 0x80
|
||||
#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
|
||||
#define TH_ACCEPT (TH_FIN|TH_SYN|TH_RST|TH_ACK)
|
||||
|
||||
unsigned short th_win; /* window */
|
||||
unsigned short th_sum; /* checksum */
|
||||
unsigned short th_urp; /* urgent pointer */
|
||||
};
|
||||
|
||||
#define TCPOPT_EOL 0
|
||||
#define TCPOPT_NOP 1
|
||||
#define TCPOPT_MAXSEG 2
|
||||
#define TCPOLEN_MAXSEG 4
|
||||
#define TCPOPT_WINDOW 3
|
||||
#define TCPOLEN_WINDOW 3
|
||||
#define TCPOPT_SACK_PERMITTED 4 /* Experimental */
|
||||
#define TCPOLEN_SACK_PERMITTED 2
|
||||
#define TCPOPT_SACK 5 /* Experimental */
|
||||
#define TCPOLEN_SACK 8 /* len of sack block */
|
||||
#define TCPOPT_TIMESTAMP 8
|
||||
#define TCPOLEN_TIMESTAMP 10
|
||||
#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */
|
||||
#define TCPOPT_TSTAMP_HDR \
|
||||
(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
|
||||
|
||||
#define MAX_TCPOPTLEN 40 /* Absolute maximum TCP options len */
|
||||
|
||||
#define TCPOPT_CC 11 /* CC options: RFC-1644 */
|
||||
#define TCPOPT_CCNEW 12
|
||||
#define TCPOPT_CCECHO 13
|
||||
#define TCPOLEN_CC 6
|
||||
#define TCPOLEN_CC_APPA (TCPOLEN_CC+2)
|
||||
#define TCPOPT_CC_HDR(ccopt) \
|
||||
(TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC)
|
||||
#define TCPOPT_SIGNATURE 19 /* Keyed MD5: RFC 2385 */
|
||||
#define TCPOLEN_SIGNATURE 18
|
||||
#if MPTCP
|
||||
#define TCPOPT_MULTIPATH 30
|
||||
#endif
|
||||
|
||||
#define TCPOPT_FASTOPEN 34
|
||||
#define TCPOLEN_FASTOPEN_REQ 2
|
||||
|
||||
/* Option definitions */
|
||||
#define TCPOPT_SACK_PERMIT_HDR \
|
||||
(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_SACK_PERMITTED<<8|TCPOLEN_SACK_PERMITTED)
|
||||
#define TCPOPT_SACK_HDR (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_SACK<<8)
|
||||
/* Miscellaneous constants */
|
||||
#define MAX_SACK_BLKS 6 /* Max # SACK blocks stored at sender side */
|
||||
|
||||
/*
|
||||
* A SACK option that specifies n blocks will have a length of (8*n + 2)
|
||||
* bytes, so the 40 bytes available for TCP options can specify a
|
||||
* maximum of 4 blocks.
|
||||
*/
|
||||
|
||||
#define TCP_MAX_SACK 4 /* MAX # SACKs sent in any segment */
|
||||
|
||||
|
||||
/*
|
||||
* Default maximum segment size for TCP.
|
||||
* With an IP MTU of 576, this is 536,
|
||||
* but 512 is probably more convenient.
|
||||
* This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
|
||||
*/
|
||||
#define TCP_MSS 512
|
||||
|
||||
/*
|
||||
* TCP_MINMSS is defined to be 216 which is fine for the smallest
|
||||
* link MTU (256 bytes, SLIP interface) in the Internet.
|
||||
* However it is very unlikely to come across such low MTU interfaces
|
||||
* these days (anno dato 2004).
|
||||
* Probably it can be set to 512 without ill effects. But we play safe.
|
||||
* See tcp_subr.c tcp_minmss SYSCTL declaration for more comments.
|
||||
* Setting this to "0" disables the minmss check.
|
||||
*/
|
||||
#define TCP_MINMSS 216
|
||||
|
||||
/*
|
||||
* Default maximum segment size for TCP6.
|
||||
* With an IP6 MSS of 1280, this is 1220,
|
||||
* but 1024 is probably more convenient. (xxx kazu in doubt)
|
||||
* This should be defined as MIN(1024, IP6_MSS - sizeof (struct tcpip6hdr))
|
||||
*/
|
||||
#define TCP6_MSS 1024
|
||||
|
||||
#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */
|
||||
#define TTCP_CLIENT_SND_WND 4096 /* dflt send window for T/TCP client */
|
||||
|
||||
#define TCP_MAX_WINSHIFT 14 /* maximum window shift */
|
||||
|
||||
#define TCP_MAXHLEN (0xf<<2) /* max length of header in bytes */
|
||||
#define TCP_MAXOLEN (TCP_MAXHLEN - sizeof(struct tcphdr))
|
||||
/* max space left for options */
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* User-settable options (used with setsockopt).
|
||||
*/
|
||||
#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define TCP_MAXSEG 0x02 /* set maximum segment size */
|
||||
#define TCP_NOPUSH 0x04 /* don't push last block of write */
|
||||
#define TCP_NOOPT 0x08 /* don't use TCP options */
|
||||
#define TCP_KEEPALIVE 0x10 /* idle time used when SO_KEEPALIVE is enabled */
|
||||
#define TCP_CONNECTIONTIMEOUT 0x20 /* connection timeout */
|
||||
#define PERSIST_TIMEOUT 0x40 /* time after which a connection in
|
||||
* persist timeout will terminate.
|
||||
* see draft-ananth-tcpm-persist-02.txt
|
||||
*/
|
||||
#define TCP_RXT_CONNDROPTIME 0x80 /* time after which tcp retransmissions will be
|
||||
* stopped and the connection will be dropped
|
||||
*/
|
||||
#define TCP_RXT_FINDROP 0x100 /* when this option is set, drop a connection
|
||||
* after retransmitting the FIN 3 times. It will
|
||||
* prevent holding too many mbufs in socket
|
||||
* buffer queues.
|
||||
*/
|
||||
#define TCP_KEEPINTVL 0x101 /* interval between keepalives */
|
||||
#define TCP_KEEPCNT 0x102 /* number of keepalives before close */
|
||||
#define TCP_SENDMOREACKS 0x103 /* always ack every other packet */
|
||||
#define TCP_ENABLE_ECN 0x104 /* Enable ECN on a connection */
|
||||
#define TCP_FASTOPEN 0x105 /* Enable/Disable TCP Fastopen on this socket */
|
||||
#define TCP_CONNECTION_INFO 0x106 /* State of TCP connection */
|
||||
|
||||
|
||||
|
||||
#define TCP_NOTSENT_LOWAT 0x201 /* Low water mark for TCP unsent data */
|
||||
|
||||
|
||||
struct tcp_connection_info {
|
||||
u_int8_t tcpi_state; /* connection state */
|
||||
u_int8_t tcpi_snd_wscale; /* Window scale for send window */
|
||||
u_int8_t tcpi_rcv_wscale; /* Window scale for receive window */
|
||||
u_int8_t __pad1;
|
||||
u_int32_t tcpi_options; /* TCP options supported */
|
||||
#define TCPCI_OPT_TIMESTAMPS 0x00000001 /* Timestamps enabled */
|
||||
#define TCPCI_OPT_SACK 0x00000002 /* SACK enabled */
|
||||
#define TCPCI_OPT_WSCALE 0x00000004 /* Window scaling enabled */
|
||||
#define TCPCI_OPT_ECN 0x00000008 /* ECN enabled */
|
||||
u_int32_t tcpi_flags; /* flags */
|
||||
#define TCPCI_FLAG_LOSSRECOVERY 0x00000001
|
||||
#define TCPCI_FLAG_REORDERING_DETECTED 0x00000002
|
||||
u_int32_t tcpi_rto; /* retransmit timeout in ms */
|
||||
u_int32_t tcpi_maxseg; /* maximum segment size supported */
|
||||
u_int32_t tcpi_snd_ssthresh; /* slow start threshold in bytes */
|
||||
u_int32_t tcpi_snd_cwnd; /* send congestion window in bytes */
|
||||
u_int32_t tcpi_snd_wnd; /* send widnow in bytes */
|
||||
u_int32_t tcpi_snd_sbbytes; /* bytes in send socket buffer, including in-flight data */
|
||||
u_int32_t tcpi_rcv_wnd; /* receive window in bytes*/
|
||||
u_int32_t tcpi_rttcur; /* most recent RTT in ms */
|
||||
u_int32_t tcpi_srtt; /* average RTT in ms */
|
||||
u_int32_t tcpi_rttvar; /* RTT variance */
|
||||
u_int32_t
|
||||
tcpi_tfo_cookie_req:1, /* Cookie requested? */
|
||||
tcpi_tfo_cookie_rcv:1, /* Cookie received? */
|
||||
tcpi_tfo_syn_loss:1, /* Fallback to reg. TCP after SYN-loss */
|
||||
tcpi_tfo_syn_data_sent:1, /* SYN+data has been sent out */
|
||||
tcpi_tfo_syn_data_acked:1, /* SYN+data has been fully acknowledged */
|
||||
tcpi_tfo_syn_data_rcv:1, /* Server received SYN+data with a valid cookie */
|
||||
tcpi_tfo_cookie_req_rcv:1, /* Server received cookie-request */
|
||||
tcpi_tfo_cookie_sent:1, /* Server announced cookie */
|
||||
tcpi_tfo_cookie_invalid:1, /* Server received an invalid cookie */
|
||||
tcpi_tfo_cookie_wrong:1, /* Our sent cookie was wrong */
|
||||
tcpi_tfo_no_cookie_rcv:1, /* We did not receive a cookie upon our request */
|
||||
tcpi_tfo_heuristics_disable:1, /* TFO-heuristics disabled it */
|
||||
tcpi_tfo_send_blackhole:1, /* A sending-blackhole got detected */
|
||||
tcpi_tfo_recv_blackhole:1, /* A receiver-blackhole got detected */
|
||||
tcpi_tfo_onebyte_proxy:1, /* A proxy acknowledges all but one byte of the SYN */
|
||||
__pad2:17;
|
||||
u_int64_t tcpi_txpackets __attribute__((aligned(8)));
|
||||
u_int64_t tcpi_txbytes __attribute__((aligned(8)));
|
||||
u_int64_t tcpi_txretransmitbytes __attribute__((aligned(8)));
|
||||
u_int64_t tcpi_rxpackets __attribute__((aligned(8)));
|
||||
u_int64_t tcpi_rxbytes __attribute__((aligned(8)));
|
||||
u_int64_t tcpi_rxoutoforderbytes __attribute__((aligned(8)));
|
||||
u_int64_t tcpi_txretransmitpackets __attribute__((aligned(8)));
|
||||
};
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
#endif
|
|
@ -0,0 +1,667 @@
|
|||
/*
|
||||
* Copyright (c) 2008-2018 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the project nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)in.h 8.3 (Berkeley) 1/3/94
|
||||
*/
|
||||
|
||||
#ifndef __KAME_NETINET_IN_H_INCLUDED_
|
||||
#error "do not include netinet6/in6.h directly, include netinet/in.h. " \
|
||||
" see RFC2553"
|
||||
#endif
|
||||
|
||||
#ifndef _NETINET6_IN6_H_
|
||||
#define _NETINET6_IN6_H_
|
||||
#include <sys/appleapiopts.h>
|
||||
#include <sys/_types.h>
|
||||
#include <sys/_types/_sa_family_t.h>
|
||||
|
||||
/*
|
||||
* Identification of the network protocol stack
|
||||
* for *BSD-current/release: http://www.kame.net/dev/cvsweb.cgi/kame/COVERAGE
|
||||
* has the table of implementation/integration differences.
|
||||
*/
|
||||
#define __KAME__
|
||||
#define __KAME_VERSION "2009/apple-darwin"
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
/*
|
||||
* Local port number conventions:
|
||||
*
|
||||
* Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root),
|
||||
* unless a kernel is compiled with IPNOPRIVPORTS defined.
|
||||
*
|
||||
* When a user does a bind(2) or connect(2) with a port number of zero,
|
||||
* a non-conflicting local port address is chosen.
|
||||
*
|
||||
* The default range is IPPORT_ANONMIN to IPPORT_ANONMAX, although
|
||||
* that is settable by sysctl(3); net.inet.ip.anonportmin and
|
||||
* net.inet.ip.anonportmax respectively.
|
||||
*
|
||||
* A user may set the IPPROTO_IP option IP_PORTRANGE to change this
|
||||
* default assignment range.
|
||||
*
|
||||
* The value IP_PORTRANGE_DEFAULT causes the default behavior.
|
||||
*
|
||||
* The value IP_PORTRANGE_HIGH is the same as IP_PORTRANGE_DEFAULT,
|
||||
* and exists only for FreeBSD compatibility purposes.
|
||||
*
|
||||
* The value IP_PORTRANGE_LOW changes the range to the "low" are
|
||||
* that is (by convention) restricted to privileged processes.
|
||||
* This convention is based on "vouchsafe" principles only.
|
||||
* It is only secure if you trust the remote host to restrict these ports.
|
||||
* The range is IPPORT_RESERVEDMIN to IPPORT_RESERVEDMAX.
|
||||
*/
|
||||
|
||||
#define IPV6PORT_RESERVED 1024
|
||||
#define IPV6PORT_ANONMIN 49152
|
||||
#define IPV6PORT_ANONMAX 65535
|
||||
#define IPV6PORT_RESERVEDMIN 600
|
||||
#define IPV6PORT_RESERVEDMAX (IPV6PORT_RESERVED-1)
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* IPv6 address
|
||||
*/
|
||||
typedef struct in6_addr {
|
||||
union {
|
||||
__uint8_t __u6_addr8[16];
|
||||
__uint16_t __u6_addr16[8];
|
||||
__uint32_t __u6_addr32[4];
|
||||
} __u6_addr; /* 128-bit IP6 address */
|
||||
} in6_addr_t;
|
||||
|
||||
#define s6_addr __u6_addr.__u6_addr8
|
||||
|
||||
#define INET6_ADDRSTRLEN 46
|
||||
|
||||
/*
|
||||
* Socket address for IPv6
|
||||
*/
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define SIN6_LEN
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
struct sockaddr_in6 {
|
||||
__uint8_t sin6_len; /* length of this struct(sa_family_t) */
|
||||
sa_family_t sin6_family; /* AF_INET6 (sa_family_t) */
|
||||
in_port_t sin6_port; /* Transport layer port # (in_port_t) */
|
||||
__uint32_t sin6_flowinfo; /* IP6 flow information */
|
||||
struct in6_addr sin6_addr; /* IP6 address */
|
||||
__uint32_t sin6_scope_id; /* scope zone index */
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Definition of some useful macros to handle IP6 addresses
|
||||
*/
|
||||
#define IN6ADDR_ANY_INIT \
|
||||
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
|
||||
#define IN6ADDR_LOOPBACK_INIT \
|
||||
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IN6ADDR_NODELOCAL_ALLNODES_INIT \
|
||||
{{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_INTFACELOCAL_ALLNODES_INIT \
|
||||
{{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_LINKLOCAL_ALLNODES_INIT \
|
||||
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
|
||||
#define IN6ADDR_LINKLOCAL_ALLROUTERS_INIT \
|
||||
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}}
|
||||
#define IN6ADDR_LINKLOCAL_ALLV2ROUTERS_INIT \
|
||||
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16 }}}
|
||||
#define IN6ADDR_V4MAPPED_INIT \
|
||||
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }}}
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
extern const struct in6_addr in6addr_any;
|
||||
extern const struct in6_addr in6addr_loopback;
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
extern const struct in6_addr in6addr_nodelocal_allnodes;
|
||||
extern const struct in6_addr in6addr_linklocal_allnodes;
|
||||
extern const struct in6_addr in6addr_linklocal_allrouters;
|
||||
extern const struct in6_addr in6addr_linklocal_allv2routers;
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
/*
|
||||
* Equality
|
||||
* NOTE: Some of kernel programming environment (for example, openbsd/sparc)
|
||||
* does not supply memcmp(). For userland memcmp() is preferred as it is
|
||||
* in ANSI standard.
|
||||
*/
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IN6_ARE_ADDR_EQUAL(a, b) \
|
||||
(memcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof (struct in6_addr)) \
|
||||
== 0)
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
|
||||
|
||||
/*
|
||||
* Unspecified
|
||||
*/
|
||||
#define IN6_IS_ADDR_UNSPECIFIED(a) \
|
||||
((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) == 0))
|
||||
|
||||
/*
|
||||
* Loopback
|
||||
*/
|
||||
#define IN6_IS_ADDR_LOOPBACK(a) \
|
||||
((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) == ntohl(1)))
|
||||
|
||||
/*
|
||||
* IPv4 compatible
|
||||
*/
|
||||
#define IN6_IS_ADDR_V4COMPAT(a) \
|
||||
((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) != 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) != ntohl(1)))
|
||||
|
||||
/*
|
||||
* Mapped
|
||||
*/
|
||||
#define IN6_IS_ADDR_V4MAPPED(a) \
|
||||
((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
|
||||
(*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == \
|
||||
ntohl(0x0000ffff)))
|
||||
|
||||
/*
|
||||
* 6to4
|
||||
*/
|
||||
#define IN6_IS_ADDR_6TO4(x) (ntohs((x)->s6_addr16[0]) == 0x2002)
|
||||
|
||||
/*
|
||||
* KAME Scope Values
|
||||
*/
|
||||
|
||||
#define __IPV6_ADDR_SCOPE_NODELOCAL 0x01
|
||||
#define __IPV6_ADDR_SCOPE_INTFACELOCAL 0x01
|
||||
#define __IPV6_ADDR_SCOPE_LINKLOCAL 0x02
|
||||
#define __IPV6_ADDR_SCOPE_SITELOCAL 0x05
|
||||
#define __IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* just used in this file */
|
||||
#define __IPV6_ADDR_SCOPE_GLOBAL 0x0e
|
||||
|
||||
/*
|
||||
* Unicast Scope
|
||||
* Note that we must check topmost 10 bits only, not 16 bits (see RFC2373).
|
||||
*/
|
||||
#define IN6_IS_ADDR_LINKLOCAL(a) \
|
||||
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80))
|
||||
#define IN6_IS_ADDR_SITELOCAL(a) \
|
||||
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0))
|
||||
|
||||
/*
|
||||
* Multicast
|
||||
*/
|
||||
#define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr[0] == 0xff)
|
||||
|
||||
/*
|
||||
* Unique Local IPv6 Unicast Addresses (per RFC 4193)
|
||||
*/
|
||||
#define IN6_IS_ADDR_UNIQUE_LOCAL(a) \
|
||||
(((a)->s6_addr[0] == 0xfc) || ((a)->s6_addr[0] == 0xfd))
|
||||
|
||||
#define __IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f)
|
||||
|
||||
/*
|
||||
* Multicast Scope
|
||||
*/
|
||||
#define IN6_IS_ADDR_MC_NODELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_NODELOCAL))
|
||||
#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_LINKLOCAL))
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL))
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL))
|
||||
#define IN6_IS_ADDR_MC_GLOBAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_GLOBAL))
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Options for use with [gs]etsockopt at the IPV6 level.
|
||||
* First word of comment is data type; bool is stored in int.
|
||||
*/
|
||||
/* no hdrincl */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
/*
|
||||
* RFC 3542 define the following socket options in a manner incompatible
|
||||
* with RFC 2292:
|
||||
* IPV6_PKTINFO
|
||||
* IPV6_HOPLIMIT
|
||||
* IPV6_NEXTHOP
|
||||
* IPV6_HOPOPTS
|
||||
* IPV6_DSTOPTS
|
||||
* IPV6_RTHDR
|
||||
*
|
||||
* To use the new IPv6 Sockets options introduced by RFC 3542
|
||||
* the constant __APPLE_USE_RFC_3542 must be defined before
|
||||
* including <netinet/in.h>
|
||||
*
|
||||
* To use the old IPv6 Sockets options from RFC 2292
|
||||
* the constant __APPLE_USE_RFC_2292 must be defined before
|
||||
* including <netinet/in.h>
|
||||
*
|
||||
* Note that eventually RFC 3542 is going to be the
|
||||
* default and RFC 2292 will be obsolete.
|
||||
*/
|
||||
|
||||
#if defined(__APPLE_USE_RFC_3542) && defined(__APPLE_USE_RFC_2292)
|
||||
#error "__APPLE_USE_RFC_3542 and __APPLE_USE_RFC_2292 cannot be both defined"
|
||||
#endif
|
||||
|
||||
#if 0 /* the followings are relic in IPv4 and hence are disabled */
|
||||
#define IPV6_OPTIONS 1 /* buf/ip6_opts; set/get IP6 options */
|
||||
#define IPV6_RECVOPTS 5 /* bool; receive all IP6 opts w/dgram */
|
||||
#define IPV6_RECVRETOPTS 6 /* bool; receive IP6 opts for response */
|
||||
#define IPV6_RECVDSTADDR 7 /* bool; receive IP6 dst addr w/dgram */
|
||||
#define IPV6_RETOPTS 8 /* ip6_opts; set/get IP6 options */
|
||||
#endif /* 0 */
|
||||
#define IPV6_SOCKOPT_RESERVED1 3 /* reserved for future use */
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */
|
||||
#define IPV6_MULTICAST_IF 9 /* __uint8_t; set/get IP6 multicast i/f */
|
||||
#define IPV6_MULTICAST_HOPS 10 /* __uint8_t; set/get IP6 multicast hops */
|
||||
#define IPV6_MULTICAST_LOOP 11 /* __uint8_t; set/get IP6 mcast loopback */
|
||||
#define IPV6_JOIN_GROUP 12 /* ip6_mreq; join a group membership */
|
||||
#define IPV6_LEAVE_GROUP 13 /* ip6_mreq; leave a group membership */
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPV6_PORTRANGE 14 /* int; range to choose for unspec port */
|
||||
#define ICMP6_FILTER 18 /* icmp6_filter; icmp6 filter */
|
||||
#define IPV6_2292PKTINFO 19 /* bool; send/recv if, src/dst addr */
|
||||
#define IPV6_2292HOPLIMIT 20 /* bool; hop limit */
|
||||
#define IPV6_2292NEXTHOP 21 /* bool; next hop addr */
|
||||
#define IPV6_2292HOPOPTS 22 /* bool; hop-by-hop option */
|
||||
#define IPV6_2292DSTOPTS 23 /* bool; destinaion option */
|
||||
#define IPV6_2292RTHDR 24 /* ip6_rthdr: routing header */
|
||||
|
||||
/* buf/cmsghdr; set/get IPv6 options [obsoleted by RFC3542] */
|
||||
#define IPV6_2292PKTOPTIONS 25
|
||||
|
||||
#ifdef __APPLE_USE_RFC_2292
|
||||
#define IPV6_PKTINFO IPV6_2292PKTINFO
|
||||
#define IPV6_HOPLIMIT IPV6_2292HOPLIMIT
|
||||
#define IPV6_NEXTHOP IPV6_2292NEXTHOP
|
||||
#define IPV6_HOPOPTS IPV6_2292HOPOPTS
|
||||
#define IPV6_DSTOPTS IPV6_2292DSTOPTS
|
||||
#define IPV6_RTHDR IPV6_2292RTHDR
|
||||
#define IPV6_PKTOPTIONS IPV6_2292PKTOPTIONS
|
||||
#endif /* __APPLE_USE_RFC_2292 */
|
||||
|
||||
#define IPV6_CHECKSUM 26 /* int; checksum offset for raw socket */
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
#define IPV6_V6ONLY 27 /* bool; only bind INET6 at wildcard bind */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define IPV6_BINDV6ONLY IPV6_V6ONLY
|
||||
|
||||
|
||||
#if 1 /* IPSEC */
|
||||
#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */
|
||||
#endif /* 1 */
|
||||
#define IPV6_FAITH 29 /* deprecated */
|
||||
|
||||
#if 1 /* IPV6FIREWALL */
|
||||
#define IPV6_FW_ADD 30 /* add a firewall rule to chain */
|
||||
#define IPV6_FW_DEL 31 /* delete a firewall rule from chain */
|
||||
#define IPV6_FW_FLUSH 32 /* flush firewall rule chain */
|
||||
#define IPV6_FW_ZERO 33 /* clear single/all firewall counter(s) */
|
||||
#define IPV6_FW_GET 34 /* get entire firewall rule chain */
|
||||
#endif /* 1 */
|
||||
|
||||
/*
|
||||
* APPLE: NOTE the value of those 2 options is kept unchanged from
|
||||
* previous version of darwin/OS X for binary compatibility reasons
|
||||
* and differ from FreeBSD (values 57 and 61). See below.
|
||||
*/
|
||||
#define IPV6_RECVTCLASS 35 /* bool; recv traffic class values */
|
||||
#define IPV6_TCLASS 36 /* int; send traffic class value */
|
||||
|
||||
#ifdef __APPLE_USE_RFC_3542
|
||||
/* new socket options introduced in RFC3542 */
|
||||
/*
|
||||
* ip6_dest; send dst option before rthdr
|
||||
* APPLE: Value purposely different than FreeBSD (35) to avoid
|
||||
* collision with definition of IPV6_RECVTCLASS in previous
|
||||
* darwin implementations
|
||||
*/
|
||||
#define IPV6_RTHDRDSTOPTS 57
|
||||
|
||||
/*
|
||||
* bool; recv if, dst addr
|
||||
* APPLE: Value purposely different than FreeBSD(36) to avoid
|
||||
* collision with definition of IPV6_TCLASS in previous
|
||||
* darwin implementations
|
||||
*/
|
||||
#define IPV6_RECVPKTINFO 61
|
||||
|
||||
#define IPV6_RECVHOPLIMIT 37 /* bool; recv hop limit */
|
||||
#define IPV6_RECVRTHDR 38 /* bool; recv routing header */
|
||||
#define IPV6_RECVHOPOPTS 39 /* bool; recv hop-by-hop option */
|
||||
#define IPV6_RECVDSTOPTS 40 /* bool; recv dst option after rthdr */
|
||||
|
||||
#define IPV6_USE_MIN_MTU 42 /* bool; send packets at the minimum MTU */
|
||||
#define IPV6_RECVPATHMTU 43 /* bool; notify an according MTU */
|
||||
|
||||
/*
|
||||
* mtuinfo; get the current path MTU (sopt), 4 bytes int;
|
||||
* MTU notification (cmsg)
|
||||
*/
|
||||
#define IPV6_PATHMTU 44
|
||||
|
||||
#if 0 /* obsoleted during 2292bis -> 3542 */
|
||||
/* no data; ND reachability confirm (cmsg only/not in of RFC3542) */
|
||||
#define IPV6_REACHCONF 45
|
||||
#endif
|
||||
/* more new socket options introduced in RFC3542 */
|
||||
#define IPV6_3542PKTINFO 46 /* in6_pktinfo; send if, src addr */
|
||||
#define IPV6_3542HOPLIMIT 47 /* int; send hop limit */
|
||||
#define IPV6_3542NEXTHOP 48 /* sockaddr; next hop addr */
|
||||
#define IPV6_3542HOPOPTS 49 /* ip6_hbh; send hop-by-hop option */
|
||||
#define IPV6_3542DSTOPTS 50 /* ip6_dest; send dst option befor rthdr */
|
||||
#define IPV6_3542RTHDR 51 /* ip6_rthdr; send routing header */
|
||||
|
||||
#define IPV6_PKTINFO IPV6_3542PKTINFO
|
||||
#define IPV6_HOPLIMIT IPV6_3542HOPLIMIT
|
||||
#define IPV6_NEXTHOP IPV6_3542NEXTHOP
|
||||
#define IPV6_HOPOPTS IPV6_3542HOPOPTS
|
||||
#define IPV6_DSTOPTS IPV6_3542DSTOPTS
|
||||
#define IPV6_RTHDR IPV6_3542RTHDR
|
||||
|
||||
#define IPV6_AUTOFLOWLABEL 59 /* bool; attach flowlabel automagically */
|
||||
|
||||
#define IPV6_DONTFRAG 62 /* bool; disable IPv6 fragmentation */
|
||||
|
||||
/* int; prefer temporary addresses as the source address. */
|
||||
#define IPV6_PREFER_TEMPADDR 63
|
||||
|
||||
/*
|
||||
* The following option is private; do not use it from user applications.
|
||||
* It is deliberately defined to the same value as IP_MSFILTER.
|
||||
*/
|
||||
#define IPV6_MSFILTER 74 /* struct __msfilterreq; */
|
||||
#endif /* __APPLE_USE_RFC_3542 */
|
||||
|
||||
#define IPV6_BOUND_IF 125 /* int; set/get bound interface */
|
||||
|
||||
|
||||
/* to define items, should talk with KAME guys first, for *BSD compatibility */
|
||||
|
||||
#define IPV6_RTHDR_LOOSE 0 /* this hop need not be a neighbor. */
|
||||
#define IPV6_RTHDR_STRICT 1 /* this hop must be a neighbor. */
|
||||
#define IPV6_RTHDR_TYPE_0 0 /* IPv6 routing header type 0 */
|
||||
|
||||
/*
|
||||
* Defaults and limits for options
|
||||
*/
|
||||
#define IPV6_DEFAULT_MULTICAST_HOPS 1 /* normally limit m'casts to 1 hop */
|
||||
#define IPV6_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
|
||||
|
||||
/*
|
||||
* The im6o_membership vector for each socket is now dynamically allocated at
|
||||
* run-time, bounded by USHRT_MAX, and is reallocated when needed, sized
|
||||
* according to a power-of-two increment.
|
||||
*/
|
||||
#define IPV6_MIN_MEMBERSHIPS 31
|
||||
#define IPV6_MAX_MEMBERSHIPS 4095
|
||||
|
||||
/*
|
||||
* Default resource limits for IPv6 multicast source filtering.
|
||||
* These may be modified by sysctl.
|
||||
*/
|
||||
#define IPV6_MAX_GROUP_SRC_FILTER 512 /* sources per group */
|
||||
#define IPV6_MAX_SOCK_SRC_FILTER 128 /* sources per socket/group */
|
||||
|
||||
/*
|
||||
* Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
|
||||
*/
|
||||
struct ipv6_mreq {
|
||||
struct in6_addr ipv6mr_multiaddr;
|
||||
unsigned int ipv6mr_interface;
|
||||
};
|
||||
|
||||
/*
|
||||
* IPV6_2292PKTINFO: Packet information(RFC2292 sec 5)
|
||||
*/
|
||||
struct in6_pktinfo {
|
||||
struct in6_addr ipi6_addr; /* src/dst IPv6 address */
|
||||
unsigned int ipi6_ifindex; /* send/recv interface index */
|
||||
};
|
||||
|
||||
/*
|
||||
* Control structure for IPV6_RECVPATHMTU socket option.
|
||||
*/
|
||||
struct ip6_mtuinfo {
|
||||
struct sockaddr_in6 ip6m_addr; /* or sockaddr_storage? */
|
||||
uint32_t ip6m_mtu;
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument for IPV6_PORTRANGE:
|
||||
* - which range to search when port is unspecified at bind() or connect()
|
||||
*/
|
||||
#define IPV6_PORTRANGE_DEFAULT 0 /* default range */
|
||||
#define IPV6_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
|
||||
#define IPV6_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
|
||||
|
||||
/*
|
||||
* Definitions for inet6 sysctl operations.
|
||||
*
|
||||
* Third level is protocol number.
|
||||
* Fourth level is desired variable within that protocol.
|
||||
*/
|
||||
#define IPV6PROTO_MAXID (IPPROTO_PIM + 1) /* don't list to IPV6PROTO_MAX */
|
||||
|
||||
/*
|
||||
* Names for IP sysctl objects
|
||||
*/
|
||||
#define IPV6CTL_FORWARDING 1 /* act as router */
|
||||
#define IPV6CTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
|
||||
#define IPV6CTL_DEFHLIM 3 /* default Hop-Limit */
|
||||
#ifdef notyet
|
||||
#define IPV6CTL_DEFMTU 4 /* default MTU */
|
||||
#endif
|
||||
#define IPV6CTL_FORWSRCRT 5 /* forward source-routed dgrams */
|
||||
#define IPV6CTL_STATS 6 /* stats */
|
||||
#define IPV6CTL_MRTSTATS 7 /* multicast forwarding stats */
|
||||
#define IPV6CTL_MRTPROTO 8 /* multicast routing protocol */
|
||||
#define IPV6CTL_MAXFRAGPACKETS 9 /* max packets reassembly queue */
|
||||
#define IPV6CTL_SOURCECHECK 10 /* verify source route and intf */
|
||||
#define IPV6CTL_SOURCECHECK_LOGINT 11 /* minimume logging interval */
|
||||
#define IPV6CTL_ACCEPT_RTADV 12
|
||||
#define IPV6CTL_KEEPFAITH 13 /* deprecated */
|
||||
#define IPV6CTL_LOG_INTERVAL 14
|
||||
#define IPV6CTL_HDRNESTLIMIT 15
|
||||
#define IPV6CTL_DAD_COUNT 16
|
||||
#define IPV6CTL_AUTO_FLOWLABEL 17
|
||||
#define IPV6CTL_DEFMCASTHLIM 18
|
||||
#define IPV6CTL_GIF_HLIM 19 /* default HLIM for gif encap packet */
|
||||
#define IPV6CTL_KAME_VERSION 20
|
||||
#define IPV6CTL_USE_DEPRECATED 21 /* use deprec addr (RFC2462 5.5.4) */
|
||||
#define IPV6CTL_RR_PRUNE 22 /* walk timer for router renumbering */
|
||||
#if 0 /* obsolete */
|
||||
#define IPV6CTL_MAPPED_ADDR 23
|
||||
#endif
|
||||
#define IPV6CTL_V6ONLY 24
|
||||
#define IPV6CTL_RTEXPIRE 25 /* cloned route expiration time */
|
||||
#define IPV6CTL_RTMINEXPIRE 26 /* min value for expiration time */
|
||||
#define IPV6CTL_RTMAXCACHE 27 /* trigger level for dynamic expire */
|
||||
|
||||
#define IPV6CTL_USETEMPADDR 32 /* use temporary addresses [RFC 4941] */
|
||||
#define IPV6CTL_TEMPPLTIME 33 /* preferred lifetime for tmpaddrs */
|
||||
#define IPV6CTL_TEMPVLTIME 34 /* valid lifetime for tmpaddrs */
|
||||
#define IPV6CTL_AUTO_LINKLOCAL 35 /* automatic link-local addr assign */
|
||||
#define IPV6CTL_RIP6STATS 36 /* raw_ip6 stats */
|
||||
#define IPV6CTL_PREFER_TEMPADDR 37 /* prefer temporary addr as src */
|
||||
#define IPV6CTL_ADDRCTLPOLICY 38 /* get/set address selection policy */
|
||||
#define IPV6CTL_USE_DEFAULTZONE 39 /* use default scope zone */
|
||||
|
||||
#define IPV6CTL_MAXFRAGS 41 /* max fragments */
|
||||
#define IPV6CTL_MCAST_PMTU 44 /* enable pMTU discovery for mcast? */
|
||||
|
||||
#define IPV6CTL_NEIGHBORGCTHRESH 46
|
||||
#define IPV6CTL_MAXIFPREFIXES 47
|
||||
#define IPV6CTL_MAXIFDEFROUTERS 48
|
||||
#define IPV6CTL_MAXDYNROUTES 49
|
||||
#define ICMPV6CTL_ND6_ONLINKNSRFC4861 50
|
||||
|
||||
/* New entries should be added here from current IPV6CTL_MAXID value. */
|
||||
/* to define items, should talk with KAME guys first, for *BSD compatibility */
|
||||
#define IPV6CTL_MAXID 51
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
struct cmsghdr;
|
||||
|
||||
extern int inet6_option_space(int);
|
||||
extern int inet6_option_init(void *, struct cmsghdr **, int);
|
||||
extern int inet6_option_append(struct cmsghdr *, const __uint8_t *, int, int);
|
||||
extern __uint8_t *inet6_option_alloc(struct cmsghdr *, int, int, int);
|
||||
extern int inet6_option_next(const struct cmsghdr *, __uint8_t **);
|
||||
extern int inet6_option_find(const struct cmsghdr *, __uint8_t **, int);
|
||||
|
||||
extern size_t inet6_rthdr_space(int, int);
|
||||
extern struct cmsghdr *inet6_rthdr_init(void *, int);
|
||||
extern int inet6_rthdr_add(struct cmsghdr *, const struct in6_addr *,
|
||||
unsigned int);
|
||||
extern int inet6_rthdr_lasthop(struct cmsghdr *, unsigned int);
|
||||
#if 0 /* not implemented yet */
|
||||
extern int inet6_rthdr_reverse(const struct cmsghdr *, struct cmsghdr *);
|
||||
#endif
|
||||
extern int inet6_rthdr_segments(const struct cmsghdr *);
|
||||
extern struct in6_addr *inet6_rthdr_getaddr(struct cmsghdr *, int);
|
||||
extern int inet6_rthdr_getflags(const struct cmsghdr *, int);
|
||||
|
||||
extern int inet6_opt_init(void *, socklen_t);
|
||||
extern int inet6_opt_append(void *, socklen_t, int, __uint8_t, socklen_t,
|
||||
__uint8_t, void **);
|
||||
extern int inet6_opt_finish(void *, socklen_t, int);
|
||||
extern int inet6_opt_set_val(void *, int, void *, socklen_t);
|
||||
|
||||
extern int inet6_opt_next(void *, socklen_t, int, __uint8_t *, socklen_t *,
|
||||
void **);
|
||||
extern int inet6_opt_find(void *, socklen_t, int, __uint8_t, socklen_t *,
|
||||
void **);
|
||||
extern int inet6_opt_get_val(void *, int, void *, socklen_t);
|
||||
extern socklen_t inet6_rth_space(int, int);
|
||||
extern void *inet6_rth_init(void *, socklen_t, int, int);
|
||||
extern int inet6_rth_add(void *, const struct in6_addr *);
|
||||
extern int inet6_rth_reverse(const void *, void *);
|
||||
extern int inet6_rth_segments(const void *);
|
||||
extern struct in6_addr *inet6_rth_getaddr(const void *, int);
|
||||
|
||||
__END_DECLS
|
||||
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
|
||||
#endif /* !_NETINET6_IN6_H_ */
|
|
@ -0,0 +1,103 @@
|
|||
/* $NetBSD: nl_types.h,v 1.9 2000/10/03 19:53:32 sommerfeld Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by J.T. Conklin.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/include/nl_types.h,v 1.11 2005/02/27 16:20:53 phantom Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NL_TYPES_H_
|
||||
#define _NL_TYPES_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
#include <_types.h>
|
||||
|
||||
#ifdef _NLS_PRIVATE
|
||||
/*
|
||||
* MESSAGE CATALOG FILE FORMAT.
|
||||
*
|
||||
* The NetBSD/FreeBSD message catalog format is similar to the format used by
|
||||
* Svr4 systems. The differences are:
|
||||
* * fixed byte order (big endian)
|
||||
* * fixed data field sizes
|
||||
*
|
||||
* A message catalog contains four data types: a catalog header, one
|
||||
* or more set headers, one or more message headers, and one or more
|
||||
* text strings.
|
||||
*/
|
||||
|
||||
#define _NLS_MAGIC 0xff88ff89
|
||||
|
||||
struct _nls_cat_hdr {
|
||||
int32_t __magic;
|
||||
int32_t __nsets;
|
||||
int32_t __mem;
|
||||
int32_t __msg_hdr_offset;
|
||||
int32_t __msg_txt_offset;
|
||||
} ;
|
||||
|
||||
struct _nls_set_hdr {
|
||||
int32_t __setno; /* set number: 0 < x <= NL_SETMAX */
|
||||
int32_t __nmsgs; /* number of messages in the set */
|
||||
int32_t __index; /* index of first msg_hdr in msg_hdr table */
|
||||
} ;
|
||||
|
||||
struct _nls_msg_hdr {
|
||||
int32_t __msgno; /* msg number: 0 < x <= NL_MSGMAX */
|
||||
int32_t __msglen;
|
||||
int32_t __offset;
|
||||
} ;
|
||||
|
||||
#endif /* _NLS_PRIVATE */
|
||||
|
||||
#define NL_SETD 1
|
||||
#define NL_CAT_LOCALE 1
|
||||
|
||||
typedef struct __nl_cat_d {
|
||||
void *__data;
|
||||
int __size;
|
||||
} *nl_catd;
|
||||
|
||||
#include <_types/_nl_item.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
nl_catd catopen(const char *, int);
|
||||
char *catgets(nl_catd, int, int, const char *)
|
||||
__attribute__((__format_arg__(4)));
|
||||
int catclose(nl_catd);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _NL_TYPES_H_ */
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#include <sys/poll.h>
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,568 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991
|
||||
* All Rights Reserved
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and
|
||||
* its documentation for any purpose and without fee is hereby granted,
|
||||
* provided that the above copyright notice appears in all copies and
|
||||
* that both the copyright notice and this permission notice appear in
|
||||
* supporting documentation.
|
||||
*
|
||||
* OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* MkLinux
|
||||
*/
|
||||
|
||||
/*
|
||||
* POSIX Threads - IEEE 1003.1c
|
||||
*/
|
||||
|
||||
#ifndef _PTHREAD_H
|
||||
#define _PTHREAD_H
|
||||
|
||||
#include <_types.h>
|
||||
#ifndef __POSIX_LIB__
|
||||
#include <pthread/pthread_impl.h>
|
||||
#endif
|
||||
#include <pthread/sched.h>
|
||||
#include <time.h>
|
||||
#include <sys/_pthread/_pthread_types.h>
|
||||
#include <sys/_pthread/_pthread_attr_t.h>
|
||||
#include <sys/_pthread/_pthread_cond_t.h>
|
||||
#include <sys/_pthread/_pthread_condattr_t.h>
|
||||
#include <sys/_pthread/_pthread_key_t.h>
|
||||
#include <sys/_pthread/_pthread_mutex_t.h>
|
||||
#include <sys/_pthread/_pthread_mutexattr_t.h>
|
||||
#include <sys/_pthread/_pthread_once_t.h>
|
||||
#include <sys/_pthread/_pthread_rwlock_t.h>
|
||||
#include <sys/_pthread/_pthread_rwlockattr_t.h>
|
||||
#include <sys/_pthread/_pthread_t.h>
|
||||
|
||||
#include <pthread/qos.h>
|
||||
|
||||
#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(__cplusplus)
|
||||
|
||||
#include <sys/_types/_mach_port_t.h>
|
||||
#include <sys/_types/_sigset_t.h>
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE || __cplusplus */
|
||||
|
||||
/*
|
||||
* These symbols indicate which [optional] features are available
|
||||
* They can be tested at compile time via '#ifdef XXX'
|
||||
* The way to check for pthreads is like so:
|
||||
|
||||
* #include <unistd.h>
|
||||
* #ifdef _POSIX_THREADS
|
||||
* #include <pthread.h>
|
||||
* #endif
|
||||
|
||||
*/
|
||||
|
||||
/* These will be moved to unistd.h */
|
||||
|
||||
/*
|
||||
* Note: These data structures are meant to be opaque. Only enough
|
||||
* structure is exposed to support initializers.
|
||||
* All of the typedefs will be moved to <sys/types.h>
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <Availability.h>
|
||||
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull begin")
|
||||
#endif
|
||||
__BEGIN_DECLS
|
||||
/*
|
||||
* Threads
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Cancel cleanup handler management. Note, since these are implemented as macros,
|
||||
* they *MUST* occur in matched pairs!
|
||||
*/
|
||||
|
||||
#define pthread_cleanup_push(func, val) \
|
||||
{ \
|
||||
struct __darwin_pthread_handler_rec __handler; \
|
||||
pthread_t __self = pthread_self(); \
|
||||
__handler.__routine = func; \
|
||||
__handler.__arg = val; \
|
||||
__handler.__next = __self->__cleanup_stack; \
|
||||
__self->__cleanup_stack = &__handler;
|
||||
|
||||
#define pthread_cleanup_pop(execute) \
|
||||
/* Note: 'handler' must be in this same lexical context! */ \
|
||||
__self->__cleanup_stack = __handler.__next; \
|
||||
if (execute) (__handler.__routine)(__handler.__arg); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Thread attributes
|
||||
*/
|
||||
|
||||
#define PTHREAD_CREATE_JOINABLE 1
|
||||
#define PTHREAD_CREATE_DETACHED 2
|
||||
|
||||
#define PTHREAD_INHERIT_SCHED 1
|
||||
#define PTHREAD_EXPLICIT_SCHED 2
|
||||
|
||||
#define PTHREAD_CANCEL_ENABLE 0x01 /* Cancel takes place at next cancellation point */
|
||||
#define PTHREAD_CANCEL_DISABLE 0x00 /* Cancel postponed */
|
||||
#define PTHREAD_CANCEL_DEFERRED 0x02 /* Cancel waits until cancellation point */
|
||||
#define PTHREAD_CANCEL_ASYNCHRONOUS 0x00 /* Cancel occurs immediately */
|
||||
|
||||
/* Value returned from pthread_join() when a thread is canceled */
|
||||
#define PTHREAD_CANCELED ((void *) 1)
|
||||
|
||||
/* We only support PTHREAD_SCOPE_SYSTEM */
|
||||
#define PTHREAD_SCOPE_SYSTEM 1
|
||||
#define PTHREAD_SCOPE_PROCESS 2
|
||||
|
||||
#define PTHREAD_PROCESS_SHARED 1
|
||||
#define PTHREAD_PROCESS_PRIVATE 2
|
||||
|
||||
/*
|
||||
* Mutex protocol attributes
|
||||
*/
|
||||
#define PTHREAD_PRIO_NONE 0
|
||||
#define PTHREAD_PRIO_INHERIT 1
|
||||
#define PTHREAD_PRIO_PROTECT 2
|
||||
|
||||
/*
|
||||
* Mutex type attributes
|
||||
*/
|
||||
#define PTHREAD_MUTEX_NORMAL 0
|
||||
#define PTHREAD_MUTEX_ERRORCHECK 1
|
||||
#define PTHREAD_MUTEX_RECURSIVE 2
|
||||
#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
|
||||
|
||||
/*
|
||||
* Mutex policy attributes
|
||||
*/
|
||||
#define PTHREAD_MUTEX_POLICY_FAIRSHARE_NP 1
|
||||
#define PTHREAD_MUTEX_POLICY_FIRSTFIT_NP 3
|
||||
|
||||
/*
|
||||
* RWLock variables
|
||||
*/
|
||||
#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWLOCK_SIG_init, {0}}
|
||||
|
||||
/*
|
||||
* Mutex variables
|
||||
*/
|
||||
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
|
||||
|
||||
/* <rdar://problem/10854763> */
|
||||
#if ((__MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070) || (__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED >= 50000)) || defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
|
||||
# if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
|
||||
# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER {_PTHREAD_ERRORCHECK_MUTEX_SIG_init, {0}}
|
||||
# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER {_PTHREAD_RECURSIVE_MUTEX_SIG_init, {0}}
|
||||
# endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */
|
||||
#endif
|
||||
|
||||
/* <rdar://problem/25944576> */
|
||||
#define _PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT \
|
||||
defined(SWIFT_CLASS_EXTRA) && (!defined(SWIFT_SDK_OVERLAY_PTHREAD_EPOCH) || (SWIFT_SDK_OVERLAY_PTHREAD_EPOCH < 1))
|
||||
|
||||
/*
|
||||
* Condition variable attributes
|
||||
*/
|
||||
|
||||
/*
|
||||
* Condition variables
|
||||
*/
|
||||
|
||||
#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}
|
||||
|
||||
/*
|
||||
* Initialization control (once) variables
|
||||
*/
|
||||
|
||||
#define PTHREAD_ONCE_INIT {_PTHREAD_ONCE_SIG_init, {0}}
|
||||
|
||||
/*
|
||||
* Prototypes for all PTHREAD interfaces
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_atfork(void (* _Nullable)(void), void (* _Nullable)(void),
|
||||
void (* _Nullable)(void));
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_destroy(pthread_attr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getguardsize(const pthread_attr_t * __restrict, size_t * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getinheritsched(const pthread_attr_t * __restrict, int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getschedparam(const pthread_attr_t * __restrict,
|
||||
struct sched_param * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getschedpolicy(const pthread_attr_t * __restrict, int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getscope(const pthread_attr_t * __restrict, int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getstack(const pthread_attr_t * __restrict,
|
||||
void * _Nullable * _Nonnull __restrict, size_t * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getstackaddr(const pthread_attr_t * __restrict,
|
||||
void * _Nullable * _Nonnull __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_getstacksize(const pthread_attr_t * __restrict, size_t * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_init(pthread_attr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setdetachstate(pthread_attr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setguardsize(pthread_attr_t *, size_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setinheritsched(pthread_attr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setschedparam(pthread_attr_t * __restrict,
|
||||
const struct sched_param * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setschedpolicy(pthread_attr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setscope(pthread_attr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setstackaddr(pthread_attr_t *, void *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_attr_setstacksize(pthread_attr_t *, size_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cancel(pthread_t) __DARWIN_ALIAS(pthread_cancel);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_broadcast(pthread_cond_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_destroy(pthread_cond_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_init(
|
||||
pthread_cond_t * __restrict,
|
||||
const pthread_condattr_t * _Nullable __restrict)
|
||||
__DARWIN_ALIAS(pthread_cond_init);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_signal(pthread_cond_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_timedwait(
|
||||
pthread_cond_t * __restrict, pthread_mutex_t * __restrict,
|
||||
const struct timespec * _Nullable __restrict)
|
||||
__DARWIN_ALIAS_C(pthread_cond_timedwait);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_wait(pthread_cond_t * __restrict,
|
||||
pthread_mutex_t * __restrict) __DARWIN_ALIAS_C(pthread_cond_wait);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_condattr_destroy(pthread_condattr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_condattr_init(pthread_condattr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_condattr_getpshared(const pthread_condattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_condattr_setpshared(pthread_condattr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
#if !_PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
|
||||
int pthread_create(pthread_t _Nullable * _Nonnull __restrict,
|
||||
const pthread_attr_t * _Nullable __restrict,
|
||||
void * _Nullable (* _Nonnull)(void * _Nullable),
|
||||
void * _Nullable __restrict);
|
||||
#else
|
||||
int pthread_create(pthread_t * __restrict,
|
||||
const pthread_attr_t * _Nullable __restrict,
|
||||
void *(* _Nonnull)(void *), void * _Nullable __restrict);
|
||||
#endif // _PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_detach(pthread_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_equal(pthread_t _Nullable, pthread_t _Nullable);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
void pthread_exit(void * _Nullable) __dead2;
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_getconcurrency(void);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_getschedparam(pthread_t , int * _Nullable __restrict,
|
||||
struct sched_param * _Nullable __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
void* _Nullable pthread_getspecific(pthread_key_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_join(pthread_t , void * _Nullable * _Nullable)
|
||||
__DARWIN_ALIAS_C(pthread_join);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_key_create(pthread_key_t *, void (* _Nullable)(void *));
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_key_delete(pthread_key_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_destroy(pthread_mutex_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_getprioceiling(const pthread_mutex_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_init(pthread_mutex_t * __restrict,
|
||||
const pthread_mutexattr_t * _Nullable __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_lock(pthread_mutex_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_setprioceiling(pthread_mutex_t * __restrict, int,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_trylock(pthread_mutex_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutex_unlock(pthread_mutex_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_destroy(pthread_mutexattr_t *) __DARWIN_ALIAS(pthread_mutexattr_destroy);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_getpshared(const pthread_mutexattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_gettype(const pthread_mutexattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.13.4), ios(11.3), watchos(4.3), tvos(11.3))
|
||||
int pthread_mutexattr_getpolicy_np(const pthread_mutexattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_init(pthread_mutexattr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.7), ios(5.0))
|
||||
int pthread_mutexattr_setpolicy_np(pthread_mutexattr_t *, int);
|
||||
|
||||
__SWIFT_UNAVAILABLE_MSG("Use lazily initialized globals instead")
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_once(pthread_once_t *, void (* _Nonnull)(void));
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_destroy(pthread_rwlock_t * ) __DARWIN_ALIAS(pthread_rwlock_destroy);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_init(pthread_rwlock_t * __restrict,
|
||||
const pthread_rwlockattr_t * _Nullable __restrict)
|
||||
__DARWIN_ALIAS(pthread_rwlock_init);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_rdlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_rdlock);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_tryrdlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_tryrdlock);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_trywrlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_trywrlock);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_wrlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_wrlock);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlock_unlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_unlock);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * __restrict,
|
||||
int * __restrict);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlockattr_init(pthread_rwlockattr_t *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
pthread_t pthread_self(void);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_setcancelstate(int , int * _Nullable)
|
||||
__DARWIN_ALIAS(pthread_setcancelstate);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_setcanceltype(int , int * _Nullable)
|
||||
__DARWIN_ALIAS(pthread_setcanceltype);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_setconcurrency(int);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_setschedparam(pthread_t, int, const struct sched_param *);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_setspecific(pthread_key_t , const void * _Nullable);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
void pthread_testcancel(void) __DARWIN_ALIAS(pthread_testcancel);
|
||||
|
||||
#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(__cplusplus)
|
||||
|
||||
/* returns non-zero if pthread_create or cthread_fork have been called */
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_is_threaded_np(void);
|
||||
|
||||
__API_AVAILABLE(macos(10.6), ios(3.2))
|
||||
int pthread_threadid_np(pthread_t _Nullable,__uint64_t* _Nullable);
|
||||
|
||||
/*SPI to set and get pthread name*/
|
||||
__API_AVAILABLE(macos(10.6), ios(3.2))
|
||||
int pthread_getname_np(pthread_t,char*,size_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.6), ios(3.2))
|
||||
int pthread_setname_np(const char*);
|
||||
|
||||
/* returns non-zero if the current thread is the main thread */
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_main_np(void);
|
||||
|
||||
/* return the mach thread bound to the pthread */
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
mach_port_t pthread_mach_thread_np(pthread_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
size_t pthread_get_stacksize_np(pthread_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
void* pthread_get_stackaddr_np(pthread_t);
|
||||
|
||||
/* Like pthread_cond_signal(), but only wake up the specified pthread */
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_signal_thread_np(pthread_cond_t *, pthread_t _Nullable);
|
||||
|
||||
/* Like pthread_cond_timedwait, but use a relative timeout */
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_cond_timedwait_relative_np(pthread_cond_t *, pthread_mutex_t *,
|
||||
const struct timespec * _Nullable);
|
||||
|
||||
/* Like pthread_create(), but leaves the thread suspended */
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
#if !_PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
|
||||
int pthread_create_suspended_np(
|
||||
pthread_t _Nullable * _Nonnull, const pthread_attr_t * _Nullable,
|
||||
void * _Nullable (* _Nonnull)(void * _Nullable), void * _Nullable);
|
||||
#else
|
||||
int pthread_create_suspended_np(pthread_t *, const pthread_attr_t * _Nullable,
|
||||
void *(* _Nonnull)(void *), void * _Nullable);
|
||||
#endif
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_kill(pthread_t, int);
|
||||
|
||||
__API_AVAILABLE(macos(10.5), ios(2.0))
|
||||
_Nullable pthread_t pthread_from_mach_thread_np(mach_port_t);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
int pthread_sigmask(int, const sigset_t * _Nullable, sigset_t * _Nullable)
|
||||
__DARWIN_ALIAS(pthread_sigmask);
|
||||
|
||||
__API_AVAILABLE(macos(10.4), ios(2.0))
|
||||
void pthread_yield_np(void);
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE || __cplusplus */
|
||||
__END_DECLS
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull end")
|
||||
#endif
|
||||
|
||||
#endif /* _PTHREAD_H */
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _PTHREAD_IMPL_H_
|
||||
#define _PTHREAD_IMPL_H_
|
||||
/*
|
||||
* Internal implementation details
|
||||
*/
|
||||
|
||||
/* This whole header file will disappear, so don't depend on it... */
|
||||
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull begin")
|
||||
#endif
|
||||
|
||||
#ifndef __POSIX_LIB__
|
||||
|
||||
/*
|
||||
* [Internal] data structure signatures
|
||||
*/
|
||||
#define _PTHREAD_MUTEX_SIG_init 0x32AAABA7
|
||||
|
||||
#define _PTHREAD_ERRORCHECK_MUTEX_SIG_init 0x32AAABA1
|
||||
#define _PTHREAD_RECURSIVE_MUTEX_SIG_init 0x32AAABA2
|
||||
#define _PTHREAD_FIRSTFIT_MUTEX_SIG_init 0x32AAABA3
|
||||
|
||||
#define _PTHREAD_COND_SIG_init 0x3CB0B1BB
|
||||
#define _PTHREAD_ONCE_SIG_init 0x30B1BCBA
|
||||
#define _PTHREAD_RWLOCK_SIG_init 0x2DA8B3B4
|
||||
|
||||
/*
|
||||
* POSIX scheduling policies
|
||||
*/
|
||||
#define SCHED_OTHER 1
|
||||
#define SCHED_FIFO 4
|
||||
#define SCHED_RR 2
|
||||
|
||||
#define __SCHED_PARAM_SIZE__ 4
|
||||
|
||||
#endif /* __POSIX_LIB__ */
|
||||
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull end")
|
||||
#endif
|
||||
|
||||
#endif /* _PTHREAD_IMPL_H_ */
|
|
@ -0,0 +1,304 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2014 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _PTHREAD_QOS_H
|
||||
#define _PTHREAD_QOS_H
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/_pthread/_pthread_attr_t.h> /* pthread_attr_t */
|
||||
#include <sys/_pthread/_pthread_t.h> /* pthread_t */
|
||||
#include <Availability.h>
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
|
||||
#include <sys/qos.h>
|
||||
|
||||
#ifndef KERNEL
|
||||
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull begin")
|
||||
#endif
|
||||
__BEGIN_DECLS
|
||||
|
||||
/*!
|
||||
* @function pthread_attr_set_qos_class_np
|
||||
*
|
||||
* @abstract
|
||||
* Sets the QOS class and relative priority of a pthread attribute structure
|
||||
* which may be used to specify the requested QOS class of newly created
|
||||
* threads.
|
||||
*
|
||||
* @discussion
|
||||
* The QOS class and relative priority represent an overall combination of
|
||||
* system quality of service attributes on a thread.
|
||||
*
|
||||
* Subsequent calls to interfaces such as pthread_attr_setschedparam() that are
|
||||
* incompatible or in conflict with the QOS class system will unset the QOS
|
||||
* class requested with this interface and pthread_attr_get_qos_class_np() will
|
||||
* return QOS_CLASS_UNSPECIFIED.
|
||||
*
|
||||
* @param __attr
|
||||
* The pthread attribute structure to modify.
|
||||
*
|
||||
* @param __qos_class
|
||||
* A QOS class value:
|
||||
* - QOS_CLASS_USER_INTERACTIVE
|
||||
* - QOS_CLASS_USER_INITIATED
|
||||
* - QOS_CLASS_DEFAULT
|
||||
* - QOS_CLASS_UTILITY
|
||||
* - QOS_CLASS_BACKGROUND
|
||||
* EINVAL will be returned if any other value is provided.
|
||||
*
|
||||
* @param __relative_priority
|
||||
* A relative priority within the QOS class. This value is a negative offset
|
||||
* from the maximum supported scheduler priority for the given class.
|
||||
* EINVAL will be returned if the value is greater than zero or less than
|
||||
* QOS_MIN_RELATIVE_PRIORITY.
|
||||
*
|
||||
* @return
|
||||
* Zero if successful, otherwise an errno value.
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.10), ios(8.0))
|
||||
int
|
||||
pthread_attr_set_qos_class_np(pthread_attr_t *__attr,
|
||||
qos_class_t __qos_class, int __relative_priority);
|
||||
|
||||
/*!
|
||||
* @function pthread_attr_get_qos_class_np
|
||||
*
|
||||
* @abstract
|
||||
* Gets the QOS class and relative priority of a pthread attribute structure.
|
||||
*
|
||||
* @param __attr
|
||||
* The pthread attribute structure to inspect.
|
||||
*
|
||||
* @param __qos_class
|
||||
* On output, a QOS class value:
|
||||
* - QOS_CLASS_USER_INTERACTIVE
|
||||
* - QOS_CLASS_USER_INITIATED
|
||||
* - QOS_CLASS_DEFAULT
|
||||
* - QOS_CLASS_UTILITY
|
||||
* - QOS_CLASS_BACKGROUND
|
||||
* - QOS_CLASS_UNSPECIFIED
|
||||
* This value may be NULL in which case no value is returned.
|
||||
*
|
||||
* @param __relative_priority
|
||||
* On output, a relative priority offset within the QOS class.
|
||||
* This value may be NULL in which case no value is returned.
|
||||
*
|
||||
* @return
|
||||
* Zero if successful, otherwise an errno value.
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.10), ios(8.0))
|
||||
int
|
||||
pthread_attr_get_qos_class_np(pthread_attr_t * __restrict __attr,
|
||||
qos_class_t * _Nullable __restrict __qos_class,
|
||||
int * _Nullable __restrict __relative_priority);
|
||||
|
||||
/*!
|
||||
* @function pthread_set_qos_class_self_np
|
||||
*
|
||||
* @abstract
|
||||
* Sets the requested QOS class and relative priority of the current thread.
|
||||
*
|
||||
* @discussion
|
||||
* The QOS class and relative priority represent an overall combination of
|
||||
* system quality of service attributes on a thread.
|
||||
*
|
||||
* Subsequent calls to interfaces such as pthread_setschedparam() that are
|
||||
* incompatible or in conflict with the QOS class system will unset the QOS
|
||||
* class requested with this interface and pthread_get_qos_class_np() will
|
||||
* return QOS_CLASS_UNSPECIFIED thereafter. A thread so modified is permanently
|
||||
* opted-out of the QOS class system and calls to this function to request a QOS
|
||||
* class for such a thread will fail and return EPERM.
|
||||
*
|
||||
* @param __qos_class
|
||||
* A QOS class value:
|
||||
* - QOS_CLASS_USER_INTERACTIVE
|
||||
* - QOS_CLASS_USER_INITIATED
|
||||
* - QOS_CLASS_DEFAULT
|
||||
* - QOS_CLASS_UTILITY
|
||||
* - QOS_CLASS_BACKGROUND
|
||||
* EINVAL will be returned if any other value is provided.
|
||||
*
|
||||
* @param __relative_priority
|
||||
* A relative priority within the QOS class. This value is a negative offset
|
||||
* from the maximum supported scheduler priority for the given class.
|
||||
* EINVAL will be returned if the value is greater than zero or less than
|
||||
* QOS_MIN_RELATIVE_PRIORITY.
|
||||
*
|
||||
* @return
|
||||
* Zero if successful, otherwise an errno value.
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.10), ios(8.0))
|
||||
int
|
||||
pthread_set_qos_class_self_np(qos_class_t __qos_class,
|
||||
int __relative_priority);
|
||||
|
||||
/*!
|
||||
* @function pthread_get_qos_class_np
|
||||
*
|
||||
* @abstract
|
||||
* Gets the requested QOS class and relative priority of a thread.
|
||||
*
|
||||
* @param __pthread
|
||||
* The target thread to inspect.
|
||||
*
|
||||
* @param __qos_class
|
||||
* On output, a QOS class value:
|
||||
* - QOS_CLASS_USER_INTERACTIVE
|
||||
* - QOS_CLASS_USER_INITIATED
|
||||
* - QOS_CLASS_DEFAULT
|
||||
* - QOS_CLASS_UTILITY
|
||||
* - QOS_CLASS_BACKGROUND
|
||||
* - QOS_CLASS_UNSPECIFIED
|
||||
* This value may be NULL in which case no value is returned.
|
||||
*
|
||||
* @param __relative_priority
|
||||
* On output, a relative priority offset within the QOS class.
|
||||
* This value may be NULL in which case no value is returned.
|
||||
*
|
||||
* @return
|
||||
* Zero if successful, otherwise an errno value.
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.10), ios(8.0))
|
||||
int
|
||||
pthread_get_qos_class_np(pthread_t __pthread,
|
||||
qos_class_t * _Nullable __restrict __qos_class,
|
||||
int * _Nullable __restrict __relative_priority);
|
||||
|
||||
/*!
|
||||
* @typedef pthread_override_t
|
||||
*
|
||||
* @abstract
|
||||
* An opaque object representing a QOS class override of a thread.
|
||||
*
|
||||
* @discussion
|
||||
* A QOS class override of a target thread expresses that an item of pending
|
||||
* work classified with a specific QOS class and relative priority depends on
|
||||
* the completion of the work currently being executed by the thread (e.g. due
|
||||
* to ordering requirements).
|
||||
*
|
||||
* While overrides are in effect, the target thread will execute at the maximum
|
||||
* QOS class and relative priority of all overrides and of the QOS class
|
||||
* requested by the thread itself.
|
||||
*
|
||||
* A QOS class override does not modify the target thread's requested QOS class
|
||||
* value and the effect of an override is not visible to the qos_class_self()
|
||||
* and pthread_get_qos_class_np() interfaces.
|
||||
*/
|
||||
|
||||
typedef struct pthread_override_s* pthread_override_t;
|
||||
|
||||
/*!
|
||||
* @function pthread_override_qos_class_start_np
|
||||
*
|
||||
* @abstract
|
||||
* Starts a QOS class override of the specified target thread.
|
||||
*
|
||||
* @discussion
|
||||
* Starting a QOS class override of the specified target thread expresses that
|
||||
* an item of pending work classified with the specified QOS class and relative
|
||||
* priority depends on the completion of the work currently being executed by
|
||||
* the thread (e.g. due to ordering requirements).
|
||||
*
|
||||
* While overrides are in effect, the specified target thread will execute at
|
||||
* the maximum QOS class and relative priority of all overrides and of the QOS
|
||||
* class requested by the thread itself.
|
||||
*
|
||||
* Starting a QOS class override does not modify the target thread's requested
|
||||
* QOS class value and the effect of an override is not visible to the
|
||||
* qos_class_self() and pthread_get_qos_class_np() interfaces.
|
||||
*
|
||||
* The returned newly allocated override object is intended to be associated
|
||||
* with the item of pending work in question. Once the dependency has been
|
||||
* satisfied and enabled that work to begin executing, the QOS class override
|
||||
* must be ended by passing the associated override object to
|
||||
* pthread_override_qos_class_end_np(). Failure to do so will result in the
|
||||
* associated resources to be leaked and the target thread to be permanently
|
||||
* executed at an inappropriately elevated QOS class.
|
||||
*
|
||||
* @param __pthread
|
||||
* The target thread to modify.
|
||||
*
|
||||
* @param __qos_class
|
||||
* A QOS class value:
|
||||
* - QOS_CLASS_USER_INTERACTIVE
|
||||
* - QOS_CLASS_USER_INITIATED
|
||||
* - QOS_CLASS_DEFAULT
|
||||
* - QOS_CLASS_UTILITY
|
||||
* - QOS_CLASS_BACKGROUND
|
||||
* NULL will be returned if any other value is provided.
|
||||
*
|
||||
* @param __relative_priority
|
||||
* A relative priority within the QOS class. This value is a negative offset
|
||||
* from the maximum supported scheduler priority for the given class.
|
||||
* NULL will be returned if the value is greater than zero or less than
|
||||
* QOS_MIN_RELATIVE_PRIORITY.
|
||||
*
|
||||
* @return
|
||||
* A newly allocated override object if successful, or NULL if the override
|
||||
* could not be started.
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.10), ios(8.0))
|
||||
pthread_override_t
|
||||
pthread_override_qos_class_start_np(pthread_t __pthread,
|
||||
qos_class_t __qos_class, int __relative_priority);
|
||||
|
||||
/*!
|
||||
* @function pthread_override_qos_class_end_np
|
||||
*
|
||||
* @abstract
|
||||
* Ends a QOS class override.
|
||||
*
|
||||
* @discussion
|
||||
* Passing an override object returned by pthread_override_qos_class_start_np()
|
||||
* ends the QOS class override started by that call and deallocates all
|
||||
* associated resources as well as the override object itself.
|
||||
*
|
||||
* The thread starting and the thread ending a QOS class override need not be
|
||||
* identical. If the thread ending the override is the the target thread of the
|
||||
* override itself, it should take care to elevate its requested QOS class
|
||||
* appropriately with pthread_set_qos_class_self_np() before ending the
|
||||
* override.
|
||||
*
|
||||
* @param __override
|
||||
* An override object returned by pthread_override_qos_class_start_np().
|
||||
*
|
||||
* @return
|
||||
* Zero if successful, otherwise an errno value.
|
||||
*/
|
||||
__API_AVAILABLE(macos(10.10), ios(8.0))
|
||||
int
|
||||
pthread_override_qos_class_end_np(pthread_override_t __override);
|
||||
|
||||
__END_DECLS
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull end")
|
||||
#endif
|
||||
|
||||
#endif // KERNEL
|
||||
|
||||
#endif // __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
|
||||
#endif // _PTHREAD_QOS_H
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _SCHED_H_
|
||||
#define _SCHED_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <pthread_impl.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
/*
|
||||
* Scheduling paramters
|
||||
*/
|
||||
#ifndef __POSIX_LIB__
|
||||
struct sched_param { int sched_priority; char __opaque[__SCHED_PARAM_SIZE__]; };
|
||||
#endif
|
||||
|
||||
extern int sched_yield(void);
|
||||
extern int sched_get_priority_min(int);
|
||||
extern int sched_get_priority_max(int);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _SCHED_H_ */
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _PTHREAD_IMPL_H_
|
||||
#define _PTHREAD_IMPL_H_
|
||||
/*
|
||||
* Internal implementation details
|
||||
*/
|
||||
|
||||
/* This whole header file will disappear, so don't depend on it... */
|
||||
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull begin")
|
||||
#endif
|
||||
|
||||
#ifndef __POSIX_LIB__
|
||||
|
||||
/*
|
||||
* [Internal] data structure signatures
|
||||
*/
|
||||
#define _PTHREAD_MUTEX_SIG_init 0x32AAABA7
|
||||
|
||||
#define _PTHREAD_ERRORCHECK_MUTEX_SIG_init 0x32AAABA1
|
||||
#define _PTHREAD_RECURSIVE_MUTEX_SIG_init 0x32AAABA2
|
||||
#define _PTHREAD_FIRSTFIT_MUTEX_SIG_init 0x32AAABA3
|
||||
|
||||
#define _PTHREAD_COND_SIG_init 0x3CB0B1BB
|
||||
#define _PTHREAD_ONCE_SIG_init 0x30B1BCBA
|
||||
#define _PTHREAD_RWLOCK_SIG_init 0x2DA8B3B4
|
||||
|
||||
/*
|
||||
* POSIX scheduling policies
|
||||
*/
|
||||
#define SCHED_OTHER 1
|
||||
#define SCHED_FIFO 4
|
||||
#define SCHED_RR 2
|
||||
|
||||
#define __SCHED_PARAM_SIZE__ 4
|
||||
|
||||
#endif /* __POSIX_LIB__ */
|
||||
|
||||
#if __has_feature(assume_nonnull)
|
||||
_Pragma("clang assume_nonnull end")
|
||||
#endif
|
||||
|
||||
#endif /* _PTHREAD_IMPL_H_ */
|
|
@ -0,0 +1,119 @@
|
|||
/*-
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
* Portions Copyright(C) 1995, Jason Downs. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)pwd.h 8.2 (Berkeley) 1/21/94
|
||||
*/
|
||||
/* Portions copyright (c) 2000-2011 Apple Inc. All rights reserved. */
|
||||
|
||||
#ifndef _PWD_H_
|
||||
#define _PWD_H_
|
||||
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_gid_t.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
#include <sys/_types/_uid_t.h>
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define _PATH_PWD "/etc"
|
||||
#define _PATH_PASSWD "/etc/passwd"
|
||||
#define _PASSWD "passwd"
|
||||
#define _PATH_MASTERPASSWD "/etc/master.passwd"
|
||||
#define _PATH_MASTERPASSWD_LOCK "/etc/ptmp"
|
||||
#define _MASTERPASSWD "master.passwd"
|
||||
|
||||
#define _PATH_MP_DB "/etc/pwd.db"
|
||||
#define _MP_DB "pwd.db"
|
||||
#define _PATH_SMP_DB "/etc/spwd.db"
|
||||
#define _SMP_DB "spwd.db"
|
||||
|
||||
#define _PATH_PWD_MKDB "/usr/sbin/pwd_mkdb"
|
||||
|
||||
#define _PW_KEYBYNAME '1' /* stored by name */
|
||||
#define _PW_KEYBYNUM '2' /* stored by entry in the "file" */
|
||||
#define _PW_KEYBYUID '3' /* stored by uid */
|
||||
|
||||
#define _PASSWORD_EFMT1 '_' /* extended encryption format */
|
||||
|
||||
#define _PASSWORD_LEN 128 /* max length, not counting NULL */
|
||||
|
||||
#define _PASSWORD_NOUID 0x01 /* flag for no specified uid. */
|
||||
#define _PASSWORD_NOGID 0x02 /* flag for no specified gid. */
|
||||
#define _PASSWORD_NOCHG 0x04 /* flag for no specified change. */
|
||||
#define _PASSWORD_NOEXP 0x08 /* flag for no specified expire. */
|
||||
|
||||
#define _PASSWORD_WARNDAYS 14 /* days to warn about expiry */
|
||||
#define _PASSWORD_CHGNOW -1 /* special day to force password
|
||||
* change at next login */
|
||||
#endif
|
||||
|
||||
struct passwd {
|
||||
char *pw_name; /* user name */
|
||||
char *pw_passwd; /* encrypted password */
|
||||
uid_t pw_uid; /* user uid */
|
||||
gid_t pw_gid; /* user gid */
|
||||
__darwin_time_t pw_change; /* password change time */
|
||||
char *pw_class; /* user access class */
|
||||
char *pw_gecos; /* Honeywell login info */
|
||||
char *pw_dir; /* home directory */
|
||||
char *pw_shell; /* default shell */
|
||||
__darwin_time_t pw_expire; /* account expiration */
|
||||
};
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
struct passwd *getpwuid(uid_t);
|
||||
struct passwd *getpwnam(const char *);
|
||||
int getpwuid_r(uid_t, struct passwd *, char *, size_t, struct passwd **);
|
||||
int getpwnam_r(const char *, struct passwd *, char *, size_t, struct passwd **);
|
||||
struct passwd *getpwent(void);
|
||||
void setpwent(void);
|
||||
void endpwent(void);
|
||||
__END_DECLS
|
||||
|
||||
#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
|
||||
#include <uuid/uuid.h>
|
||||
__BEGIN_DECLS
|
||||
int setpassent(int);
|
||||
char *user_from_uid(uid_t, int);
|
||||
struct passwd *getpwuuid(uuid_t);
|
||||
int getpwuuid_r(uuid_t, struct passwd *, char *, size_t, struct passwd **);
|
||||
__END_DECLS
|
||||
#endif
|
||||
|
||||
#endif /* !_PWD_H_ */
|
|
@ -0,0 +1,217 @@
|
|||
/*
|
||||
* Copyright (c) 2000, 2011 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2001-2009 Ville Laurikari <vl@iki.fi>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1992 Henry Spencer.
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Henry Spencer of the University of Toronto.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)regex.h 8.2 (Berkeley) 1/3/94
|
||||
*/
|
||||
|
||||
#ifndef _REGEX_H_
|
||||
#define _REGEX_H_
|
||||
|
||||
#include <_regex.h>
|
||||
|
||||
/*******************/
|
||||
/* regcomp() flags */
|
||||
/*******************/
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#define REG_BASIC 0000 /* Basic regular expressions (synonym for 0) */
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
#define REG_EXTENDED 0001 /* Extended regular expressions */
|
||||
#define REG_ICASE 0002 /* Compile ignoring upper/lower case */
|
||||
#define REG_NOSUB 0004 /* Compile only reporting success/failure */
|
||||
#define REG_NEWLINE 0010 /* Compile for newline-sensitive matching */
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#define REG_NOSPEC 0020 /* Compile turning off all special characters */
|
||||
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \
|
||||
|| __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
|
||||
|| defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
|
||||
#define REG_LITERAL REG_NOSPEC
|
||||
#endif
|
||||
|
||||
#define REG_PEND 0040 /* Use re_endp as end pointer */
|
||||
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \
|
||||
|| __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
|
||||
|| defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
|
||||
#define REG_MINIMAL 0100 /* Compile using minimal repetition */
|
||||
#define REG_UNGREEDY REG_MINIMAL
|
||||
#endif
|
||||
|
||||
#define REG_DUMP 0200 /* Unused */
|
||||
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \
|
||||
|| __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
|
||||
|| defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
|
||||
#define REG_ENHANCED 0400 /* Additional (non-POSIX) features */
|
||||
#endif
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
/********************/
|
||||
/* regerror() flags */
|
||||
/********************/
|
||||
#define REG_ENOSYS (-1) /* Reserved */
|
||||
#define REG_NOMATCH 1 /* regexec() function failed to match */
|
||||
#define REG_BADPAT 2 /* invalid regular expression */
|
||||
#define REG_ECOLLATE 3 /* invalid collating element */
|
||||
#define REG_ECTYPE 4 /* invalid character class */
|
||||
#define REG_EESCAPE 5 /* trailing backslash (\) */
|
||||
#define REG_ESUBREG 6 /* invalid backreference number */
|
||||
#define REG_EBRACK 7 /* brackets ([ ]) not balanced */
|
||||
#define REG_EPAREN 8 /* parentheses not balanced */
|
||||
#define REG_EBRACE 9 /* braces not balanced */
|
||||
#define REG_BADBR 10 /* invalid repetition count(s) */
|
||||
#define REG_ERANGE 11 /* invalid character range */
|
||||
#define REG_ESPACE 12 /* out of memory */
|
||||
#define REG_BADRPT 13 /* repetition-operator operand invalid */
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#define REG_EMPTY 14 /* Unused */
|
||||
#define REG_ASSERT 15 /* Unused */
|
||||
#define REG_INVARG 16 /* invalid argument to regex routine */
|
||||
#define REG_ILLSEQ 17 /* illegal byte sequence */
|
||||
|
||||
#define REG_ATOI 255 /* convert name to number (!) */
|
||||
#define REG_ITOA 0400 /* convert number to name (!) */
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
/*******************/
|
||||
/* regexec() flags */
|
||||
/*******************/
|
||||
#define REG_NOTBOL 00001 /* First character not at beginning of line */
|
||||
#define REG_NOTEOL 00002 /* Last character not at end of line */
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#define REG_STARTEND 00004 /* String start/end in pmatch[0] */
|
||||
#define REG_TRACE 00400 /* Unused */
|
||||
#define REG_LARGE 01000 /* Unused */
|
||||
#define REG_BACKR 02000 /* force use of backref code */
|
||||
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 \
|
||||
|| __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
|
||||
|| defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
|
||||
#define REG_BACKTRACKING_MATCHER REG_BACKR
|
||||
#endif
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
|
||||
__BEGIN_DECLS
|
||||
int regcomp(regex_t * __restrict, const char * __restrict, int) __DARWIN_ALIAS(regcomp);
|
||||
size_t regerror(int, const regex_t * __restrict, char * __restrict, size_t) __cold;
|
||||
/*
|
||||
* gcc under c99 mode won't compile "[ __restrict]" by itself. As a workaround,
|
||||
* a dummy argument name is added.
|
||||
*/
|
||||
int regexec(const regex_t * __restrict, const char * __restrict, size_t,
|
||||
regmatch_t __pmatch[ __restrict], int);
|
||||
void regfree(regex_t *);
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
|
||||
/* Darwin extensions */
|
||||
int regncomp(regex_t * __restrict, const char * __restrict, size_t, int)
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
int regnexec(const regex_t * __restrict, const char * __restrict, size_t,
|
||||
size_t, regmatch_t __pmatch[ __restrict], int)
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
int regwcomp(regex_t * __restrict, const wchar_t * __restrict, int)
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
int regwexec(const regex_t * __restrict, const wchar_t * __restrict, size_t,
|
||||
regmatch_t __pmatch[ __restrict], int)
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
int regwncomp(regex_t * __restrict, const wchar_t * __restrict, size_t, int)
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
int regwnexec(const regex_t * __restrict, const wchar_t * __restrict,
|
||||
size_t, size_t, regmatch_t __pmatch[ __restrict], int)
|
||||
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
|
||||
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
||||
__END_DECLS
|
||||
|
||||
#ifdef _USE_EXTENDED_LOCALES_
|
||||
#include <xlocale/_regex.h>
|
||||
#endif /* _USE_EXTENDED_LOCALES_ */
|
||||
|
||||
#endif /* !_REGEX_H_ */
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#ifndef _SCHED_H_
|
||||
#define _SCHED_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <pthread_impl.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
/*
|
||||
* Scheduling paramters
|
||||
*/
|
||||
#ifndef __POSIX_LIB__
|
||||
struct sched_param { int sched_priority; char __opaque[__SCHED_PARAM_SIZE__]; };
|
||||
#endif
|
||||
|
||||
extern int sched_yield(void);
|
||||
extern int sched_get_priority_min(int);
|
||||
extern int sched_get_priority_max(int);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _SCHED_H_ */
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
/*-
|
||||
* Written by J.T. Conklin <jtc@netbsd.org>
|
||||
* Public domain.
|
||||
*
|
||||
* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $
|
||||
* $FreeBSD: src/include/search.h,v 1.10 2002/10/16 14:29:23 robert Exp $
|
||||
*/
|
||||
|
||||
#ifndef _SEARCH_H_
|
||||
#define _SEARCH_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <_types.h>
|
||||
#include <sys/_types/_size_t.h>
|
||||
|
||||
typedef struct entry {
|
||||
char *key;
|
||||
void *data;
|
||||
} ENTRY;
|
||||
|
||||
typedef enum {
|
||||
FIND, ENTER
|
||||
} ACTION;
|
||||
|
||||
typedef enum {
|
||||
preorder,
|
||||
postorder,
|
||||
endorder,
|
||||
leaf
|
||||
} VISIT;
|
||||
|
||||
#ifdef _SEARCH_PRIVATE
|
||||
typedef struct node {
|
||||
char *key;
|
||||
struct node *llink, *rlink;
|
||||
} node_t;
|
||||
|
||||
struct que_elem {
|
||||
struct que_elem *next;
|
||||
struct que_elem *prev;
|
||||
};
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
int hcreate(size_t);
|
||||
void hdestroy(void);
|
||||
ENTRY *hsearch(ENTRY, ACTION);
|
||||
void insque(void *, void *);
|
||||
void *lfind(const void *, const void *, size_t *, size_t,
|
||||
int (*)(const void *, const void *));
|
||||
void *lsearch(const void *, void *, size_t *, size_t,
|
||||
int (*)(const void *, const void *));
|
||||
void remque(void *);
|
||||
void *tdelete(const void * __restrict, void ** __restrict,
|
||||
int (*)(const void *, const void *));
|
||||
void *tfind(const void *, void * const *,
|
||||
int (*)(const void *, const void *));
|
||||
void *tsearch(const void *, void **, int (*)(const void *, const void *));
|
||||
void twalk(const void *, void (*)(const void *, VISIT, int));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_SEARCH_H_ */
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _BSD_SEMAPHORE_H
|
||||
#define _BSD_SEMAPHORE_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
#include <sys/semaphore.h>
|
||||
|
||||
#endif /* _BSD_SEMAPHORE_H */
|
|
@ -0,0 +1,165 @@
|
|||
/*
|
||||
* Copyright (c) 2006, 2010 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @APPLE_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.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SPAWN_H_
|
||||
#define _SPAWN_H_
|
||||
|
||||
/*
|
||||
* [SPN] Support for _POSIX_SPAWN
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <_types.h>
|
||||
#include <sys/spawn.h> /* shared types */
|
||||
|
||||
#include <Availability.h>
|
||||
|
||||
/*
|
||||
* [SPN] Inclusion of the <spawn.h> header may make visible symbols defined
|
||||
* in the <sched.h>, <signal.h>, and <sys/types.h> headers.
|
||||
*/
|
||||
#include <sys/_types/_pid_t.h>
|
||||
#include <sys/_types/_sigset_t.h>
|
||||
#include <sys/_types/_mode_t.h>
|
||||
|
||||
/*
|
||||
* Opaque types for use with posix_spawn() family functions. Internals are
|
||||
* not defined, and should not be accessed directly. Types are defined as
|
||||
* mandated by POSIX.
|
||||
*/
|
||||
typedef void *posix_spawnattr_t;
|
||||
typedef void *posix_spawn_file_actions_t;
|
||||
|
||||
__BEGIN_DECLS
|
||||
/*
|
||||
* gcc under c99 mode won't compile "[ __restrict]" by itself. As a workaround,
|
||||
* a dummy argument name is added.
|
||||
*/
|
||||
|
||||
int posix_spawn(pid_t * __restrict, const char * __restrict,
|
||||
const posix_spawn_file_actions_t *,
|
||||
const posix_spawnattr_t * __restrict,
|
||||
char *const __argv[__restrict],
|
||||
char *const __envp[__restrict]) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnp(pid_t * __restrict, const char * __restrict,
|
||||
const posix_spawn_file_actions_t *,
|
||||
const posix_spawnattr_t * __restrict,
|
||||
char *const __argv[__restrict],
|
||||
char *const __envp[__restrict]) __API_AVAILABLE(macos(10.5), ios(2.0));
|
||||
|
||||
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int,
|
||||
int) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawn_file_actions_addopen(
|
||||
posix_spawn_file_actions_t * __restrict, int,
|
||||
const char * __restrict, int, mode_t) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawn_file_actions_init(posix_spawn_file_actions_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_destroy(posix_spawnattr_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_getsigdefault(const posix_spawnattr_t * __restrict,
|
||||
sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_getflags(const posix_spawnattr_t * __restrict,
|
||||
short * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_getpgroup(const posix_spawnattr_t * __restrict,
|
||||
pid_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict,
|
||||
sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_init(posix_spawnattr_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict,
|
||||
const sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setflags(posix_spawnattr_t *, short) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict,
|
||||
const sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
#if 0 /* _POSIX_PRIORITY_SCHEDULING [PS] : not supported */
|
||||
int posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict,
|
||||
const struct sched_param * __restrict);
|
||||
int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
|
||||
int posix_spawnattr_getschedparam(const posix_spawnattr_t * __restrict,
|
||||
struct sched_param * __restrict);
|
||||
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t * __restrict,
|
||||
int * __restrict);
|
||||
#endif /* 0 */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
/*
|
||||
* Darwin-specific extensions below
|
||||
*/
|
||||
#include <mach/exception_types.h>
|
||||
#include <mach/machine.h>
|
||||
#include <mach/port.h>
|
||||
|
||||
#include <sys/_types/_size_t.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
int posix_spawnattr_getbinpref_np(const posix_spawnattr_t * __restrict,
|
||||
size_t, cpu_type_t *__restrict, size_t *__restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setauditsessionport_np(posix_spawnattr_t * __restrict,
|
||||
mach_port_t) __API_AVAILABLE(macos(10.6), ios(3.2));
|
||||
|
||||
int posix_spawnattr_setbinpref_np(posix_spawnattr_t * __restrict,
|
||||
size_t, cpu_type_t *__restrict, size_t *__restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setexceptionports_np(posix_spawnattr_t * __restrict,
|
||||
exception_mask_t, mach_port_t,
|
||||
exception_behavior_t, thread_state_flavor_t) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setspecialport_np(posix_spawnattr_t * __restrict,
|
||||
mach_port_t, int) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawnattr_setsuidcredport_np(posix_spawnattr_t * __restrict, mach_port_t) __API_UNAVAILABLE(ios, macos);
|
||||
|
||||
int posix_spawn_file_actions_addinherit_np(posix_spawn_file_actions_t *,
|
||||
int) __API_AVAILABLE(macos(10.7), ios(4.3)) __API_UNAVAILABLE(watchos, tvos);
|
||||
|
||||
int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *,
|
||||
const char * __restrict) __API_AVAILABLE(macos(10.15)) __API_UNAVAILABLE(ios, tvos, watchos);
|
||||
|
||||
int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *,
|
||||
int) __API_AVAILABLE(macos(10.15)) __API_UNAVAILABLE(ios, tvos, watchos);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
#endif /* _SPAWN_H_ */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_COND_T
|
||||
#define _PTHREAD_COND_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_cond_t */
|
||||
typedef __darwin_pthread_cond_t pthread_cond_t;
|
||||
#endif /* _PTHREAD_COND_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_CONDATTR_T
|
||||
#define _PTHREAD_CONDATTR_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_condattr_t */
|
||||
typedef __darwin_pthread_condattr_t pthread_condattr_t;
|
||||
#endif /* _PTHREAD_CONDATTR_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_KEY_T
|
||||
#define _PTHREAD_KEY_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_key_t */
|
||||
typedef __darwin_pthread_key_t pthread_key_t;
|
||||
#endif /* _PTHREAD_KEY_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_MUTEX_T
|
||||
#define _PTHREAD_MUTEX_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_mutex_t */
|
||||
typedef __darwin_pthread_mutex_t pthread_mutex_t;
|
||||
#endif /*_PTHREAD_MUTEX_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_MUTEXATTR_T
|
||||
#define _PTHREAD_MUTEXATTR_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_mutexattr_t */
|
||||
typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;
|
||||
#endif /* _PTHREAD_MUTEXATTR_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_ONCE_T
|
||||
#define _PTHREAD_ONCE_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_once_t */
|
||||
typedef __darwin_pthread_once_t pthread_once_t;
|
||||
#endif /* _PTHREAD_ONCE_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_RWLOCK_T
|
||||
#define _PTHREAD_RWLOCK_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_rwlock_t */
|
||||
typedef __darwin_pthread_rwlock_t pthread_rwlock_t;
|
||||
#endif /* _PTHREAD_RWLOCK_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _PTHREAD_RWLOCKATTR_T
|
||||
#define _PTHREAD_RWLOCKATTR_T
|
||||
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_rwlockattr_t */
|
||||
typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;
|
||||
#endif /* _PTHREAD_RWLOCKATTR_T */
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (c) 2005, 2007 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is called from sys/select.h and sys/time.h for the common prototype
|
||||
* of select(). Setting _DARWIN_C_SOURCE or _DARWIN_UNLIMITED_SELECT uses
|
||||
* the version of select() that does not place a limit on the first argument
|
||||
* (nfds). In the UNIX conformance case, values of nfds greater than
|
||||
* FD_SETSIZE will return an error of EINVAL.
|
||||
*/
|
||||
#ifndef _SYS__SELECT_H_
|
||||
#define _SYS__SELECT_H_
|
||||
|
||||
int select(int, fd_set * __restrict, fd_set * __restrict,
|
||||
fd_set * __restrict, struct timeval * __restrict)
|
||||
#if defined(_DARWIN_C_SOURCE) || defined(_DARWIN_UNLIMITED_SELECT)
|
||||
__DARWIN_EXTSN_C(select)
|
||||
#else /* !_DARWIN_C_SOURCE && !_DARWIN_UNLIMITED_SELECT */
|
||||
# if defined(__LP64__) && !__DARWIN_NON_CANCELABLE
|
||||
__DARWIN_1050(select)
|
||||
# else /* !__LP64__ || __DARWIN_NON_CANCELABLE */
|
||||
__DARWIN_ALIAS_C(select)
|
||||
# endif /* __LP64__ && !__DARWIN_NON_CANCELABLE */
|
||||
#endif /* _DARWIN_C_SOURCE || _DARWIN_UNLIMITED_SELECT */
|
||||
;
|
||||
|
||||
#endif /* !_SYS__SELECT_H_ */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _BLKCNT_T
|
||||
#define _BLKCNT_T
|
||||
#include <sys/_types.h> /* __darwin_blkcnt_t */
|
||||
typedef __darwin_blkcnt_t blkcnt_t;
|
||||
#endif /* _BLKCNT_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _BLKSIZE_T
|
||||
#define _BLKSIZE_T
|
||||
#include <sys/_types.h> /* __darwin_blksize_t */
|
||||
typedef __darwin_blksize_t blksize_t;
|
||||
#endif /* _BLKSIZE_T */
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (c) 2017 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _CADDR_T
|
||||
#define _CADDR_T
|
||||
typedef char * caddr_t;
|
||||
#endif /* _CADDR_T */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef FD_CLR
|
||||
#define FD_CLR(n, p) __DARWIN_FD_CLR(n, p)
|
||||
#endif /* FD_CLR */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef FD_COPY
|
||||
#define FD_COPY(f, t) __DARWIN_FD_COPY(f, t)
|
||||
#endif /* FD_COPY */
|
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _FD_SET
|
||||
#define _FD_SET
|
||||
|
||||
#include <machine/types.h> /* __int32_t and uintptr_t */
|
||||
#include <Availability.h>
|
||||
|
||||
/*
|
||||
* Select uses bit masks of file descriptors in longs. These macros
|
||||
* manipulate such bit fields (the filesystem macros use chars). The
|
||||
* extra protection here is to permit application redefinition above
|
||||
* the default size.
|
||||
*/
|
||||
#ifdef FD_SETSIZE
|
||||
#define __DARWIN_FD_SETSIZE FD_SETSIZE
|
||||
#else /* !FD_SETSIZE */
|
||||
#define __DARWIN_FD_SETSIZE 1024
|
||||
#endif /* FD_SETSIZE */
|
||||
#define __DARWIN_NBBY 8 /* bits in a byte */
|
||||
#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */
|
||||
#define __DARWIN_howmany(x, y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1)) /* # y's == x bits? */
|
||||
|
||||
__BEGIN_DECLS
|
||||
typedef struct fd_set {
|
||||
__int32_t fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)];
|
||||
} fd_set;
|
||||
|
||||
int __darwin_check_fd_set_overflow(int, const void *, int) __attribute__((__weak_import__));
|
||||
__END_DECLS
|
||||
|
||||
__header_always_inline int
|
||||
__darwin_check_fd_set(int _a, const void *_b)
|
||||
{
|
||||
if ((uintptr_t)&__darwin_check_fd_set_overflow != (uintptr_t) 0) {
|
||||
#if defined(_DARWIN_UNLIMITED_SELECT) || defined(_DARWIN_C_SOURCE)
|
||||
return __darwin_check_fd_set_overflow(_a, _b, 1);
|
||||
#else
|
||||
return __darwin_check_fd_set_overflow(_a, _b, 0);
|
||||
#endif
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* This inline avoids argument side-effect issues with FD_ISSET() */
|
||||
__header_always_inline int
|
||||
__darwin_fd_isset(int _fd, const struct fd_set *_p)
|
||||
{
|
||||
if (__darwin_check_fd_set(_fd, (const void *) _p)) {
|
||||
return _p->fds_bits[(unsigned long)_fd / __DARWIN_NFDBITS] & ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % __DARWIN_NFDBITS)));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__header_always_inline void
|
||||
__darwin_fd_set(int _fd, struct fd_set *const _p)
|
||||
{
|
||||
if (__darwin_check_fd_set(_fd, (const void *) _p)) {
|
||||
(_p->fds_bits[(unsigned long)_fd / __DARWIN_NFDBITS] |= ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % __DARWIN_NFDBITS))));
|
||||
}
|
||||
}
|
||||
|
||||
__header_always_inline void
|
||||
__darwin_fd_clr(int _fd, struct fd_set *const _p)
|
||||
{
|
||||
if (__darwin_check_fd_set(_fd, (const void *) _p)) {
|
||||
(_p->fds_bits[(unsigned long)_fd / __DARWIN_NFDBITS] &= ~((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % __DARWIN_NFDBITS))));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define __DARWIN_FD_SET(n, p) __darwin_fd_set((n), (p))
|
||||
#define __DARWIN_FD_CLR(n, p) __darwin_fd_clr((n), (p))
|
||||
#define __DARWIN_FD_ISSET(n, p) __darwin_fd_isset((n), (p))
|
||||
|
||||
#if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 3
|
||||
/*
|
||||
* Use the built-in bzero function instead of the library version so that
|
||||
* we do not pollute the namespace or introduce prototype warnings.
|
||||
*/
|
||||
#define __DARWIN_FD_ZERO(p) __builtin_bzero(p, sizeof(*(p)))
|
||||
#else
|
||||
#define __DARWIN_FD_ZERO(p) bzero(p, sizeof(*(p)))
|
||||
#endif
|
||||
|
||||
#define __DARWIN_FD_COPY(f, t) bcopy(f, t, sizeof(*(f)))
|
||||
#endif /* _FD_SET */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef FD_ISSET
|
||||
#define FD_ISSET(n, p) __DARWIN_FD_ISSET(n, p)
|
||||
#endif /* FD_ISSET */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef FD_SET
|
||||
#define FD_SET(n, p) __DARWIN_FD_SET(n, p)
|
||||
#endif /* FD_SET */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef FD_SETSIZE
|
||||
#define FD_SETSIZE __DARWIN_FD_SETSIZE
|
||||
#endif /* FD_SETSIZE */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef FD_ZERO
|
||||
#define FD_ZERO(p) __DARWIN_FD_ZERO(p)
|
||||
#endif /* FD_ZERO */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _FILESEC_T
|
||||
#define _FILESEC_T
|
||||
struct _filesec;
|
||||
typedef struct _filesec *filesec_t;
|
||||
#endif /* _FILESEC_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _FSBLKCNT_T
|
||||
#define _FSBLKCNT_T
|
||||
#include <sys/_types.h> /* __darwin_fsblkcnt_t */
|
||||
typedef __darwin_fsblkcnt_t fsblkcnt_t;
|
||||
#endif /* _FSBLKCNT_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _FSFILCNT_T
|
||||
#define _FSFILCNT_T
|
||||
#include <sys/_types.h> /* __darwin_fsfilcnt_t */
|
||||
typedef __darwin_fsfilcnt_t fsfilcnt_t;
|
||||
#endif /* _FSFILCNT_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _GID_T
|
||||
#define _GID_T
|
||||
#include <sys/_types.h> /* __darwin_gid_t */
|
||||
typedef __darwin_gid_t gid_t;
|
||||
#endif
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _IN_ADDR_T
|
||||
#define _IN_ADDR_T
|
||||
#include <machine/types.h> /* __uint32_t */
|
||||
typedef __uint32_t in_addr_t; /* base type for internet address */
|
||||
#endif /* _IN_ADDR_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _IN_PORT_T
|
||||
#define _IN_PORT_T
|
||||
#include <machine/types.h> /* __uint16_t */
|
||||
typedef __uint16_t in_port_t;
|
||||
#endif /* _IN_PORT_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _INO64_T
|
||||
#define _INO64_T
|
||||
#include <sys/_types.h> /* __darwin_ino64_t */
|
||||
typedef __darwin_ino64_t ino64_t; /* 64bit inode number */
|
||||
#endif /* _INO64_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _INO_T
|
||||
#define _INO_T
|
||||
#include <sys/_types.h> /* __darwin_ino_t */
|
||||
typedef __darwin_ino_t ino_t; /* inode number */
|
||||
#endif /* _INO_T */
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _STRUCT_IOVEC
|
||||
#define _STRUCT_IOVEC
|
||||
#include <sys/_types/_size_t.h> /* size_t */
|
||||
struct iovec {
|
||||
void * iov_base; /* [XSI] Base address of I/O memory region */
|
||||
size_t iov_len; /* [XSI] Size of region iov_base points to */
|
||||
};
|
||||
#endif /* _STRUCT_IOVEC */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _KEY_T
|
||||
#define _KEY_T
|
||||
#include <machine/types.h> /* __int32_t */
|
||||
typedef __int32_t key_t; /* IPC key (for Sys V IPC) */
|
||||
#endif /* _KEY_T */
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
/*
|
||||
* mach_port_t - a named port right
|
||||
*
|
||||
* In user-space, "rights" are represented by the name of the
|
||||
* right in the Mach port namespace. Even so, this type is
|
||||
* presented as a unique one to more clearly denote the presence
|
||||
* of a right coming along with the name.
|
||||
*
|
||||
* Often, various rights for a port held in a single name space
|
||||
* will coalesce and are, therefore, be identified by a single name
|
||||
* [this is the case for send and receive rights]. But not
|
||||
* always [send-once rights currently get a unique name for
|
||||
* each right].
|
||||
*
|
||||
* This definition of mach_port_t is only for user-space.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MACH_PORT_T
|
||||
#define _MACH_PORT_T
|
||||
#include <sys/_types.h> /* __darwin_mach_port_t */
|
||||
typedef __darwin_mach_port_t mach_port_t;
|
||||
#endif /* _MACH_PORT_T */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _NLINK_T
|
||||
#define _NLINK_T
|
||||
#include <machine/types.h> /* __uint16_t */
|
||||
typedef __uint16_t nlink_t; /* link count */
|
||||
#endif /* _NLINK_T */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef O_DSYNC
|
||||
#define O_DSYNC 0x400000 /* synch I/O data integrity */
|
||||
#endif /* O_DSYNC */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef O_SYNC
|
||||
#define O_SYNC 0x0080 /* synch I/O file integrity */
|
||||
#endif /* O_SYNC */
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _POSIX_VDISABLE
|
||||
#define _POSIX_VDISABLE ((unsigned char)'\377')
|
||||
#endif /* POSIX_VDISABLE */
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
/*
|
||||
* [XSI] The symbolic names for file modes for use as values of mode_t
|
||||
* shall be defined as described in <sys/stat.h>
|
||||
*/
|
||||
#ifndef S_IFMT
|
||||
/* File type */
|
||||
#define S_IFMT 0170000 /* [XSI] type of file mask */
|
||||
#define S_IFIFO 0010000 /* [XSI] named pipe (fifo) */
|
||||
#define S_IFCHR 0020000 /* [XSI] character special */
|
||||
#define S_IFDIR 0040000 /* [XSI] directory */
|
||||
#define S_IFBLK 0060000 /* [XSI] block special */
|
||||
#define S_IFREG 0100000 /* [XSI] regular */
|
||||
#define S_IFLNK 0120000 /* [XSI] symbolic link */
|
||||
#define S_IFSOCK 0140000 /* [XSI] socket */
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define S_IFWHT 0160000 /* OBSOLETE: whiteout */
|
||||
#endif
|
||||
|
||||
/* File mode */
|
||||
/* Read, write, execute/search by owner */
|
||||
#define S_IRWXU 0000700 /* [XSI] RWX mask for owner */
|
||||
#define S_IRUSR 0000400 /* [XSI] R for owner */
|
||||
#define S_IWUSR 0000200 /* [XSI] W for owner */
|
||||
#define S_IXUSR 0000100 /* [XSI] X for owner */
|
||||
/* Read, write, execute/search by group */
|
||||
#define S_IRWXG 0000070 /* [XSI] RWX mask for group */
|
||||
#define S_IRGRP 0000040 /* [XSI] R for group */
|
||||
#define S_IWGRP 0000020 /* [XSI] W for group */
|
||||
#define S_IXGRP 0000010 /* [XSI] X for group */
|
||||
/* Read, write, execute/search by others */
|
||||
#define S_IRWXO 0000007 /* [XSI] RWX mask for other */
|
||||
#define S_IROTH 0000004 /* [XSI] R for other */
|
||||
#define S_IWOTH 0000002 /* [XSI] W for other */
|
||||
#define S_IXOTH 0000001 /* [XSI] X for other */
|
||||
|
||||
#define S_ISUID 0004000 /* [XSI] set user id on execution */
|
||||
#define S_ISGID 0002000 /* [XSI] set group id on execution */
|
||||
#define S_ISVTX 0001000 /* [XSI] directory restrcted delete */
|
||||
|
||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||
#define S_ISTXT S_ISVTX /* sticky bit: not supported */
|
||||
#define S_IREAD S_IRUSR /* backward compatability */
|
||||
#define S_IWRITE S_IWUSR /* backward compatability */
|
||||
#define S_IEXEC S_IXUSR /* backward compatability */
|
||||
#endif
|
||||
#endif /* !S_IFMT */
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
#ifndef _SA_FAMILY_T
|
||||
#define _SA_FAMILY_T
|
||||
#include <machine/types.h> /* __uint8_t */
|
||||
typedef __uint8_t sa_family_t;
|
||||
#endif /* _SA_FAMILY_T */
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2012 Apple Inc. All rights reserved.
|
||||
*
|
||||
* @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. 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
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* whence values for lseek(2) */
|
||||
#ifndef SEEK_SET
|
||||
#define SEEK_SET 0 /* set file offset to offset */
|
||||
#define SEEK_CUR 1 /* set file offset to current plus offset */
|
||||
#define SEEK_END 2 /* set file offset to EOF plus offset */
|
||||
#endif /* !SEEK_SET */
|
||||
|
||||
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
|
||||
#ifndef SEEK_HOLE
|
||||
#define SEEK_HOLE 3 /* set file offset to the start of the next hole greater than or equal to the supplied offset */
|
||||
#endif
|
||||
|
||||
#ifndef SEEK_DATA
|
||||
#define SEEK_DATA 4 /* set file offset to the start of the next non-hole file region greater than or equal to the supplied offset */
|
||||
#endif
|
||||
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue