Commit b0cbd0ad2d
Changed files (76)
lib
libc
include
x86_64-macos-gnu
mach
sys
lib/libc/include/x86_64-macos-gnu/mach/i386/processor_info.h
@@ -0,0 +1,37 @@
+/*
+ * 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@
+ */
+/*
+ * File: mach/i386/processor_info.h
+ *
+ * Data structure definitions for i386 specific processor control
+ */
+
+#ifndef _MACH_I386_PROCESSOR_INFO_H_
+#define _MACH_I386_PROCESSOR_INFO_H_
+
+#endif /* _MACH_I386_PROCESSOR_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/i386/rpc.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2002,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@
+ */
+
+#ifndef _MACH_I386_RPC_H_
+#define _MACH_I386_RPC_H_
+
+#endif /* _MACH_I386_RPC_H_ */
lib/libc/include/x86_64-macos-gnu/mach/machine/processor_info.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_PROCESSOR_INFO_H_
+#define _MACH_MACHINE_PROCESSOR_INFO_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/processor_info.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_PROCESSOR_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/machine/rpc.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_RPC_H_
+#define _MACH_MACHINE_RPC_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/rpc.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_RPC_H_ */
lib/libc/include/x86_64-macos-gnu/mach/machine/vm_param.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_PARAM_H_
+#define _MACH_MACHINE_VM_PARAM_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/vm_param.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_VM_PARAM_H_ */
lib/libc/include/x86_64-macos-gnu/mach/clock_priv.h
@@ -0,0 +1,199 @@
+#ifndef _clock_priv_user_
+#define _clock_priv_user_
+
+/* Module clock_priv */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef clock_priv_MSG_COUNT
+#define clock_priv_MSG_COUNT 2
+#endif /* clock_priv_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine clock_set_time */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t clock_set_time
+(
+ clock_ctrl_t clock_ctrl,
+ mach_timespec_t new_time
+);
+
+/* Routine clock_set_attributes */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t clock_set_attributes
+(
+ clock_ctrl_t clock_ctrl,
+ clock_flavor_t flavor,
+ clock_attr_t clock_attr,
+ mach_msg_type_number_t clock_attrCnt
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__clock_priv_subsystem__defined
+#define __Request__clock_priv_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_timespec_t new_time;
+ } __Request__clock_set_time_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ clock_flavor_t flavor;
+ mach_msg_type_number_t clock_attrCnt;
+ int clock_attr[1];
+ } __Request__clock_set_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__clock_priv_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__clock_priv_subsystem__defined
+#define __RequestUnion__clock_priv_subsystem__defined
+union __RequestUnion__clock_priv_subsystem {
+ __Request__clock_set_time_t Request_clock_set_time;
+ __Request__clock_set_attributes_t Request_clock_set_attributes;
+};
+#endif /* !__RequestUnion__clock_priv_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__clock_priv_subsystem__defined
+#define __Reply__clock_priv_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__clock_set_time_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__clock_set_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__clock_priv_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__clock_priv_subsystem__defined
+#define __ReplyUnion__clock_priv_subsystem__defined
+union __ReplyUnion__clock_priv_subsystem {
+ __Reply__clock_set_time_t Reply_clock_set_time;
+ __Reply__clock_set_attributes_t Reply_clock_set_attributes;
+};
+#endif /* !__RequestUnion__clock_priv_subsystem__defined */
+
+#ifndef subsystem_to_name_map_clock_priv
+#define subsystem_to_name_map_clock_priv \
+ { "clock_set_time", 1200 },\
+ { "clock_set_attributes", 1201 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _clock_priv_user_ */
lib/libc/include/x86_64-macos-gnu/mach/clock_types.h
@@ -0,0 +1,127 @@
+/*
+ * 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@
+ */
+/*
+ * File: clock_types.h
+ * Purpose: Clock facility header definitions. These
+ * definitons are needed by both kernel and
+ * user-level software.
+ */
+
+/*
+ * All interfaces defined here are obsolete.
+ */
+
+#ifndef _MACH_CLOCK_TYPES_H_
+#define _MACH_CLOCK_TYPES_H_
+
+#include <stdint.h>
+#include <mach/time_value.h>
+
+/*
+ * Type definitions.
+ */
+typedef int alarm_type_t; /* alarm time type */
+typedef int sleep_type_t; /* sleep time type */
+typedef int clock_id_t; /* clock identification type */
+typedef int clock_flavor_t; /* clock flavor type */
+typedef int *clock_attr_t; /* clock attribute type */
+typedef int clock_res_t; /* clock resolution type */
+
+/*
+ * Normal time specification used by the kernel clock facility.
+ */
+struct mach_timespec {
+ unsigned int tv_sec; /* seconds */
+ clock_res_t tv_nsec; /* nanoseconds */
+};
+typedef struct mach_timespec mach_timespec_t;
+
+/*
+ * Reserved clock id values for default clocks.
+ */
+#define SYSTEM_CLOCK 0
+#define CALENDAR_CLOCK 1
+
+#define REALTIME_CLOCK 0
+
+/*
+ * Attribute names.
+ */
+#define CLOCK_GET_TIME_RES 1 /* get_time call resolution */
+/* 2 * was map_time call resolution */
+#define CLOCK_ALARM_CURRES 3 /* current alarm resolution */
+#define CLOCK_ALARM_MINRES 4 /* minimum alarm resolution */
+#define CLOCK_ALARM_MAXRES 5 /* maximum alarm resolution */
+
+#define NSEC_PER_USEC 1000ull /* nanoseconds per microsecond */
+#define USEC_PER_SEC 1000000ull /* microseconds per second */
+#define NSEC_PER_SEC 1000000000ull /* nanoseconds per second */
+#define NSEC_PER_MSEC 1000000ull /* nanoseconds per millisecond */
+
+#define BAD_MACH_TIMESPEC(t) \
+ ((t)->tv_nsec < 0 || (t)->tv_nsec >= (long)NSEC_PER_SEC)
+
+/* t1 <=> t2, also (t1 - t2) in nsec with max of +- 1 sec */
+#define CMP_MACH_TIMESPEC(t1, t2) \
+ ((t1)->tv_sec > (t2)->tv_sec ? (long) +NSEC_PER_SEC : \
+ ((t1)->tv_sec < (t2)->tv_sec ? (long) -NSEC_PER_SEC : \
+ (t1)->tv_nsec - (t2)->tv_nsec))
+
+/* t1 += t2 */
+#define ADD_MACH_TIMESPEC(t1, t2) \
+ do { \
+ if (((t1)->tv_nsec += (t2)->tv_nsec) >= (long) NSEC_PER_SEC) { \
+ (t1)->tv_nsec -= (long) NSEC_PER_SEC; \
+ (t1)->tv_sec += 1; \
+ } \
+ (t1)->tv_sec += (t2)->tv_sec; \
+ } while (0)
+
+/* t1 -= t2 */
+#define SUB_MACH_TIMESPEC(t1, t2) \
+ do { \
+ if (((t1)->tv_nsec -= (t2)->tv_nsec) < 0) { \
+ (t1)->tv_nsec += (long) NSEC_PER_SEC; \
+ (t1)->tv_sec -= 1; \
+ } \
+ (t1)->tv_sec -= (t2)->tv_sec; \
+ } while (0)
+
+/*
+ * Alarm parameter defines.
+ */
+#define ALRMTYPE 0xff /* type (8-bit field) */
+#define TIME_ABSOLUTE 0x00 /* absolute time */
+#define TIME_RELATIVE 0x01 /* relative time */
+
+#define BAD_ALRMTYPE(t) (((t) &~ TIME_RELATIVE) != 0)
+
+#endif /* _MACH_CLOCK_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach/dyld_kernel.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 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@
+ */
+
+#ifndef _MACH_DYLIB_INFO_H_
+#define _MACH_DYLIB_INFO_H_
+
+#include <mach/boolean.h>
+#include <stdint.h>
+#include <sys/_types/_fsid_t.h>
+#include <sys/_types/_u_int32_t.h>
+#include <sys/_types/_fsobj_id_t.h>
+#include <sys/_types/_uuid_t.h>
+
+/* These definitions must be kept in sync with the ones in
+ * osfmk/mach/mach_types.defs.
+ */
+
+struct dyld_kernel_image_info {
+ uuid_t uuid;
+ fsobj_id_t fsobjid;
+ fsid_t fsid;
+ uint64_t load_addr;
+};
+
+struct dyld_kernel_process_info {
+ struct dyld_kernel_image_info cache_image_info;
+ uint64_t timestamp; // mach_absolute_time of last time dyld change to image list
+ uint32_t imageCount; // number of images currently loaded into process
+ uint32_t initialImageCount; // number of images statically loaded into process (before any dlopen() calls)
+ uint8_t dyldState; // one of dyld_process_state_* values
+ boolean_t no_cache; // process is running without a dyld cache
+ boolean_t private_cache; // process is using a private copy of its dyld cache
+};
+
+/* typedefs so our MIG is sane */
+
+typedef struct dyld_kernel_image_info dyld_kernel_image_info_t;
+typedef struct dyld_kernel_process_info dyld_kernel_process_info_t;
+typedef dyld_kernel_image_info_t *dyld_kernel_image_info_array_t;
+
+#endif /* _MACH_DYLIB_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/error.h
@@ -0,0 +1,114 @@
+/*
+ * 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/error.h
+ * Purpose:
+ * error module definitions
+ *
+ */
+
+#ifndef _MACH_ERROR_H_
+#define _MACH_ERROR_H_
+
+#include <mach/kern_return.h>
+
+/*
+ * error number layout as follows:
+ *
+ * hi lo
+ * | system(6) | subsystem(12) | code(14) |
+ */
+
+
+#define err_none (mach_error_t)0
+#define ERR_SUCCESS (mach_error_t)0
+#define ERR_ROUTINE_NIL (mach_error_fn_t)0
+
+
+#define err_system(x) ((signed)((((unsigned)(x))&0x3f)<<26))
+#define err_sub(x) (((x)&0xfff)<<14)
+
+#define err_get_system(err) (((err)>>26)&0x3f)
+#define err_get_sub(err) (((err)>>14)&0xfff)
+#define err_get_code(err) ((err)&0x3fff)
+
+#define system_emask (err_system(0x3f))
+#define sub_emask (err_sub(0xfff))
+#define code_emask (0x3fff)
+
+
+/* major error systems */
+#define err_kern err_system(0x0) /* kernel */
+#define err_us err_system(0x1) /* user space library */
+#define err_server err_system(0x2) /* user space servers */
+#define err_ipc err_system(0x3) /* old ipc errors */
+#define err_mach_ipc err_system(0x4) /* mach-ipc errors */
+#define err_dipc err_system(0x7) /* distributed ipc */
+#define err_local err_system(0x3e) /* user defined errors */
+#define err_ipc_compat err_system(0x3f) /* (compatibility) mach-ipc errors */
+
+#define err_max_system 0x3f
+
+
+/* unix errors get lumped into one subsystem */
+#define unix_err(errno) (err_kern|err_sub(3)|errno)
+
+typedef kern_return_t mach_error_t;
+typedef mach_error_t (* mach_error_fn_t)( void );
+
+#endif /* _MACH_ERROR_H_ */
lib/libc/include/x86_64-macos-gnu/mach/host_info.h
@@ -0,0 +1,260 @@
+/*
+ * Copyright (c) 2000-2015 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.
+ */
+
+/*
+ * File: mach/host_info.h
+ *
+ * Definitions for host_info call.
+ */
+
+#ifndef _MACH_HOST_INFO_H_
+#define _MACH_HOST_INFO_H_
+
+#include <mach/message.h>
+#include <mach/vm_statistics.h>
+#include <mach/machine.h>
+#include <mach/machine/vm_types.h>
+#include <mach/time_value.h>
+
+#include <sys/cdefs.h>
+
+/*
+ * Generic information structure to allow for expansion.
+ */
+typedef integer_t *host_info_t; /* varying array of int. */
+typedef integer_t *host_info64_t; /* varying array of int. */
+
+#define HOST_INFO_MAX (1024) /* max array size */
+typedef integer_t host_info_data_t[HOST_INFO_MAX];
+
+#define KERNEL_VERSION_MAX (512)
+typedef char kernel_version_t[KERNEL_VERSION_MAX];
+
+#define KERNEL_BOOT_INFO_MAX (4096)
+typedef char kernel_boot_info_t[KERNEL_BOOT_INFO_MAX];
+
+/*
+ * Currently defined information.
+ */
+/* host_info() */
+typedef integer_t host_flavor_t;
+#define HOST_BASIC_INFO 1 /* basic info */
+#define HOST_SCHED_INFO 3 /* scheduling info */
+#define HOST_RESOURCE_SIZES 4 /* kernel struct sizes */
+#define HOST_PRIORITY_INFO 5 /* priority information */
+#define HOST_SEMAPHORE_TRAPS 7 /* Has semaphore traps */
+#define HOST_MACH_MSG_TRAP 8 /* Has mach_msg_trap */
+#define HOST_VM_PURGABLE 9 /* purg'e'able memory info */
+#define HOST_DEBUG_INFO_INTERNAL 10 /* Used for kernel internal development tests only */
+#define HOST_CAN_HAS_DEBUGGER 11
+#define HOST_PREFERRED_USER_ARCH 12 /* Get the preferred user-space architecture */
+
+
+struct host_can_has_debugger_info {
+ boolean_t can_has_debugger;
+};
+typedef struct host_can_has_debugger_info host_can_has_debugger_info_data_t;
+typedef struct host_can_has_debugger_info *host_can_has_debugger_info_t;
+#define HOST_CAN_HAS_DEBUGGER_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_can_has_debugger_info_data_t)/sizeof(integer_t)))
+
+#pragma pack(push, 4)
+
+struct host_basic_info {
+ integer_t max_cpus; /* max number of CPUs possible */
+ integer_t avail_cpus; /* number of CPUs now available */
+ natural_t memory_size; /* size of memory in bytes, capped at 2 GB */
+ cpu_type_t cpu_type; /* cpu type */
+ cpu_subtype_t cpu_subtype; /* cpu subtype */
+ cpu_threadtype_t cpu_threadtype; /* cpu threadtype */
+ integer_t physical_cpu; /* number of physical CPUs now available */
+ integer_t physical_cpu_max; /* max number of physical CPUs possible */
+ integer_t logical_cpu; /* number of logical cpu now available */
+ integer_t logical_cpu_max; /* max number of physical CPUs possible */
+ uint64_t max_mem; /* actual size of physical memory */
+};
+
+#pragma pack(pop)
+
+typedef struct host_basic_info host_basic_info_data_t;
+typedef struct host_basic_info *host_basic_info_t;
+#define HOST_BASIC_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_basic_info_data_t)/sizeof(integer_t)))
+
+struct host_sched_info {
+ integer_t min_timeout; /* minimum timeout in milliseconds */
+ integer_t min_quantum; /* minimum quantum in milliseconds */
+};
+
+typedef struct host_sched_info host_sched_info_data_t;
+typedef struct host_sched_info *host_sched_info_t;
+#define HOST_SCHED_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_sched_info_data_t)/sizeof(integer_t)))
+
+struct kernel_resource_sizes {
+ natural_t task;
+ natural_t thread;
+ natural_t port;
+ natural_t memory_region;
+ natural_t memory_object;
+};
+
+typedef struct kernel_resource_sizes kernel_resource_sizes_data_t;
+typedef struct kernel_resource_sizes *kernel_resource_sizes_t;
+#define HOST_RESOURCE_SIZES_COUNT ((mach_msg_type_number_t) \
+ (sizeof(kernel_resource_sizes_data_t)/sizeof(integer_t)))
+
+struct host_priority_info {
+ integer_t kernel_priority;
+ integer_t system_priority;
+ integer_t server_priority;
+ integer_t user_priority;
+ integer_t depress_priority;
+ integer_t idle_priority;
+ integer_t minimum_priority;
+ integer_t maximum_priority;
+};
+
+typedef struct host_priority_info host_priority_info_data_t;
+typedef struct host_priority_info *host_priority_info_t;
+#define HOST_PRIORITY_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_priority_info_data_t)/sizeof(integer_t)))
+
+/* host_statistics() */
+#define HOST_LOAD_INFO 1 /* System loading stats */
+#define HOST_VM_INFO 2 /* Virtual memory stats */
+#define HOST_CPU_LOAD_INFO 3 /* CPU load stats */
+
+/* host_statistics64() */
+#define HOST_VM_INFO64 4 /* 64-bit virtual memory stats */
+#define HOST_EXTMOD_INFO64 5 /* External modification stats */
+#define HOST_EXPIRED_TASK_INFO 6 /* Statistics for expired tasks */
+
+
+struct host_load_info {
+ integer_t avenrun[3]; /* scaled by LOAD_SCALE */
+ integer_t mach_factor[3]; /* scaled by LOAD_SCALE */
+};
+
+typedef struct host_load_info host_load_info_data_t;
+typedef struct host_load_info *host_load_info_t;
+#define HOST_LOAD_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_load_info_data_t)/sizeof(integer_t)))
+
+typedef struct vm_purgeable_info host_purgable_info_data_t;
+typedef struct vm_purgeable_info *host_purgable_info_t;
+#define HOST_VM_PURGABLE_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_purgable_info_data_t)/sizeof(integer_t)))
+
+/* in <mach/vm_statistics.h> */
+/* vm_statistics64 */
+#define HOST_VM_INFO64_COUNT ((mach_msg_type_number_t) \
+ (sizeof(vm_statistics64_data_t)/sizeof(integer_t)))
+
+/* size of the latest version of the structure */
+#define HOST_VM_INFO64_LATEST_COUNT HOST_VM_INFO64_COUNT
+#define HOST_VM_INFO64_REV1_COUNT HOST_VM_INFO64_LATEST_COUNT
+/* previous versions: adjust the size according to what was added each time */
+#define HOST_VM_INFO64_REV0_COUNT /* added compression and swapper info (14 ints) */ \
+ ((mach_msg_type_number_t) \
+ (HOST_VM_INFO64_REV1_COUNT - 14))
+
+/* in <mach/vm_statistics.h> */
+/* vm_extmod_statistics */
+#define HOST_EXTMOD_INFO64_COUNT ((mach_msg_type_number_t) \
+ (sizeof(vm_extmod_statistics_data_t)/sizeof(integer_t)))
+
+/* size of the latest version of the structure */
+#define HOST_EXTMOD_INFO64_LATEST_COUNT HOST_EXTMOD_INFO64_COUNT
+
+/* vm_statistics */
+#define HOST_VM_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(vm_statistics_data_t)/sizeof(integer_t)))
+
+/* size of the latest version of the structure */
+#define HOST_VM_INFO_LATEST_COUNT HOST_VM_INFO_COUNT
+#define HOST_VM_INFO_REV2_COUNT HOST_VM_INFO_LATEST_COUNT
+/* previous versions: adjust the size according to what was added each time */
+#define HOST_VM_INFO_REV1_COUNT /* added "speculative_count" (1 int) */ \
+ ((mach_msg_type_number_t) \
+ (HOST_VM_INFO_REV2_COUNT - 1))
+#define HOST_VM_INFO_REV0_COUNT /* added "purgable" info (2 ints) */ \
+ ((mach_msg_type_number_t) \
+ (HOST_VM_INFO_REV1_COUNT - 2))
+
+struct host_cpu_load_info { /* number of ticks while running... */
+ natural_t cpu_ticks[CPU_STATE_MAX]; /* ... in the given mode */
+};
+
+typedef struct host_cpu_load_info host_cpu_load_info_data_t;
+typedef struct host_cpu_load_info *host_cpu_load_info_t;
+#define HOST_CPU_LOAD_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (host_cpu_load_info_data_t) / sizeof (integer_t)))
+
+struct host_preferred_user_arch {
+ cpu_type_t cpu_type; /* Preferred user-space cpu type */
+ cpu_subtype_t cpu_subtype; /* Preferred user-space cpu subtype */
+};
+
+typedef struct host_preferred_user_arch host_preferred_user_arch_data_t;
+typedef struct host_preferred_user_arch *host_preferred_user_arch_t;
+#define HOST_PREFERRED_USER_ARCH_COUNT ((mach_msg_type_number_t) \
+ (sizeof(host_preferred_user_arch_data_t)/sizeof(integer_t)))
+
+
+
+
+#endif /* _MACH_HOST_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/host_notify.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2003 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 _MACH_HOST_NOTIFY_H_
+#define _MACH_HOST_NOTIFY_H_
+
+#define HOST_NOTIFY_CALENDAR_CHANGE 0
+#define HOST_NOTIFY_CALENDAR_SET 1
+#define HOST_NOTIFY_TYPE_MAX 1
+
+#define HOST_CALENDAR_CHANGED_REPLYID 950
+#define HOST_CALENDAR_SET_REPLYID 951
+
+#endif /* _MACH_HOST_NOTIFY_H_ */
lib/libc/include/x86_64-macos-gnu/mach/host_priv.h
@@ -0,0 +1,1163 @@
+#ifndef _host_priv_user_
+#define _host_priv_user_
+
+/* Module host_priv */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef host_priv_MSG_COUNT
+#define host_priv_MSG_COUNT 26
+#endif /* host_priv_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine host_get_boot_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_boot_info
+(
+ host_priv_t host_priv,
+ kernel_boot_info_t boot_info
+);
+
+/* Routine host_reboot */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_reboot
+(
+ host_priv_t host_priv,
+ int options
+);
+
+/* Routine host_priv_statistics */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_priv_statistics
+(
+ host_priv_t host_priv,
+ host_flavor_t flavor,
+ host_info_t host_info_out,
+ mach_msg_type_number_t *host_info_outCnt
+);
+
+/* Routine host_default_memory_manager */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_default_memory_manager
+(
+ host_priv_t host_priv,
+ memory_object_default_t *default_manager,
+ memory_object_cluster_size_t cluster_size
+);
+
+/* Routine vm_wire */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_wire
+(
+ host_priv_t host_priv,
+ vm_map_t task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_prot_t desired_access
+);
+
+/* Routine thread_wire */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_wire
+(
+ host_priv_t host_priv,
+ thread_act_t thread,
+ boolean_t wired
+);
+
+/* Routine vm_allocate_cpm */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_allocate_cpm
+(
+ host_priv_t host_priv,
+ vm_map_t task,
+ vm_address_t *address,
+ vm_size_t size,
+ int flags
+);
+
+/* Routine host_processors */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_processors
+(
+ host_priv_t host_priv,
+ processor_array_t *out_processor_list,
+ mach_msg_type_number_t *out_processor_listCnt
+);
+
+/* Routine host_get_clock_control */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_clock_control
+(
+ host_priv_t host_priv,
+ clock_id_t clock_id,
+ clock_ctrl_t *clock_ctrl
+);
+
+/* Routine kmod_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t kmod_create
+(
+ host_priv_t host_priv,
+ vm_address_t info,
+ kmod_t *module
+);
+
+/* Routine kmod_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t kmod_destroy
+(
+ host_priv_t host_priv,
+ kmod_t module
+);
+
+/* Routine kmod_control */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t kmod_control
+(
+ host_priv_t host_priv,
+ kmod_t module,
+ kmod_control_flavor_t flavor,
+ kmod_args_t *data,
+ mach_msg_type_number_t *dataCnt
+);
+
+/* Routine host_get_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_special_port
+(
+ host_priv_t host_priv,
+ int node,
+ int which,
+ mach_port_t *port
+);
+
+/* Routine host_set_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_set_special_port
+(
+ host_priv_t host_priv,
+ int which,
+ mach_port_t port
+);
+
+/* Routine host_set_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_set_exception_ports
+(
+ host_priv_t host_priv,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor
+);
+
+/* Routine host_get_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_exception_ports
+(
+ host_priv_t host_priv,
+ exception_mask_t exception_mask,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine host_swap_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_swap_exception_ports
+(
+ host_priv_t host_priv,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlerss,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine mach_vm_wire */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_vm_wire
+(
+ host_priv_t host_priv,
+ vm_map_t task,
+ mach_vm_address_t address,
+ mach_vm_size_t size,
+ vm_prot_t desired_access
+);
+
+/* Routine host_processor_sets */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_processor_sets
+(
+ host_priv_t host_priv,
+ processor_set_name_array_t *processor_sets,
+ mach_msg_type_number_t *processor_setsCnt
+);
+
+/* Routine host_processor_set_priv */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_processor_set_priv
+(
+ host_priv_t host_priv,
+ processor_set_name_t set_name,
+ processor_set_t *set
+);
+
+/* Routine host_set_UNDServer */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_set_UNDServer
+(
+ host_priv_t host,
+ UNDServerRef server
+);
+
+/* Routine host_get_UNDServer */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_UNDServer
+(
+ host_priv_t host,
+ UNDServerRef *server
+);
+
+/* Routine kext_request */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t kext_request
+(
+ host_priv_t host_priv,
+ uint32_t user_log_flags,
+ vm_offset_t request_data,
+ mach_msg_type_number_t request_dataCnt,
+ vm_offset_t *response_data,
+ mach_msg_type_number_t *response_dataCnt,
+ vm_offset_t *log_data,
+ mach_msg_type_number_t *log_dataCnt,
+ kern_return_t *op_result
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__host_priv_subsystem__defined
+#define __Request__host_priv_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_get_boot_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int options;
+ } __Request__host_reboot_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ host_flavor_t flavor;
+ mach_msg_type_number_t host_info_outCnt;
+ } __Request__host_priv_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t default_manager;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ memory_object_cluster_size_t cluster_size;
+ } __Request__host_default_memory_manager_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t task;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_prot_t desired_access;
+ } __Request__vm_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t thread;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ boolean_t wired;
+ } __Request__thread_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t task;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ int flags;
+ } __Request__vm_allocate_cpm_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_processors_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ clock_id_t clock_id;
+ } __Request__host_get_clock_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t info;
+ } __Request__kmod_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kmod_t module;
+ } __Request__kmod_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t data;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ kmod_t module;
+ kmod_control_flavor_t flavor;
+ mach_msg_type_number_t dataCnt;
+ } __Request__kmod_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int node;
+ int which;
+ } __Request__host_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int which;
+ } __Request__host_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__host_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ } __Request__host_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__host_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t task;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_vm_address_t address;
+ mach_vm_size_t size;
+ vm_prot_t desired_access;
+ } __Request__mach_vm_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_processor_sets_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t set_name;
+ /* end of the kernel processed data */
+ } __Request__host_processor_set_priv_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t server;
+ /* end of the kernel processed data */
+ } __Request__host_set_UNDServer_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_get_UNDServer_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t request_data;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ uint32_t user_log_flags;
+ mach_msg_type_number_t request_dataCnt;
+ } __Request__kext_request_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__host_priv_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__host_priv_subsystem__defined
+#define __RequestUnion__host_priv_subsystem__defined
+union __RequestUnion__host_priv_subsystem {
+ __Request__host_get_boot_info_t Request_host_get_boot_info;
+ __Request__host_reboot_t Request_host_reboot;
+ __Request__host_priv_statistics_t Request_host_priv_statistics;
+ __Request__host_default_memory_manager_t Request_host_default_memory_manager;
+ __Request__vm_wire_t Request_vm_wire;
+ __Request__thread_wire_t Request_thread_wire;
+ __Request__vm_allocate_cpm_t Request_vm_allocate_cpm;
+ __Request__host_processors_t Request_host_processors;
+ __Request__host_get_clock_control_t Request_host_get_clock_control;
+ __Request__kmod_create_t Request_kmod_create;
+ __Request__kmod_destroy_t Request_kmod_destroy;
+ __Request__kmod_control_t Request_kmod_control;
+ __Request__host_get_special_port_t Request_host_get_special_port;
+ __Request__host_set_special_port_t Request_host_set_special_port;
+ __Request__host_set_exception_ports_t Request_host_set_exception_ports;
+ __Request__host_get_exception_ports_t Request_host_get_exception_ports;
+ __Request__host_swap_exception_ports_t Request_host_swap_exception_ports;
+ __Request__mach_vm_wire_t Request_mach_vm_wire;
+ __Request__host_processor_sets_t Request_host_processor_sets;
+ __Request__host_processor_set_priv_t Request_host_processor_set_priv;
+ __Request__host_set_UNDServer_t Request_host_set_UNDServer;
+ __Request__host_get_UNDServer_t Request_host_get_UNDServer;
+ __Request__kext_request_t Request_kext_request;
+};
+#endif /* !__RequestUnion__host_priv_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__host_priv_subsystem__defined
+#define __Reply__host_priv_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t boot_infoOffset; /* MiG doesn't use it */
+ mach_msg_type_number_t boot_infoCnt;
+ char boot_info[4096];
+ } __Reply__host_get_boot_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_reboot_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t host_info_outCnt;
+ integer_t host_info_out[68];
+ } __Reply__host_priv_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t default_manager;
+ /* end of the kernel processed data */
+ } __Reply__host_default_memory_manager_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t address;
+ } __Reply__vm_allocate_cpm_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t out_processor_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t out_processor_listCnt;
+ } __Reply__host_processors_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t clock_ctrl;
+ /* end of the kernel processed data */
+ } __Reply__host_get_clock_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ kmod_t module;
+ } __Reply__kmod_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__kmod_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t data;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dataCnt;
+ } __Reply__kmod_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t port;
+ /* end of the kernel processed data */
+ } __Reply__host_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__host_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlerss[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__host_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_vm_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t processor_sets;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t processor_setsCnt;
+ } __Reply__host_processor_sets_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t set;
+ /* end of the kernel processed data */
+ } __Reply__host_processor_set_priv_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_set_UNDServer_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t server;
+ /* end of the kernel processed data */
+ } __Reply__host_get_UNDServer_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t response_data;
+ mach_msg_ool_descriptor_t log_data;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t response_dataCnt;
+ mach_msg_type_number_t log_dataCnt;
+ kern_return_t op_result;
+ } __Reply__kext_request_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__host_priv_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__host_priv_subsystem__defined
+#define __ReplyUnion__host_priv_subsystem__defined
+union __ReplyUnion__host_priv_subsystem {
+ __Reply__host_get_boot_info_t Reply_host_get_boot_info;
+ __Reply__host_reboot_t Reply_host_reboot;
+ __Reply__host_priv_statistics_t Reply_host_priv_statistics;
+ __Reply__host_default_memory_manager_t Reply_host_default_memory_manager;
+ __Reply__vm_wire_t Reply_vm_wire;
+ __Reply__thread_wire_t Reply_thread_wire;
+ __Reply__vm_allocate_cpm_t Reply_vm_allocate_cpm;
+ __Reply__host_processors_t Reply_host_processors;
+ __Reply__host_get_clock_control_t Reply_host_get_clock_control;
+ __Reply__kmod_create_t Reply_kmod_create;
+ __Reply__kmod_destroy_t Reply_kmod_destroy;
+ __Reply__kmod_control_t Reply_kmod_control;
+ __Reply__host_get_special_port_t Reply_host_get_special_port;
+ __Reply__host_set_special_port_t Reply_host_set_special_port;
+ __Reply__host_set_exception_ports_t Reply_host_set_exception_ports;
+ __Reply__host_get_exception_ports_t Reply_host_get_exception_ports;
+ __Reply__host_swap_exception_ports_t Reply_host_swap_exception_ports;
+ __Reply__mach_vm_wire_t Reply_mach_vm_wire;
+ __Reply__host_processor_sets_t Reply_host_processor_sets;
+ __Reply__host_processor_set_priv_t Reply_host_processor_set_priv;
+ __Reply__host_set_UNDServer_t Reply_host_set_UNDServer;
+ __Reply__host_get_UNDServer_t Reply_host_get_UNDServer;
+ __Reply__kext_request_t Reply_kext_request;
+};
+#endif /* !__RequestUnion__host_priv_subsystem__defined */
+
+#ifndef subsystem_to_name_map_host_priv
+#define subsystem_to_name_map_host_priv \
+ { "host_get_boot_info", 400 },\
+ { "host_reboot", 401 },\
+ { "host_priv_statistics", 402 },\
+ { "host_default_memory_manager", 403 },\
+ { "vm_wire", 404 },\
+ { "thread_wire", 405 },\
+ { "vm_allocate_cpm", 406 },\
+ { "host_processors", 407 },\
+ { "host_get_clock_control", 408 },\
+ { "kmod_create", 409 },\
+ { "kmod_destroy", 410 },\
+ { "kmod_control", 411 },\
+ { "host_get_special_port", 412 },\
+ { "host_set_special_port", 413 },\
+ { "host_set_exception_ports", 414 },\
+ { "host_get_exception_ports", 415 },\
+ { "host_swap_exception_ports", 416 },\
+ { "mach_vm_wire", 418 },\
+ { "host_processor_sets", 419 },\
+ { "host_processor_set_priv", 420 },\
+ { "host_set_UNDServer", 423 },\
+ { "host_get_UNDServer", 424 },\
+ { "kext_request", 425 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _host_priv_user_ */
lib/libc/include/x86_64-macos-gnu/mach/host_security.h
@@ -0,0 +1,221 @@
+#ifndef _host_security_user_
+#define _host_security_user_
+
+/* Module host_security */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef host_security_MSG_COUNT
+#define host_security_MSG_COUNT 2
+#endif /* host_security_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine host_security_create_task_token */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_security_create_task_token
+(
+ host_security_t host_security,
+ task_t parent_task,
+ security_token_t sec_token,
+ audit_token_t audit_token,
+ host_t host,
+ ledger_array_t ledgers,
+ mach_msg_type_number_t ledgersCnt,
+ boolean_t inherit_memory,
+ task_t *child_task
+);
+
+/* Routine host_security_set_task_token */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_security_set_task_token
+(
+ host_security_t host_security,
+ task_t target_task,
+ security_token_t sec_token,
+ audit_token_t audit_token,
+ host_t host
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__host_security_subsystem__defined
+#define __Request__host_security_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t parent_task;
+ mach_msg_port_descriptor_t host;
+ mach_msg_ool_ports_descriptor_t ledgers;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ security_token_t sec_token;
+ audit_token_t audit_token;
+ mach_msg_type_number_t ledgersCnt;
+ boolean_t inherit_memory;
+ } __Request__host_security_create_task_token_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t target_task;
+ mach_msg_port_descriptor_t host;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ security_token_t sec_token;
+ audit_token_t audit_token;
+ } __Request__host_security_set_task_token_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__host_security_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__host_security_subsystem__defined
+#define __RequestUnion__host_security_subsystem__defined
+union __RequestUnion__host_security_subsystem {
+ __Request__host_security_create_task_token_t Request_host_security_create_task_token;
+ __Request__host_security_set_task_token_t Request_host_security_set_task_token;
+};
+#endif /* !__RequestUnion__host_security_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__host_security_subsystem__defined
+#define __Reply__host_security_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_task;
+ /* end of the kernel processed data */
+ } __Reply__host_security_create_task_token_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_security_set_task_token_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__host_security_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__host_security_subsystem__defined
+#define __ReplyUnion__host_security_subsystem__defined
+union __ReplyUnion__host_security_subsystem {
+ __Reply__host_security_create_task_token_t Reply_host_security_create_task_token;
+ __Reply__host_security_set_task_token_t Reply_host_security_set_task_token;
+};
+#endif /* !__RequestUnion__host_security_subsystem__defined */
+
+#ifndef subsystem_to_name_map_host_security
+#define subsystem_to_name_map_host_security \
+ { "host_security_create_task_token", 600 },\
+ { "host_security_set_task_token", 601 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _host_security_user_ */
lib/libc/include/x86_64-macos-gnu/mach/host_special_ports.h
@@ -0,0 +1,281 @@
+/*
+ * Copyright (c) 2003 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 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/host_special_ports.h
+ *
+ * Defines codes for access to host-wide special ports.
+ */
+
+#ifndef _MACH_HOST_SPECIAL_PORTS_H_
+#define _MACH_HOST_SPECIAL_PORTS_H_
+
+/*
+ * Cannot be set or gotten from user space
+ */
+#define HOST_SECURITY_PORT 0
+
+#define HOST_MIN_SPECIAL_PORT HOST_SECURITY_PORT
+
+/*
+ * Always provided by kernel (cannot be set from user-space).
+ */
+#define HOST_PORT 1
+#define HOST_PRIV_PORT 2
+#define HOST_IO_MASTER_PORT 3
+#define HOST_MAX_SPECIAL_KERNEL_PORT 7 /* room to grow */
+
+#define HOST_LAST_SPECIAL_KERNEL_PORT HOST_IO_MASTER_PORT
+
+/*
+ * Not provided by kernel
+ */
+#define HOST_DYNAMIC_PAGER_PORT (1 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_AUDIT_CONTROL_PORT (2 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_USER_NOTIFICATION_PORT (3 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_AUTOMOUNTD_PORT (4 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_LOCKD_PORT (5 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_KTRACE_BACKGROUND_PORT (6 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_SEATBELT_PORT (7 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_KEXTD_PORT (8 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_LAUNCHCTL_PORT (9 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_UNFREED_PORT (10 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_AMFID_PORT (11 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_GSSD_PORT (12 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_TELEMETRY_PORT (13 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_ATM_NOTIFICATION_PORT (14 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_COALITION_PORT (15 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_SYSDIAGNOSE_PORT (16 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_XPC_EXCEPTION_PORT (17 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_CONTAINERD_PORT (18 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_NODE_PORT (19 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_RESOURCE_NOTIFY_PORT (20 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_CLOSURED_PORT (21 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_SYSPOLICYD_PORT (22 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_FILECOORDINATIOND_PORT (23 + HOST_MAX_SPECIAL_KERNEL_PORT)
+#define HOST_FAIRPLAYD_PORT (24 + HOST_MAX_SPECIAL_KERNEL_PORT)
+
+#define HOST_MAX_SPECIAL_PORT HOST_FAIRPLAYD_PORT
+/* MAX = last since rdar://35861175 */
+
+/* obsolete name */
+#define HOST_CHUD_PORT HOST_LAUNCHCTL_PORT
+
+/*
+ * Special node identifier to always represent the local node.
+ */
+#define HOST_LOCAL_NODE -1
+
+/*
+ * Definitions for ease of use.
+ *
+ * In the get call, the host parameter can be any host, but will generally
+ * be the local node host port. In the set call, the host must the per-node
+ * host port for the node being affected.
+ */
+#define host_get_host_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_PORT, (port)))
+#define host_set_host_port(host, port) (KERN_INVALID_ARGUMENT)
+
+#define host_get_host_priv_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_PRIV_PORT, (port)))
+#define host_set_host_priv_port(host, port) (KERN_INVALID_ARGUMENT)
+
+#define host_get_io_master_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_IO_MASTER_PORT, (port)))
+#define host_set_io_master_port(host, port) (KERN_INVALID_ARGUMENT)
+
+/*
+ * User-settable special ports.
+ */
+#define host_get_dynamic_pager_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_DYNAMIC_PAGER_PORT, (port)))
+#define host_set_dynamic_pager_port(host, port) \
+ (host_set_special_port((host), HOST_DYNAMIC_PAGER_PORT, (port)))
+
+#define host_get_audit_control_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_AUDIT_CONTROL_PORT, (port)))
+#define host_set_audit_control_port(host, port) \
+ (host_set_special_port((host), HOST_AUDIT_CONTROL_PORT, (port)))
+
+#define host_get_user_notification_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_USER_NOTIFICATION_PORT, (port)))
+#define host_set_user_notification_port(host, port) \
+ (host_set_special_port((host), HOST_USER_NOTIFICATION_PORT, (port)))
+
+#define host_get_automountd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_AUTOMOUNTD_PORT, (port)))
+#define host_set_automountd_port(host, port) \
+ (host_set_special_port((host), HOST_AUTOMOUNTD_PORT, (port)))
+
+#define host_get_lockd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_LOCKD_PORT, (port)))
+#define host_set_lockd_port(host, port) \
+ (host_set_special_port((host), HOST_LOCKD_PORT, (port)))
+
+#define host_get_ktrace_background_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_KTRACE_BACKGROUND_PORT, (port)))
+#define host_set_ktrace_background_port(host, port) \
+ (host_set_special_port((host), HOST_KTRACE_BACKGROUND_PORT, (port)))
+
+#define host_get_kextd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_KEXTD_PORT, (port)))
+#define host_set_kextd_port(host, port) \
+ (host_set_special_port((host), HOST_KEXTD_PORT, (port)))
+
+#define host_get_launchctl_port(host, port) \
+ (host_get_special_port((host), HOST_LOCAL_NODE, HOST_LAUNCHCTL_PORT, \
+ (port)))
+#define host_set_launchctl_port(host, port) \
+ (host_set_special_port((host), HOST_LAUNCHCTL_PORT, (port)))
+
+#define host_get_chud_port(host, port) host_get_launchctl_port(host, port)
+#define host_set_chud_port(host, port) host_set_launchctl_port(host, port)
+
+#define host_get_unfreed_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_UNFREED_PORT, (port)))
+#define host_set_unfreed_port(host, port) \
+ (host_set_special_port((host), HOST_UNFREED_PORT, (port)))
+
+#define host_get_amfid_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_AMFID_PORT, (port)))
+#define host_set_amfid_port(host, port) \
+ (host_set_special_port((host), HOST_AMFID_PORT, (port)))
+
+#define host_get_gssd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_GSSD_PORT, (port)))
+#define host_set_gssd_port(host, port) \
+ (host_set_special_port((host), HOST_GSSD_PORT, (port)))
+
+#define host_get_telemetry_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_TELEMETRY_PORT, (port)))
+#define host_set_telemetry_port(host, port) \
+ (host_set_special_port((host), HOST_TELEMETRY_PORT, (port)))
+
+#define host_get_atm_notification_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_ATM_NOTIFICATION_PORT, (port)))
+#define host_set_atm_notification_port(host, port) \
+ (host_set_special_port((host), HOST_ATM_NOTIFICATION_PORT, (port)))
+
+#define host_get_coalition_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_COALITION_PORT, (port)))
+#define host_set_coalition_port(host, port) \
+ (host_set_special_port((host), HOST_COALITION_PORT, (port)))
+
+#define host_get_sysdiagnose_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_SYSDIAGNOSE_PORT, (port)))
+#define host_set_sysdiagnose_port(host, port) \
+ (host_set_special_port((host), HOST_SYSDIAGNOSE_PORT, (port)))
+
+#define host_get_container_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_CONTAINERD_PORT, (port)))
+#define host_set_container_port(host, port) \
+ (host_set_special_port((host), HOST_CONTAINERD_PORT, (port)))
+
+#define host_get_node_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_NODE_PORT, (port)))
+#define host_set_node_port(host, port) \
+ (host_set_special_port((host), HOST_NODE_PORT, (port)))
+
+#define host_get_closured_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_CLOSURED_PORT, (port)))
+#define host_set_closured_port(host, port) \
+ (host_set_special_port((host), HOST_CLOSURED_PORT, (port)))
+
+#define host_get_syspolicyd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_SYSPOLICYD_PORT, (port)))
+#define host_set_syspolicyd_port(host, port) \
+ (host_set_special_port((host), HOST_SYSPOLICYD_PORT, (port)))
+
+#define host_get_filecoordinationd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_FILECOORDINATIOND_PORT, (port)))
+#define host_set_filecoordinationd_port(host, port) \
+ (host_set_special_port((host), HOST_FILECOORDINATIOND_PORT, (port)))
+
+#define host_get_fairplayd_port(host, port) \
+ (host_get_special_port((host), \
+ HOST_LOCAL_NODE, HOST_FAIRPLAYD_PORT, (port)))
+#define host_set_fairplayd_port(host, port) \
+ (host_set_special_port((host), HOST_FAIRPLAYD_PORT, (port)))
+
+/* HOST_RESOURCE_NOTIFY_PORT doesn't #defines these conveniences.
+ * All lookups go through send_resource_violation()
+ */
+
+#endif /* _MACH_HOST_SPECIAL_PORTS_H_ */
lib/libc/include/x86_64-macos-gnu/mach/kmod.h
@@ -0,0 +1,180 @@
+/*
+ * 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@
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 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.
+ */
+
+#ifndef _MACH_KMOD_H_
+#define _MACH_KMOD_H_
+
+#include <mach/kern_return.h>
+#include <mach/mach_types.h>
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+#if PRAGMA_MARK
+#pragma mark Basic macros & typedefs
+#endif
+/***********************************************************************
+* Basic macros & typedefs
+***********************************************************************/
+#define KMOD_MAX_NAME 64
+
+#define KMOD_RETURN_SUCCESS KERN_SUCCESS
+#define KMOD_RETURN_FAILURE KERN_FAILURE
+
+typedef int kmod_t;
+
+struct kmod_info;
+typedef kern_return_t kmod_start_func_t(struct kmod_info * ki, void * data);
+typedef kern_return_t kmod_stop_func_t(struct kmod_info * ki, void * data);
+
+#if PRAGMA_MARK
+#pragma mark Structure definitions
+#endif
+/***********************************************************************
+* Structure definitions
+*
+* All structures must be #pragma pack(4).
+***********************************************************************/
+#pragma pack(push, 4)
+
+/* Run-time struct only; never saved to a file */
+typedef struct kmod_reference {
+ struct kmod_reference * next;
+ struct kmod_info * info;
+} kmod_reference_t;
+
+/***********************************************************************
+* Warning: Any changes to the kmod_info structure affect the
+* KMOD_..._DECL macros below.
+***********************************************************************/
+
+/* The kmod_info_t structure is only safe to use inside the running
+ * kernel. If you need to work with a kmod_info_t structure outside
+ * the kernel, please use the compatibility definitions below.
+ */
+typedef struct kmod_info {
+ struct kmod_info * next;
+ int32_t info_version; // version of this structure
+ uint32_t id;
+ char name[KMOD_MAX_NAME];
+ char version[KMOD_MAX_NAME];
+ int32_t reference_count; // # linkage refs to this
+ kmod_reference_t * reference_list; // who this refs (links on)
+ vm_address_t address; // starting address
+ vm_size_t size; // total size
+ vm_size_t hdr_size; // unwired hdr size
+ kmod_start_func_t * start;
+ kmod_stop_func_t * stop;
+} kmod_info_t;
+
+/* A compatibility definition of kmod_info_t for 32-bit kexts.
+ */
+typedef struct kmod_info_32_v1 {
+ uint32_t next_addr;
+ int32_t info_version;
+ uint32_t id;
+ uint8_t name[KMOD_MAX_NAME];
+ uint8_t version[KMOD_MAX_NAME];
+ int32_t reference_count;
+ uint32_t reference_list_addr;
+ uint32_t address;
+ uint32_t size;
+ uint32_t hdr_size;
+ uint32_t start_addr;
+ uint32_t stop_addr;
+} kmod_info_32_v1_t;
+
+/* A compatibility definition of kmod_info_t for 64-bit kexts.
+ */
+typedef struct kmod_info_64_v1 {
+ uint64_t next_addr;
+ int32_t info_version;
+ uint32_t id;
+ uint8_t name[KMOD_MAX_NAME];
+ uint8_t version[KMOD_MAX_NAME];
+ int32_t reference_count;
+ uint64_t reference_list_addr;
+ uint64_t address;
+ uint64_t size;
+ uint64_t hdr_size;
+ uint64_t start_addr;
+ uint64_t stop_addr;
+} kmod_info_64_v1_t;
+
+#pragma pack(pop)
+
+#if PRAGMA_MARK
+#pragma mark Kmod structure declaration macros
+#endif
+/***********************************************************************
+* Kmod structure declaration macros
+***********************************************************************/
+#define KMOD_INFO_NAME kmod_info
+#define KMOD_INFO_VERSION 1
+
+#define KMOD_DECL(name, version) \
+ static kmod_start_func_t name ## _module_start; \
+ static kmod_stop_func_t name ## _module_stop; \
+ kmod_info_t KMOD_INFO_NAME = { 0, KMOD_INFO_VERSION, -1U, \
+ { #name }, { version }, -1, 0, 0, 0, 0, \
+ name ## _module_start, \
+ name ## _module_stop };
+
+#define KMOD_EXPLICIT_DECL(name, version, start, stop) \
+ kmod_info_t KMOD_INFO_NAME = { 0, KMOD_INFO_VERSION, -1U, \
+ { #name }, { version }, -1, 0, 0, 0, 0, \
+ start, stop };
+
+#if PRAGMA_MARK
+#pragma mark Kernel private declarations
+#endif
+/***********************************************************************
+* Kernel private declarations.
+***********************************************************************/
+
+
+#if PRAGMA_MARK
+#pragma mark Obsolete kmod stuff
+#endif
+/***********************************************************************
+* These 3 should be dropped but they're referenced by MIG declarations.
+***********************************************************************/
+typedef void * kmod_args_t;
+typedef int kmod_control_flavor_t;
+typedef kmod_info_t * kmod_info_array_t;
+
+__END_DECLS
+
+#endif /* _MACH_KMOD_H_ */
lib/libc/include/x86_64-macos-gnu/mach/lock_set.h
@@ -0,0 +1,350 @@
+#ifndef _lock_set_user_
+#define _lock_set_user_
+
+/* Module lock_set */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef lock_set_MSG_COUNT
+#define lock_set_MSG_COUNT 6
+#endif /* lock_set_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine lock_acquire */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_acquire
+(
+ lock_set_t lock_set,
+ int lock_id
+);
+
+/* Routine lock_release */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_release
+(
+ lock_set_t lock_set,
+ int lock_id
+);
+
+/* Routine lock_try */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_try
+(
+ lock_set_t lock_set,
+ int lock_id
+);
+
+/* Routine lock_make_stable */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_make_stable
+(
+ lock_set_t lock_set,
+ int lock_id
+);
+
+/* Routine lock_handoff */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_handoff
+(
+ lock_set_t lock_set,
+ int lock_id
+);
+
+/* Routine lock_handoff_accept */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_handoff_accept
+(
+ lock_set_t lock_set,
+ int lock_id
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__lock_set_subsystem__defined
+#define __Request__lock_set_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int lock_id;
+ } __Request__lock_acquire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int lock_id;
+ } __Request__lock_release_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int lock_id;
+ } __Request__lock_try_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int lock_id;
+ } __Request__lock_make_stable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int lock_id;
+ } __Request__lock_handoff_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int lock_id;
+ } __Request__lock_handoff_accept_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__lock_set_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__lock_set_subsystem__defined
+#define __RequestUnion__lock_set_subsystem__defined
+union __RequestUnion__lock_set_subsystem {
+ __Request__lock_acquire_t Request_lock_acquire;
+ __Request__lock_release_t Request_lock_release;
+ __Request__lock_try_t Request_lock_try;
+ __Request__lock_make_stable_t Request_lock_make_stable;
+ __Request__lock_handoff_t Request_lock_handoff;
+ __Request__lock_handoff_accept_t Request_lock_handoff_accept;
+};
+#endif /* !__RequestUnion__lock_set_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__lock_set_subsystem__defined
+#define __Reply__lock_set_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_acquire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_release_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_try_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_make_stable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_handoff_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_handoff_accept_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__lock_set_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__lock_set_subsystem__defined
+#define __ReplyUnion__lock_set_subsystem__defined
+union __ReplyUnion__lock_set_subsystem {
+ __Reply__lock_acquire_t Reply_lock_acquire;
+ __Reply__lock_release_t Reply_lock_release;
+ __Reply__lock_try_t Reply_lock_try;
+ __Reply__lock_make_stable_t Reply_lock_make_stable;
+ __Reply__lock_handoff_t Reply_lock_handoff;
+ __Reply__lock_handoff_accept_t Reply_lock_handoff_accept;
+};
+#endif /* !__RequestUnion__lock_set_subsystem__defined */
+
+#ifndef subsystem_to_name_map_lock_set
+#define subsystem_to_name_map_lock_set \
+ { "lock_acquire", 617000 },\
+ { "lock_release", 617001 },\
+ { "lock_try", 617002 },\
+ { "lock_make_stable", 617003 },\
+ { "lock_handoff", 617004 },\
+ { "lock_handoff_accept", 617005 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _lock_set_user_ */
lib/libc/include/x86_64-macos-gnu/mach/mach.h
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 1999-2014 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 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.
+ */
+
+/*
+ * Includes all the types that a normal user
+ * of Mach programs should need
+ */
+
+#ifndef _MACH_H_
+#define _MACH_H_
+
+#define __MACH30__
+#define MACH_IPC_FLAVOR UNTYPED
+
+#include <mach/std_types.h>
+#include <mach/mach_types.h>
+#include <mach/mach_interface.h>
+#include <mach/mach_port.h>
+#include <mach/mach_init.h>
+#include <mach/mach_host.h>
+#include <mach/thread_switch.h>
+
+#include <mach/rpc.h> /* for compatibility only */
+#include <mach/mig.h>
+
+#include <mach/mig_errors.h>
+#include <mach/mach_error.h>
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+/*
+ * Standard prototypes
+ */
+extern void panic_init(mach_port_t);
+extern void panic(const char *, ...);
+
+extern void safe_gets(char *,
+ char *,
+ int);
+
+extern void slot_name(cpu_type_t,
+ cpu_subtype_t,
+ char **,
+ char **);
+
+extern void mig_reply_setup(mach_msg_header_t *,
+ mach_msg_header_t *);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern void mach_msg_destroy(mach_msg_header_t *);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg_receive(mach_msg_header_t *);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg_send(mach_msg_header_t *);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg_server_once(boolean_t (*)
+ (mach_msg_header_t *,
+ mach_msg_header_t *),
+ mach_msg_size_t,
+ mach_port_t,
+ mach_msg_options_t);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg_server(boolean_t (*)
+ (mach_msg_header_t *,
+ mach_msg_header_t *),
+ mach_msg_size_t,
+ mach_port_t,
+ mach_msg_options_t);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg_server_importance(boolean_t (*)
+ (mach_msg_header_t *,
+ mach_msg_header_t *),
+ mach_msg_size_t,
+ mach_port_t,
+ mach_msg_options_t);
+
+/*
+ * Prototypes for compatibility
+ */
+extern kern_return_t clock_get_res(mach_port_t,
+ clock_res_t *);
+extern kern_return_t clock_set_res(mach_port_t,
+ clock_res_t);
+
+extern kern_return_t clock_sleep(mach_port_t,
+ int,
+ mach_timespec_t,
+ mach_timespec_t *);
+
+/*!
+ * @group voucher_mach_msg Prototypes
+ */
+
+#define VOUCHER_MACH_MSG_API_VERSION 20140205
+
+/*!
+ * @typedef voucher_mach_msg_state_t
+ *
+ * @abstract
+ * Opaque object encapsulating state changed by voucher_mach_msg_adopt().
+ */
+typedef struct voucher_mach_msg_state_s *voucher_mach_msg_state_t;
+
+/*!
+ * @const VOUCHER_MACH_MSG_STATE_UNCHANGED
+ *
+ * @discussion
+ * Constant indicating no state change occurred.
+ */
+#define VOUCHER_MACH_MSG_STATE_UNCHANGED ((voucher_mach_msg_state_t)~0ul)
+
+/*!
+ * @function voucher_mach_msg_set
+ *
+ * @abstract
+ * Change specified message header to contain current mach voucher with a
+ * COPY_SEND disposition.
+ * Does not change message if it already has non-zero MACH_MSGH_BITS_VOUCHER.
+ *
+ * @discussion
+ * Borrows reference to current thread voucher so message should be sent
+ * immediately (without intervening calls that might change that voucher).
+ *
+ * @param msg
+ * The message to modify.
+ *
+ * @result
+ * True if header was changed.
+ */
+extern boolean_t voucher_mach_msg_set(mach_msg_header_t *msg);
+
+/*!
+ * @function voucher_mach_msg_clear
+ *
+ * @abstract
+ * Removes changes made to specified message header by voucher_mach_msg_set()
+ * and any mach_msg() send operations (successful or not).
+ * If the message is not needed further, mach_msg_destroy() should be called
+ * instead.
+ *
+ * @discussion
+ * Not intended to be called if voucher_mach_msg_set() returned false.
+ * Releases reference to message mach voucher if an extra reference was
+ * acquired due to an unsuccessful send operation (pseudo-receive).
+ *
+ * @param msg
+ * The message to modify.
+ */
+extern void voucher_mach_msg_clear(mach_msg_header_t *msg);
+
+/*!
+ * @function voucher_mach_msg_adopt
+ *
+ * @abstract
+ * Adopt the voucher contained in the specified message on the current thread
+ * and return the previous thread voucher state.
+ *
+ * @discussion
+ * Ownership of the mach voucher in the message is transferred to the current
+ * thread and the message header voucher fields are cleared.
+ *
+ * @param msg
+ * The message to query and modify.
+ *
+ * @result
+ * The previous thread voucher state or VOUCHER_MACH_MSG_STATE_UNCHANGED if no
+ * state change occurred.
+ */
+extern voucher_mach_msg_state_t voucher_mach_msg_adopt(mach_msg_header_t *msg);
+
+/*!
+ * @function voucher_mach_msg_revert
+ *
+ * @abstract
+ * Restore thread voucher state previously modified by voucher_mach_msg_adopt().
+ *
+ * @discussion
+ * Current thread voucher reference is released.
+ * No change to thread voucher state if passed VOUCHER_MACH_MSG_STATE_UNCHANGED.
+ *
+ * @param state
+ * The thread voucher state to restore.
+ */
+
+extern void voucher_mach_msg_revert(voucher_mach_msg_state_t state);
+
+__END_DECLS
+
+#endif /* _MACH_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_error.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 1999 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 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
+ * 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 the
+ * rights to redistribute these changes.
+ */
+
+/*
+ * File: mach_error.h
+ * Author: Douglas Orr, Carnegie Mellon University
+ * Date: Mar. 1988
+ *
+ * Definitions of routines in mach_error.c
+ */
+
+#ifndef _MACH_ERROR_
+#define _MACH_ERROR_ 1
+
+#include <mach/error.h>
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+char *mach_error_string(
+/*
+ * Returns a string appropriate to the error argument given
+ */
+ mach_error_t error_value
+ );
+
+void mach_error(
+/*
+ * Prints an appropriate message on the standard error stream
+ */
+ const char *str,
+ mach_error_t error_value
+ );
+
+char *mach_error_type(
+/*
+ * Returns a string with the error system, subsystem and code
+ */
+ mach_error_t error_value
+ );
+__END_DECLS
+
+#endif /* _MACH_ERROR_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_host.h
@@ -0,0 +1,1295 @@
+#ifndef _mach_host_user_
+#define _mach_host_user_
+
+/* Module mach_host */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef mach_host_MSG_COUNT
+#define mach_host_MSG_COUNT 35
+#endif /* mach_host_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+#include <mach/mach_init.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine host_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_info
+(
+ host_t host,
+ host_flavor_t flavor,
+ host_info_t host_info_out,
+ mach_msg_type_number_t *host_info_outCnt
+);
+
+/* Routine host_kernel_version */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_kernel_version
+(
+ host_t host,
+ kernel_version_t kernel_version
+);
+
+/* Routine _host_page_size */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t _host_page_size
+(
+ host_t host,
+ vm_size_t *out_page_size
+);
+
+/* Routine mach_memory_object_memory_entry */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_memory_object_memory_entry
+(
+ host_t host,
+ boolean_t internal,
+ vm_size_t size,
+ vm_prot_t permission,
+ memory_object_t pager,
+ mach_port_t *entry_handle
+);
+
+/* Routine host_processor_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_processor_info
+(
+ host_t host,
+ processor_flavor_t flavor,
+ natural_t *out_processor_count,
+ processor_info_array_t *out_processor_info,
+ mach_msg_type_number_t *out_processor_infoCnt
+);
+
+/* Routine host_get_io_master */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_io_master
+(
+ host_t host,
+ io_master_t *io_master
+);
+
+/* Routine host_get_clock_service */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_clock_service
+(
+ host_t host,
+ clock_id_t clock_id,
+ clock_serv_t *clock_serv
+);
+
+/* Routine kmod_get_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t kmod_get_info
+(
+ host_t host,
+ kmod_args_t *modules,
+ mach_msg_type_number_t *modulesCnt
+);
+
+/* Routine host_virtual_physical_table_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_virtual_physical_table_info
+(
+ host_t host,
+ hash_info_bucket_array_t *info,
+ mach_msg_type_number_t *infoCnt
+);
+
+/* Routine processor_set_default */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_default
+(
+ host_t host,
+ processor_set_name_t *default_set
+);
+
+/* Routine processor_set_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_create
+(
+ host_t host,
+ processor_set_t *new_set,
+ processor_set_name_t *new_name
+);
+
+/* Routine mach_memory_object_memory_entry_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_memory_object_memory_entry_64
+(
+ host_t host,
+ boolean_t internal,
+ memory_object_size_t size,
+ vm_prot_t permission,
+ memory_object_t pager,
+ mach_port_t *entry_handle
+);
+
+/* Routine host_statistics */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_statistics
+(
+ host_t host_priv,
+ host_flavor_t flavor,
+ host_info_t host_info_out,
+ mach_msg_type_number_t *host_info_outCnt
+);
+
+/* Routine host_request_notification */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_request_notification
+(
+ host_t host,
+ host_flavor_t notify_type,
+ mach_port_t notify_port
+);
+
+/* Routine host_lockgroup_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_lockgroup_info
+(
+ host_t host,
+ lockgroup_info_array_t *lockgroup_info,
+ mach_msg_type_number_t *lockgroup_infoCnt
+);
+
+/* Routine host_statistics64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_statistics64
+(
+ host_t host_priv,
+ host_flavor_t flavor,
+ host_info64_t host_info64_out,
+ mach_msg_type_number_t *host_info64_outCnt
+);
+
+/* Routine mach_zone_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_zone_info
+(
+ host_priv_t host,
+ mach_zone_name_array_t *names,
+ mach_msg_type_number_t *namesCnt,
+ mach_zone_info_array_t *info,
+ mach_msg_type_number_t *infoCnt
+);
+
+/* Routine host_create_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_create_mach_voucher
+(
+ host_t host,
+ mach_voucher_attr_raw_recipe_array_t recipes,
+ mach_msg_type_number_t recipesCnt,
+ ipc_voucher_t *voucher
+);
+
+/* Routine host_register_mach_voucher_attr_manager */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_register_mach_voucher_attr_manager
+(
+ host_t host,
+ mach_voucher_attr_manager_t attr_manager,
+ mach_voucher_attr_value_handle_t default_value,
+ mach_voucher_attr_key_t *new_key,
+ ipc_voucher_attr_control_t *new_attr_control
+);
+
+/* Routine host_register_well_known_mach_voucher_attr_manager */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_register_well_known_mach_voucher_attr_manager
+(
+ host_t host,
+ mach_voucher_attr_manager_t attr_manager,
+ mach_voucher_attr_value_handle_t default_value,
+ mach_voucher_attr_key_t key,
+ ipc_voucher_attr_control_t *new_attr_control
+);
+
+/* Routine host_set_atm_diagnostic_flag */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_set_atm_diagnostic_flag
+(
+ host_t host,
+ uint32_t diagnostic_flag
+);
+
+/* Routine host_get_atm_diagnostic_flag */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t host_get_atm_diagnostic_flag
+(
+ host_t host,
+ uint32_t *diagnostic_flag
+);
+
+/* Routine mach_memory_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_memory_info
+(
+ host_priv_t host,
+ mach_zone_name_array_t *names,
+ mach_msg_type_number_t *namesCnt,
+ mach_zone_info_array_t *info,
+ mach_msg_type_number_t *infoCnt,
+ mach_memory_info_array_t *memory_info,
+ mach_msg_type_number_t *memory_infoCnt
+);
+
+/* Routine host_set_multiuser_config_flags */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_set_multiuser_config_flags
+(
+ host_priv_t host_priv,
+ uint32_t multiuser_flags
+);
+
+/* Routine host_get_multiuser_config_flags */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_get_multiuser_config_flags
+(
+ host_t host,
+ uint32_t *multiuser_flags
+);
+
+/* Routine host_check_multiuser_mode */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t host_check_multiuser_mode
+(
+ host_t host,
+ uint32_t *multiuser_mode
+);
+
+/* Routine mach_zone_info_for_zone */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_zone_info_for_zone
+(
+ host_priv_t host,
+ mach_zone_name_t name,
+ mach_zone_info_t *info
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__mach_host_subsystem__defined
+#define __Request__mach_host_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ host_flavor_t flavor;
+ mach_msg_type_number_t host_info_outCnt;
+ } __Request__host_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_kernel_version_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request___host_page_size_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t pager;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ boolean_t internal;
+ vm_size_t size;
+ vm_prot_t permission;
+ } __Request__mach_memory_object_memory_entry_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ processor_flavor_t flavor;
+ } __Request__host_processor_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_get_io_master_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ clock_id_t clock_id;
+ } __Request__host_get_clock_service_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__kmod_get_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_virtual_physical_table_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t pager;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ boolean_t internal;
+ memory_object_size_t size;
+ vm_prot_t permission;
+ } __Request__mach_memory_object_memory_entry_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ host_flavor_t flavor;
+ mach_msg_type_number_t host_info_outCnt;
+ } __Request__host_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t notify_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ host_flavor_t notify_type;
+ } __Request__host_request_notification_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_lockgroup_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ host_flavor_t flavor;
+ mach_msg_type_number_t host_info64_outCnt;
+ } __Request__host_statistics64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_zone_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_msg_type_number_t recipesCnt;
+ uint8_t recipes[5120];
+ } __Request__host_create_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t attr_manager;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_voucher_attr_value_handle_t default_value;
+ } __Request__host_register_mach_voucher_attr_manager_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t attr_manager;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_voucher_attr_value_handle_t default_value;
+ mach_voucher_attr_key_t key;
+ } __Request__host_register_well_known_mach_voucher_attr_manager_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ uint32_t diagnostic_flag;
+ } __Request__host_set_atm_diagnostic_flag_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_get_atm_diagnostic_flag_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_memory_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ uint32_t multiuser_flags;
+ } __Request__host_set_multiuser_config_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_get_multiuser_config_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__host_check_multiuser_mode_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_zone_name_t name;
+ } __Request__mach_zone_info_for_zone_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__mach_host_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__mach_host_subsystem__defined
+#define __RequestUnion__mach_host_subsystem__defined
+union __RequestUnion__mach_host_subsystem {
+ __Request__host_info_t Request_host_info;
+ __Request__host_kernel_version_t Request_host_kernel_version;
+ __Request___host_page_size_t Request__host_page_size;
+ __Request__mach_memory_object_memory_entry_t Request_mach_memory_object_memory_entry;
+ __Request__host_processor_info_t Request_host_processor_info;
+ __Request__host_get_io_master_t Request_host_get_io_master;
+ __Request__host_get_clock_service_t Request_host_get_clock_service;
+ __Request__kmod_get_info_t Request_kmod_get_info;
+ __Request__host_virtual_physical_table_info_t Request_host_virtual_physical_table_info;
+ __Request__processor_set_default_t Request_processor_set_default;
+ __Request__processor_set_create_t Request_processor_set_create;
+ __Request__mach_memory_object_memory_entry_64_t Request_mach_memory_object_memory_entry_64;
+ __Request__host_statistics_t Request_host_statistics;
+ __Request__host_request_notification_t Request_host_request_notification;
+ __Request__host_lockgroup_info_t Request_host_lockgroup_info;
+ __Request__host_statistics64_t Request_host_statistics64;
+ __Request__mach_zone_info_t Request_mach_zone_info;
+ __Request__host_create_mach_voucher_t Request_host_create_mach_voucher;
+ __Request__host_register_mach_voucher_attr_manager_t Request_host_register_mach_voucher_attr_manager;
+ __Request__host_register_well_known_mach_voucher_attr_manager_t Request_host_register_well_known_mach_voucher_attr_manager;
+ __Request__host_set_atm_diagnostic_flag_t Request_host_set_atm_diagnostic_flag;
+ __Request__host_get_atm_diagnostic_flag_t Request_host_get_atm_diagnostic_flag;
+ __Request__mach_memory_info_t Request_mach_memory_info;
+ __Request__host_set_multiuser_config_flags_t Request_host_set_multiuser_config_flags;
+ __Request__host_get_multiuser_config_flags_t Request_host_get_multiuser_config_flags;
+ __Request__host_check_multiuser_mode_t Request_host_check_multiuser_mode;
+ __Request__mach_zone_info_for_zone_t Request_mach_zone_info_for_zone;
+};
+#endif /* !__RequestUnion__mach_host_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__mach_host_subsystem__defined
+#define __Reply__mach_host_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t host_info_outCnt;
+ integer_t host_info_out[68];
+ } __Reply__host_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t kernel_versionOffset; /* MiG doesn't use it */
+ mach_msg_type_number_t kernel_versionCnt;
+ char kernel_version[512];
+ } __Reply__host_kernel_version_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_size_t out_page_size;
+ } __Reply___host_page_size_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t entry_handle;
+ /* end of the kernel processed data */
+ } __Reply__mach_memory_object_memory_entry_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t out_processor_info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ natural_t out_processor_count;
+ mach_msg_type_number_t out_processor_infoCnt;
+ } __Reply__host_processor_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t io_master;
+ /* end of the kernel processed data */
+ } __Reply__host_get_io_master_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t clock_serv;
+ /* end of the kernel processed data */
+ } __Reply__host_get_clock_service_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t modules;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t modulesCnt;
+ } __Reply__kmod_get_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t infoCnt;
+ } __Reply__host_virtual_physical_table_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t default_set;
+ /* end of the kernel processed data */
+ } __Reply__processor_set_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_set;
+ mach_msg_port_descriptor_t new_name;
+ /* end of the kernel processed data */
+ } __Reply__processor_set_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t entry_handle;
+ /* end of the kernel processed data */
+ } __Reply__mach_memory_object_memory_entry_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t host_info_outCnt;
+ integer_t host_info_out[68];
+ } __Reply__host_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_request_notification_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t lockgroup_info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t lockgroup_infoCnt;
+ } __Reply__host_lockgroup_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t host_info64_outCnt;
+ integer_t host_info64_out[256];
+ } __Reply__host_statistics64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t names;
+ mach_msg_ool_descriptor_t info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t namesCnt;
+ mach_msg_type_number_t infoCnt;
+ } __Reply__mach_zone_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Reply__host_create_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_attr_control;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_voucher_attr_key_t new_key;
+ } __Reply__host_register_mach_voucher_attr_manager_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_attr_control;
+ /* end of the kernel processed data */
+ } __Reply__host_register_well_known_mach_voucher_attr_manager_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_set_atm_diagnostic_flag_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ uint32_t diagnostic_flag;
+ } __Reply__host_get_atm_diagnostic_flag_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t names;
+ mach_msg_ool_descriptor_t info;
+ mach_msg_ool_descriptor_t memory_info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t namesCnt;
+ mach_msg_type_number_t infoCnt;
+ mach_msg_type_number_t memory_infoCnt;
+ } __Reply__mach_memory_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__host_set_multiuser_config_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ uint32_t multiuser_flags;
+ } __Reply__host_get_multiuser_config_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ uint32_t multiuser_mode;
+ } __Reply__host_check_multiuser_mode_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_zone_info_t info;
+ } __Reply__mach_zone_info_for_zone_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__mach_host_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__mach_host_subsystem__defined
+#define __ReplyUnion__mach_host_subsystem__defined
+union __ReplyUnion__mach_host_subsystem {
+ __Reply__host_info_t Reply_host_info;
+ __Reply__host_kernel_version_t Reply_host_kernel_version;
+ __Reply___host_page_size_t Reply__host_page_size;
+ __Reply__mach_memory_object_memory_entry_t Reply_mach_memory_object_memory_entry;
+ __Reply__host_processor_info_t Reply_host_processor_info;
+ __Reply__host_get_io_master_t Reply_host_get_io_master;
+ __Reply__host_get_clock_service_t Reply_host_get_clock_service;
+ __Reply__kmod_get_info_t Reply_kmod_get_info;
+ __Reply__host_virtual_physical_table_info_t Reply_host_virtual_physical_table_info;
+ __Reply__processor_set_default_t Reply_processor_set_default;
+ __Reply__processor_set_create_t Reply_processor_set_create;
+ __Reply__mach_memory_object_memory_entry_64_t Reply_mach_memory_object_memory_entry_64;
+ __Reply__host_statistics_t Reply_host_statistics;
+ __Reply__host_request_notification_t Reply_host_request_notification;
+ __Reply__host_lockgroup_info_t Reply_host_lockgroup_info;
+ __Reply__host_statistics64_t Reply_host_statistics64;
+ __Reply__mach_zone_info_t Reply_mach_zone_info;
+ __Reply__host_create_mach_voucher_t Reply_host_create_mach_voucher;
+ __Reply__host_register_mach_voucher_attr_manager_t Reply_host_register_mach_voucher_attr_manager;
+ __Reply__host_register_well_known_mach_voucher_attr_manager_t Reply_host_register_well_known_mach_voucher_attr_manager;
+ __Reply__host_set_atm_diagnostic_flag_t Reply_host_set_atm_diagnostic_flag;
+ __Reply__host_get_atm_diagnostic_flag_t Reply_host_get_atm_diagnostic_flag;
+ __Reply__mach_memory_info_t Reply_mach_memory_info;
+ __Reply__host_set_multiuser_config_flags_t Reply_host_set_multiuser_config_flags;
+ __Reply__host_get_multiuser_config_flags_t Reply_host_get_multiuser_config_flags;
+ __Reply__host_check_multiuser_mode_t Reply_host_check_multiuser_mode;
+ __Reply__mach_zone_info_for_zone_t Reply_mach_zone_info_for_zone;
+};
+#endif /* !__RequestUnion__mach_host_subsystem__defined */
+
+#ifndef subsystem_to_name_map_mach_host
+#define subsystem_to_name_map_mach_host \
+ { "host_info", 200 },\
+ { "host_kernel_version", 201 },\
+ { "_host_page_size", 202 },\
+ { "mach_memory_object_memory_entry", 203 },\
+ { "host_processor_info", 204 },\
+ { "host_get_io_master", 205 },\
+ { "host_get_clock_service", 206 },\
+ { "kmod_get_info", 207 },\
+ { "host_virtual_physical_table_info", 209 },\
+ { "processor_set_default", 213 },\
+ { "processor_set_create", 214 },\
+ { "mach_memory_object_memory_entry_64", 215 },\
+ { "host_statistics", 216 },\
+ { "host_request_notification", 217 },\
+ { "host_lockgroup_info", 218 },\
+ { "host_statistics64", 219 },\
+ { "mach_zone_info", 220 },\
+ { "host_create_mach_voucher", 222 },\
+ { "host_register_mach_voucher_attr_manager", 223 },\
+ { "host_register_well_known_mach_voucher_attr_manager", 224 },\
+ { "host_set_atm_diagnostic_flag", 225 },\
+ { "host_get_atm_diagnostic_flag", 226 },\
+ { "mach_memory_info", 227 },\
+ { "host_set_multiuser_config_flags", 228 },\
+ { "host_get_multiuser_config_flags", 229 },\
+ { "host_check_multiuser_mode", 230 },\
+ { "mach_zone_info_for_zone", 231 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _mach_host_user_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_init.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 1999 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,1986 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.
+ */
+
+/*
+ * Items provided by the Mach environment initialization.
+ */
+
+#ifndef _MACH_INIT_
+#define _MACH_INIT_ 1
+
+#include <mach/mach_types.h>
+#include <mach/vm_page_size.h>
+#include <stdarg.h>
+
+#include <sys/cdefs.h>
+
+/*
+ * Kernel-related ports; how a task/thread controls itself
+ */
+
+__BEGIN_DECLS
+extern mach_port_t mach_host_self(void);
+extern mach_port_t mach_thread_self(void);
+extern kern_return_t host_page_size(host_t, vm_size_t *);
+
+extern mach_port_t mach_task_self_;
+#define mach_task_self() mach_task_self_
+#define current_task() mach_task_self()
+
+__END_DECLS
+#include <mach/mach_traps.h>
+__BEGIN_DECLS
+
+/*
+ * Other important ports in the Mach user environment
+ */
+
+extern mach_port_t bootstrap_port;
+
+/*
+ * Where these ports occur in the "mach_ports_register"
+ * collection... only servers or the runtime library need know.
+ */
+
+#define NAME_SERVER_SLOT 0
+#define ENVIRONMENT_SLOT 1
+#define SERVICE_SLOT 2
+
+#define MACH_PORTS_SLOTS_USED 3
+
+/*
+ * fprintf_stderr uses vprintf_stderr_func to produce
+ * error messages, this can be overridden by a user
+ * application to point to a user-specified output function
+ */
+extern int (*vprintf_stderr_func)(const char *format, va_list ap);
+
+__END_DECLS
+
+#endif /* _MACH_INIT_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_interface.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2003 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@
+ */
+/*
+ * Copyright (C) Apple Computer 1998
+ * ALL Rights Reserved
+ */
+/*
+ * This file represents the interfaces that used to come
+ * from creating the user headers from the mach.defs file.
+ * Because mach.defs was decomposed, this file now just
+ * wraps up all the new interface headers generated from
+ * each of the new .defs resulting from that decomposition.
+ */
+#ifndef _MACH_INTERFACE_H_
+#define _MACH_INTERFACE_H_
+
+#include <mach/clock_priv.h>
+#include <mach/host_priv.h>
+#include <mach/host_security.h>
+#include <mach/lock_set.h>
+#include <mach/processor.h>
+#include <mach/processor_set.h>
+#include <mach/semaphore.h>
+#include <mach/task.h>
+#include <mach/thread_act.h>
+#include <mach/vm_map.h>
+
+#endif /* _MACH_INTERFACE_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_port.h
@@ -0,0 +1,1808 @@
+#ifndef _mach_port_user_
+#define _mach_port_user_
+
+/* Module mach_port */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef mach_port_MSG_COUNT
+#define mach_port_MSG_COUNT 40
+#endif /* mach_port_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine mach_port_names */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_names
+(
+ ipc_space_t task,
+ mach_port_name_array_t *names,
+ mach_msg_type_number_t *namesCnt,
+ mach_port_type_array_t *types,
+ mach_msg_type_number_t *typesCnt
+);
+
+/* Routine mach_port_type */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_type
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_type_t *ptype
+);
+
+/* Routine mach_port_rename */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_rename
+(
+ ipc_space_t task,
+ mach_port_name_t old_name,
+ mach_port_name_t new_name
+);
+
+/* Routine mach_port_allocate_name */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t mach_port_allocate_name
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_name_t name
+);
+
+/* Routine mach_port_allocate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_allocate
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_name_t *name
+);
+
+/* Routine mach_port_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_destroy
+(
+ ipc_space_t task,
+ mach_port_name_t name
+);
+
+/* Routine mach_port_deallocate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_deallocate
+(
+ ipc_space_t task,
+ mach_port_name_t name
+);
+
+/* Routine mach_port_get_refs */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_refs
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_right_t right,
+ mach_port_urefs_t *refs
+);
+
+/* Routine mach_port_mod_refs */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_mod_refs
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_right_t right,
+ mach_port_delta_t delta
+);
+
+/* Routine mach_port_peek */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_peek
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_trailer_type_t trailer_type,
+ mach_port_seqno_t *request_seqnop,
+ mach_msg_size_t *msg_sizep,
+ mach_msg_id_t *msg_idp,
+ mach_msg_trailer_info_t trailer_infop,
+ mach_msg_type_number_t *trailer_infopCnt
+);
+
+/* Routine mach_port_set_mscount */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_mscount
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_mscount_t mscount
+);
+
+/* Routine mach_port_get_set_status */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_set_status
+(
+ ipc_space_inspect_t task,
+ mach_port_name_t name,
+ mach_port_name_array_t *members,
+ mach_msg_type_number_t *membersCnt
+);
+
+/* Routine mach_port_move_member */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_move_member
+(
+ ipc_space_t task,
+ mach_port_name_t member,
+ mach_port_name_t after
+);
+
+/* Routine mach_port_request_notification */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_request_notification
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_id_t msgid,
+ mach_port_mscount_t sync,
+ mach_port_t notify,
+ mach_msg_type_name_t notifyPoly,
+ mach_port_t *previous
+);
+
+/* Routine mach_port_insert_right */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_insert_right
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_t poly,
+ mach_msg_type_name_t polyPoly
+);
+
+/* Routine mach_port_extract_right */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_extract_right
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_type_name_t msgt_name,
+ mach_port_t *poly,
+ mach_msg_type_name_t *polyPoly
+);
+
+/* Routine mach_port_set_seqno */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_seqno
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_seqno_t seqno
+);
+
+/* Routine mach_port_get_attributes */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_attributes
+(
+ ipc_space_inspect_t task,
+ mach_port_name_t name,
+ mach_port_flavor_t flavor,
+ mach_port_info_t port_info_out,
+ mach_msg_type_number_t *port_info_outCnt
+);
+
+/* Routine mach_port_set_attributes */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_attributes
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_flavor_t flavor,
+ mach_port_info_t port_info,
+ mach_msg_type_number_t port_infoCnt
+);
+
+/* Routine mach_port_allocate_qos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_allocate_qos
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_qos_t *qos,
+ mach_port_name_t *name
+);
+
+/* Routine mach_port_allocate_full */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_allocate_full
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_t proto,
+ mach_port_qos_t *qos,
+ mach_port_name_t *name
+);
+
+/* Routine task_set_port_space */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_port_space
+(
+ ipc_space_t task,
+ int table_entries
+);
+
+/* Routine mach_port_get_srights */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_srights
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_rights_t *srights
+);
+
+/* Routine mach_port_space_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_space_info
+(
+ ipc_space_inspect_t task,
+ ipc_info_space_t *space_info,
+ ipc_info_name_array_t *table_info,
+ mach_msg_type_number_t *table_infoCnt,
+ ipc_info_tree_name_array_t *tree_info,
+ mach_msg_type_number_t *tree_infoCnt
+);
+
+/* Routine mach_port_dnrequest_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_dnrequest_info
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ unsigned *dnr_total,
+ unsigned *dnr_used
+);
+
+/* Routine mach_port_kernel_object */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_kernel_object
+(
+ ipc_space_inspect_t task,
+ mach_port_name_t name,
+ unsigned *object_type,
+ unsigned *object_addr
+);
+
+/* Routine mach_port_insert_member */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_insert_member
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_name_t pset
+);
+
+/* Routine mach_port_extract_member */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_extract_member
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_name_t pset
+);
+
+/* Routine mach_port_get_context */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_context
+(
+ ipc_space_inspect_t task,
+ mach_port_name_t name,
+ mach_port_context_t *context
+);
+
+/* Routine mach_port_set_context */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_context
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t context
+);
+
+/* Routine mach_port_kobject */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_kobject
+(
+ ipc_space_inspect_t task,
+ mach_port_name_t name,
+ natural_t *object_type,
+ mach_vm_address_t *object_addr
+);
+
+/* Routine mach_port_construct */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_construct
+(
+ ipc_space_t task,
+ mach_port_options_ptr_t options,
+ mach_port_context_t context,
+ mach_port_name_t *name
+);
+
+/* Routine mach_port_destruct */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_destruct
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_delta_t srdelta,
+ mach_port_context_t guard
+);
+
+/* Routine mach_port_guard */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_guard
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t guard,
+ boolean_t strict
+);
+
+/* Routine mach_port_unguard */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_unguard
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t guard
+);
+
+/* Routine mach_port_space_basic_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_space_basic_info
+(
+ ipc_space_inspect_t task,
+ ipc_info_space_basic_t *basic_info
+);
+
+/* Routine mach_port_guard_with_flags */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_guard_with_flags
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t guard,
+ uint64_t flags
+);
+
+/* Routine mach_port_swap_guard */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_swap_guard
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t old_guard,
+ mach_port_context_t new_guard
+);
+
+/* Routine mach_port_kobject_description */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_kobject_description
+(
+ ipc_space_inspect_t task,
+ mach_port_name_t name,
+ natural_t *object_type,
+ mach_vm_address_t *object_addr,
+ kobject_description_t description
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__mach_port_subsystem__defined
+#define __Request__mach_port_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_port_names_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_type_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t old_name;
+ mach_port_name_t new_name;
+ } __Request__mach_port_rename_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ mach_port_name_t name;
+ } __Request__mach_port_allocate_name_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ } __Request__mach_port_allocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_deallocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_right_t right;
+ } __Request__mach_port_get_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_right_t right;
+ mach_port_delta_t delta;
+ } __Request__mach_port_mod_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_msg_trailer_type_t trailer_type;
+ mach_port_seqno_t request_seqnop;
+ mach_msg_type_number_t trailer_infopCnt;
+ } __Request__mach_port_peek_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_mscount_t mscount;
+ } __Request__mach_port_set_mscount_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_get_set_status_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t member;
+ mach_port_name_t after;
+ } __Request__mach_port_move_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t notify;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_msg_id_t msgid;
+ mach_port_mscount_t sync;
+ } __Request__mach_port_request_notification_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t poly;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_insert_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_msg_type_name_t msgt_name;
+ } __Request__mach_port_extract_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_seqno_t seqno;
+ } __Request__mach_port_set_seqno_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_flavor_t flavor;
+ mach_msg_type_number_t port_info_outCnt;
+ } __Request__mach_port_get_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_flavor_t flavor;
+ mach_msg_type_number_t port_infoCnt;
+ integer_t port_info[17];
+ } __Request__mach_port_set_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ mach_port_qos_t qos;
+ } __Request__mach_port_allocate_qos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t proto;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ mach_port_qos_t qos;
+ mach_port_name_t name;
+ } __Request__mach_port_allocate_full_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int table_entries;
+ } __Request__task_set_port_space_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_get_srights_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_port_space_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_dnrequest_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_kernel_object_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_name_t pset;
+ } __Request__mach_port_insert_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_name_t pset;
+ } __Request__mach_port_extract_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_get_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t context;
+ } __Request__mach_port_set_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_kobject_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t options;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_context_t context;
+ } __Request__mach_port_construct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_delta_t srdelta;
+ mach_port_context_t guard;
+ } __Request__mach_port_destruct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t guard;
+ boolean_t strict;
+ } __Request__mach_port_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t guard;
+ } __Request__mach_port_unguard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_port_space_basic_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t guard;
+ uint64_t flags;
+ } __Request__mach_port_guard_with_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t old_guard;
+ mach_port_context_t new_guard;
+ } __Request__mach_port_swap_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_kobject_description_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__mach_port_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__mach_port_subsystem__defined
+#define __RequestUnion__mach_port_subsystem__defined
+union __RequestUnion__mach_port_subsystem {
+ __Request__mach_port_names_t Request_mach_port_names;
+ __Request__mach_port_type_t Request_mach_port_type;
+ __Request__mach_port_rename_t Request_mach_port_rename;
+ __Request__mach_port_allocate_name_t Request_mach_port_allocate_name;
+ __Request__mach_port_allocate_t Request_mach_port_allocate;
+ __Request__mach_port_destroy_t Request_mach_port_destroy;
+ __Request__mach_port_deallocate_t Request_mach_port_deallocate;
+ __Request__mach_port_get_refs_t Request_mach_port_get_refs;
+ __Request__mach_port_mod_refs_t Request_mach_port_mod_refs;
+ __Request__mach_port_peek_t Request_mach_port_peek;
+ __Request__mach_port_set_mscount_t Request_mach_port_set_mscount;
+ __Request__mach_port_get_set_status_t Request_mach_port_get_set_status;
+ __Request__mach_port_move_member_t Request_mach_port_move_member;
+ __Request__mach_port_request_notification_t Request_mach_port_request_notification;
+ __Request__mach_port_insert_right_t Request_mach_port_insert_right;
+ __Request__mach_port_extract_right_t Request_mach_port_extract_right;
+ __Request__mach_port_set_seqno_t Request_mach_port_set_seqno;
+ __Request__mach_port_get_attributes_t Request_mach_port_get_attributes;
+ __Request__mach_port_set_attributes_t Request_mach_port_set_attributes;
+ __Request__mach_port_allocate_qos_t Request_mach_port_allocate_qos;
+ __Request__mach_port_allocate_full_t Request_mach_port_allocate_full;
+ __Request__task_set_port_space_t Request_task_set_port_space;
+ __Request__mach_port_get_srights_t Request_mach_port_get_srights;
+ __Request__mach_port_space_info_t Request_mach_port_space_info;
+ __Request__mach_port_dnrequest_info_t Request_mach_port_dnrequest_info;
+ __Request__mach_port_kernel_object_t Request_mach_port_kernel_object;
+ __Request__mach_port_insert_member_t Request_mach_port_insert_member;
+ __Request__mach_port_extract_member_t Request_mach_port_extract_member;
+ __Request__mach_port_get_context_t Request_mach_port_get_context;
+ __Request__mach_port_set_context_t Request_mach_port_set_context;
+ __Request__mach_port_kobject_t Request_mach_port_kobject;
+ __Request__mach_port_construct_t Request_mach_port_construct;
+ __Request__mach_port_destruct_t Request_mach_port_destruct;
+ __Request__mach_port_guard_t Request_mach_port_guard;
+ __Request__mach_port_unguard_t Request_mach_port_unguard;
+ __Request__mach_port_space_basic_info_t Request_mach_port_space_basic_info;
+ __Request__mach_port_guard_with_flags_t Request_mach_port_guard_with_flags;
+ __Request__mach_port_swap_guard_t Request_mach_port_swap_guard;
+ __Request__mach_port_kobject_description_t Request_mach_port_kobject_description;
+};
+#endif /* !__RequestUnion__mach_port_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__mach_port_subsystem__defined
+#define __Reply__mach_port_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t names;
+ mach_msg_ool_descriptor_t types;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t namesCnt;
+ mach_msg_type_number_t typesCnt;
+ } __Reply__mach_port_names_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_type_t ptype;
+ } __Reply__mach_port_type_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_rename_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_allocate_name_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_name_t name;
+ } __Reply__mach_port_allocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_deallocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_urefs_t refs;
+ } __Reply__mach_port_get_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_mod_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_seqno_t request_seqnop;
+ mach_msg_size_t msg_sizep;
+ mach_msg_id_t msg_idp;
+ mach_msg_type_number_t trailer_infopCnt;
+ char trailer_infop[68];
+ } __Reply__mach_port_peek_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_mscount_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t members;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t membersCnt;
+ } __Reply__mach_port_get_set_status_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_move_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t previous;
+ /* end of the kernel processed data */
+ } __Reply__mach_port_request_notification_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_insert_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t poly;
+ /* end of the kernel processed data */
+ } __Reply__mach_port_extract_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_seqno_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t port_info_outCnt;
+ integer_t port_info_out[17];
+ } __Reply__mach_port_get_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_qos_t qos;
+ mach_port_name_t name;
+ } __Reply__mach_port_allocate_qos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_qos_t qos;
+ mach_port_name_t name;
+ } __Reply__mach_port_allocate_full_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_port_space_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_rights_t srights;
+ } __Reply__mach_port_get_srights_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t table_info;
+ mach_msg_ool_descriptor_t tree_info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ ipc_info_space_t space_info;
+ mach_msg_type_number_t table_infoCnt;
+ mach_msg_type_number_t tree_infoCnt;
+ } __Reply__mach_port_space_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ unsigned dnr_total;
+ unsigned dnr_used;
+ } __Reply__mach_port_dnrequest_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ unsigned object_type;
+ unsigned object_addr;
+ } __Reply__mach_port_kernel_object_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_insert_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_extract_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_context_t context;
+ } __Reply__mach_port_get_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ natural_t object_type;
+ mach_vm_address_t object_addr;
+ } __Reply__mach_port_kobject_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_name_t name;
+ } __Reply__mach_port_construct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_destruct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_unguard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ ipc_info_space_basic_t basic_info;
+ } __Reply__mach_port_space_basic_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_guard_with_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_swap_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ natural_t object_type;
+ mach_vm_address_t object_addr;
+ mach_msg_type_number_t descriptionOffset; /* MiG doesn't use it */
+ mach_msg_type_number_t descriptionCnt;
+ char description[512];
+ } __Reply__mach_port_kobject_description_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__mach_port_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__mach_port_subsystem__defined
+#define __ReplyUnion__mach_port_subsystem__defined
+union __ReplyUnion__mach_port_subsystem {
+ __Reply__mach_port_names_t Reply_mach_port_names;
+ __Reply__mach_port_type_t Reply_mach_port_type;
+ __Reply__mach_port_rename_t Reply_mach_port_rename;
+ __Reply__mach_port_allocate_name_t Reply_mach_port_allocate_name;
+ __Reply__mach_port_allocate_t Reply_mach_port_allocate;
+ __Reply__mach_port_destroy_t Reply_mach_port_destroy;
+ __Reply__mach_port_deallocate_t Reply_mach_port_deallocate;
+ __Reply__mach_port_get_refs_t Reply_mach_port_get_refs;
+ __Reply__mach_port_mod_refs_t Reply_mach_port_mod_refs;
+ __Reply__mach_port_peek_t Reply_mach_port_peek;
+ __Reply__mach_port_set_mscount_t Reply_mach_port_set_mscount;
+ __Reply__mach_port_get_set_status_t Reply_mach_port_get_set_status;
+ __Reply__mach_port_move_member_t Reply_mach_port_move_member;
+ __Reply__mach_port_request_notification_t Reply_mach_port_request_notification;
+ __Reply__mach_port_insert_right_t Reply_mach_port_insert_right;
+ __Reply__mach_port_extract_right_t Reply_mach_port_extract_right;
+ __Reply__mach_port_set_seqno_t Reply_mach_port_set_seqno;
+ __Reply__mach_port_get_attributes_t Reply_mach_port_get_attributes;
+ __Reply__mach_port_set_attributes_t Reply_mach_port_set_attributes;
+ __Reply__mach_port_allocate_qos_t Reply_mach_port_allocate_qos;
+ __Reply__mach_port_allocate_full_t Reply_mach_port_allocate_full;
+ __Reply__task_set_port_space_t Reply_task_set_port_space;
+ __Reply__mach_port_get_srights_t Reply_mach_port_get_srights;
+ __Reply__mach_port_space_info_t Reply_mach_port_space_info;
+ __Reply__mach_port_dnrequest_info_t Reply_mach_port_dnrequest_info;
+ __Reply__mach_port_kernel_object_t Reply_mach_port_kernel_object;
+ __Reply__mach_port_insert_member_t Reply_mach_port_insert_member;
+ __Reply__mach_port_extract_member_t Reply_mach_port_extract_member;
+ __Reply__mach_port_get_context_t Reply_mach_port_get_context;
+ __Reply__mach_port_set_context_t Reply_mach_port_set_context;
+ __Reply__mach_port_kobject_t Reply_mach_port_kobject;
+ __Reply__mach_port_construct_t Reply_mach_port_construct;
+ __Reply__mach_port_destruct_t Reply_mach_port_destruct;
+ __Reply__mach_port_guard_t Reply_mach_port_guard;
+ __Reply__mach_port_unguard_t Reply_mach_port_unguard;
+ __Reply__mach_port_space_basic_info_t Reply_mach_port_space_basic_info;
+ __Reply__mach_port_guard_with_flags_t Reply_mach_port_guard_with_flags;
+ __Reply__mach_port_swap_guard_t Reply_mach_port_swap_guard;
+ __Reply__mach_port_kobject_description_t Reply_mach_port_kobject_description;
+};
+#endif /* !__RequestUnion__mach_port_subsystem__defined */
+
+#ifndef subsystem_to_name_map_mach_port
+#define subsystem_to_name_map_mach_port \
+ { "mach_port_names", 3200 },\
+ { "mach_port_type", 3201 },\
+ { "mach_port_rename", 3202 },\
+ { "mach_port_allocate_name", 3203 },\
+ { "mach_port_allocate", 3204 },\
+ { "mach_port_destroy", 3205 },\
+ { "mach_port_deallocate", 3206 },\
+ { "mach_port_get_refs", 3207 },\
+ { "mach_port_mod_refs", 3208 },\
+ { "mach_port_peek", 3209 },\
+ { "mach_port_set_mscount", 3210 },\
+ { "mach_port_get_set_status", 3211 },\
+ { "mach_port_move_member", 3212 },\
+ { "mach_port_request_notification", 3213 },\
+ { "mach_port_insert_right", 3214 },\
+ { "mach_port_extract_right", 3215 },\
+ { "mach_port_set_seqno", 3216 },\
+ { "mach_port_get_attributes", 3217 },\
+ { "mach_port_set_attributes", 3218 },\
+ { "mach_port_allocate_qos", 3219 },\
+ { "mach_port_allocate_full", 3220 },\
+ { "task_set_port_space", 3221 },\
+ { "mach_port_get_srights", 3222 },\
+ { "mach_port_space_info", 3223 },\
+ { "mach_port_dnrequest_info", 3224 },\
+ { "mach_port_kernel_object", 3225 },\
+ { "mach_port_insert_member", 3226 },\
+ { "mach_port_extract_member", 3227 },\
+ { "mach_port_get_context", 3228 },\
+ { "mach_port_set_context", 3229 },\
+ { "mach_port_kobject", 3230 },\
+ { "mach_port_construct", 3231 },\
+ { "mach_port_destruct", 3232 },\
+ { "mach_port_guard", 3233 },\
+ { "mach_port_unguard", 3234 },\
+ { "mach_port_space_basic_info", 3235 },\
+ { "mach_port_guard_with_flags", 3237 },\
+ { "mach_port_swap_guard", 3238 },\
+ { "mach_port_kobject_description", 3239 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _mach_port_user_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_traps.h
@@ -0,0 +1,303 @@
+/*
+ * 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@
+ */
+/*
+ * @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.
+ */
+/*
+ */
+/*
+ * Definitions of general Mach system traps.
+ *
+ * These are the definitions as seen from user-space.
+ * The kernel definitions are in <mach/syscall_sw.h>.
+ * Kernel RPC functions are defined in <mach/mach_interface.h>.
+ */
+
+#ifndef _MACH_MACH_TRAPS_H_
+#define _MACH_MACH_TRAPS_H_
+
+#include <stdint.h>
+
+#include <mach/std_types.h>
+#include <mach/mach_types.h>
+#include <mach/kern_return.h>
+#include <mach/port.h>
+#include <mach/vm_types.h>
+#include <mach/clock_types.h>
+
+#include <machine/endian.h>
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+
+
+extern kern_return_t clock_sleep_trap(
+ mach_port_name_t clock_name,
+ sleep_type_t sleep_type,
+ int sleep_sec,
+ int sleep_nsec,
+ mach_timespec_t *wakeup_time);
+
+extern kern_return_t _kernelrpc_mach_vm_allocate_trap(
+ mach_port_name_t target,
+ mach_vm_offset_t *addr,
+ mach_vm_size_t size,
+ int flags);
+
+extern kern_return_t _kernelrpc_mach_vm_deallocate_trap(
+ mach_port_name_t target,
+ mach_vm_address_t address,
+ mach_vm_size_t size
+ );
+
+extern kern_return_t _kernelrpc_mach_vm_protect_trap(
+ mach_port_name_t target,
+ mach_vm_address_t address,
+ mach_vm_size_t size,
+ boolean_t set_maximum,
+ vm_prot_t new_protection
+ );
+
+extern kern_return_t _kernelrpc_mach_vm_map_trap(
+ mach_port_name_t target,
+ mach_vm_offset_t *address,
+ mach_vm_size_t size,
+ mach_vm_offset_t mask,
+ int flags,
+ vm_prot_t cur_protection
+ );
+
+extern kern_return_t _kernelrpc_mach_vm_purgable_control_trap(
+ mach_port_name_t target,
+ mach_vm_offset_t address,
+ vm_purgable_t control,
+ int *state);
+
+extern kern_return_t _kernelrpc_mach_port_allocate_trap(
+ mach_port_name_t target,
+ mach_port_right_t right,
+ mach_port_name_t *name
+ );
+
+
+extern kern_return_t _kernelrpc_mach_port_destroy_trap(
+ mach_port_name_t target,
+ mach_port_name_t name
+ );
+
+extern kern_return_t _kernelrpc_mach_port_deallocate_trap(
+ mach_port_name_t target,
+ mach_port_name_t name
+ );
+
+extern kern_return_t _kernelrpc_mach_port_mod_refs_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_right_t right,
+ mach_port_delta_t delta
+ );
+
+extern kern_return_t _kernelrpc_mach_port_move_member_trap(
+ mach_port_name_t target,
+ mach_port_name_t member,
+ mach_port_name_t after
+ );
+
+extern kern_return_t _kernelrpc_mach_port_insert_right_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_name_t poly,
+ mach_msg_type_name_t polyPoly
+ );
+
+extern kern_return_t _kernelrpc_mach_port_get_attributes_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_flavor_t flavor,
+ mach_port_info_t port_info_out,
+ mach_msg_type_number_t *port_info_outCnt
+ );
+
+extern kern_return_t _kernelrpc_mach_port_insert_member_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_name_t pset
+ );
+
+extern kern_return_t _kernelrpc_mach_port_extract_member_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_name_t pset
+ );
+
+extern kern_return_t _kernelrpc_mach_port_construct_trap(
+ mach_port_name_t target,
+ mach_port_options_t *options,
+ uint64_t context,
+ mach_port_name_t *name
+ );
+
+extern kern_return_t _kernelrpc_mach_port_destruct_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_delta_t srdelta,
+ uint64_t guard
+ );
+
+extern kern_return_t _kernelrpc_mach_port_guard_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ uint64_t guard,
+ boolean_t strict
+ );
+
+extern kern_return_t _kernelrpc_mach_port_unguard_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ uint64_t guard
+ );
+
+extern kern_return_t mach_generate_activity_id(
+ mach_port_name_t target,
+ int count,
+ uint64_t *activity_id
+ );
+
+extern kern_return_t macx_swapon(
+ uint64_t filename,
+ int flags,
+ int size,
+ int priority);
+
+extern kern_return_t macx_swapoff(
+ uint64_t filename,
+ int flags);
+
+extern kern_return_t macx_triggers(
+ int hi_water,
+ int low_water,
+ int flags,
+ mach_port_t alert_port);
+
+extern kern_return_t macx_backing_store_suspend(
+ boolean_t suspend);
+
+extern kern_return_t macx_backing_store_recovery(
+ int pid);
+
+extern boolean_t swtch_pri(int pri);
+
+extern boolean_t swtch(void);
+
+extern kern_return_t thread_switch(
+ mach_port_name_t thread_name,
+ int option,
+ mach_msg_timeout_t option_time);
+
+extern mach_port_name_t task_self_trap(void);
+
+extern kern_return_t host_create_mach_voucher_trap(
+ mach_port_name_t host,
+ mach_voucher_attr_raw_recipe_array_t recipes,
+ int recipes_size,
+ mach_port_name_t *voucher);
+
+extern kern_return_t mach_voucher_extract_attr_recipe_trap(
+ mach_port_name_t voucher_name,
+ mach_voucher_attr_key_t key,
+ mach_voucher_attr_raw_recipe_t recipe,
+ mach_msg_type_number_t *recipe_size);
+
+extern kern_return_t _kernelrpc_mach_port_type_trap(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_type_t *ptype);
+
+extern kern_return_t _kernelrpc_mach_port_request_notification_trap(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_id_t msgid,
+ mach_port_mscount_t sync,
+ mach_port_name_t notify,
+ mach_msg_type_name_t notifyPoly,
+ mach_port_name_t *previous);
+
+/*
+ * Obsolete interfaces.
+ */
+
+extern kern_return_t task_for_pid(
+ mach_port_name_t target_tport,
+ int pid,
+ mach_port_name_t *t);
+
+extern kern_return_t task_name_for_pid(
+ mach_port_name_t target_tport,
+ int pid,
+ mach_port_name_t *tn);
+
+extern kern_return_t pid_for_task(
+ mach_port_name_t t,
+ int *x);
+
+extern kern_return_t debug_control_port_for_pid(
+ mach_port_name_t target_tport,
+ int pid,
+ mach_port_name_t *t);
+
+
+__END_DECLS
+
+#endif /* _MACH_MACH_TRAPS_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_types.h
@@ -0,0 +1,254 @@
+/*
+ * 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@
+ */
+/*
+ * @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.
+ */
+/*
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 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/mach_types.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young
+ * Date: 1986
+ *
+ * Mach external interface definitions.
+ *
+ */
+
+#ifndef _MACH_MACH_TYPES_H_
+#define _MACH_MACH_TYPES_H_
+
+#include <stdint.h>
+
+#include <sys/cdefs.h>
+
+#include <mach/host_info.h>
+#include <mach/host_notify.h>
+#include <mach/host_special_ports.h>
+#include <mach/machine.h>
+#include <mach/machine/vm_types.h>
+#include <mach/memory_object_types.h>
+#include <mach/message.h>
+#include <mach/exception_types.h>
+#include <mach/port.h>
+#include <mach/mach_voucher_types.h>
+#include <mach/processor_info.h>
+#include <mach/task_info.h>
+#include <mach/task_inspect.h>
+#include <mach/task_policy.h>
+#include <mach/task_special_ports.h>
+#include <mach/thread_info.h>
+#include <mach/thread_policy.h>
+#include <mach/thread_special_ports.h>
+#include <mach/thread_status.h>
+#include <mach/time_value.h>
+#include <mach/clock_types.h>
+#include <mach/vm_attributes.h>
+#include <mach/vm_inherit.h>
+#include <mach/vm_purgable.h>
+#include <mach/vm_behavior.h>
+#include <mach/vm_prot.h>
+#include <mach/vm_statistics.h>
+#include <mach/vm_sync.h>
+#include <mach/vm_types.h>
+#include <mach/vm_region.h>
+#include <mach/kmod.h>
+#include <mach/dyld_kernel.h>
+
+
+/*
+ * If we are not in the kernel, then these will all be represented by
+ * ports at user-space.
+ */
+typedef mach_port_t task_t;
+typedef mach_port_t task_name_t;
+typedef mach_port_t task_inspect_t;
+typedef mach_port_t task_suspension_token_t;
+typedef mach_port_t thread_t;
+typedef mach_port_t thread_act_t;
+typedef mach_port_t thread_inspect_t;
+typedef mach_port_t ipc_space_t;
+typedef mach_port_t ipc_space_inspect_t;
+typedef mach_port_t coalition_t;
+typedef mach_port_t host_t;
+typedef mach_port_t host_priv_t;
+typedef mach_port_t host_security_t;
+typedef mach_port_t processor_t;
+typedef mach_port_t processor_set_t;
+typedef mach_port_t processor_set_control_t;
+typedef mach_port_t semaphore_t;
+typedef mach_port_t lock_set_t;
+typedef mach_port_t ledger_t;
+typedef mach_port_t alarm_t;
+typedef mach_port_t clock_serv_t;
+typedef mach_port_t clock_ctrl_t;
+typedef mach_port_t arcade_register_t;
+typedef mach_port_t suid_cred_t;
+
+
+/*
+ * These aren't really unique types. They are just called
+ * out as unique types at one point in history. So we list
+ * them here for compatibility.
+ */
+typedef processor_set_t processor_set_name_t;
+
+/*
+ * These types are just hard-coded as ports
+ */
+typedef mach_port_t clock_reply_t;
+typedef mach_port_t bootstrap_t;
+typedef mach_port_t mem_entry_name_port_t;
+typedef mach_port_t exception_handler_t;
+typedef exception_handler_t *exception_handler_array_t;
+typedef mach_port_t vm_task_entry_t;
+typedef mach_port_t io_master_t;
+typedef mach_port_t UNDServerRef;
+
+/*
+ * Mig doesn't translate the components of an array.
+ * For example, Mig won't use the thread_t translations
+ * to translate a thread_array_t argument. So, these definitions
+ * are not completely accurate at the moment for other kernel
+ * components.
+ */
+typedef task_t *task_array_t;
+typedef thread_t *thread_array_t;
+typedef processor_set_t *processor_set_array_t;
+typedef processor_set_t *processor_set_name_array_t;
+typedef processor_t *processor_array_t;
+typedef thread_act_t *thread_act_array_t;
+typedef ledger_t *ledger_array_t;
+
+/*
+ * However the real mach_types got declared, we also have to declare
+ * types with "port" in the name for compatability with the way OSF
+ * had declared the user interfaces at one point. Someday these should
+ * go away.
+ */
+typedef task_t task_port_t;
+typedef task_array_t task_port_array_t;
+typedef thread_t thread_port_t;
+typedef thread_array_t thread_port_array_t;
+typedef ipc_space_t ipc_space_port_t;
+typedef host_t host_name_t;
+typedef host_t host_name_port_t;
+typedef processor_set_t processor_set_port_t;
+typedef processor_set_t processor_set_name_port_t;
+typedef processor_set_array_t processor_set_name_port_array_t;
+typedef processor_set_t processor_set_control_port_t;
+typedef processor_t processor_port_t;
+typedef processor_array_t processor_port_array_t;
+typedef thread_act_t thread_act_port_t;
+typedef thread_act_array_t thread_act_port_array_t;
+typedef semaphore_t semaphore_port_t;
+typedef lock_set_t lock_set_port_t;
+typedef ledger_t ledger_port_t;
+typedef ledger_array_t ledger_port_array_t;
+typedef alarm_t alarm_port_t;
+typedef clock_serv_t clock_serv_port_t;
+typedef clock_ctrl_t clock_ctrl_port_t;
+typedef exception_handler_t exception_port_t;
+typedef exception_handler_array_t exception_port_arrary_t;
+typedef char vfs_path_t[4096];
+typedef char nspace_path_t[1024]; /* 1024 == PATH_MAX */
+typedef char suid_cred_path_t[1024];
+typedef uint32_t suid_cred_uid_t;
+
+#define TASK_NULL ((task_t) 0)
+#define TASK_NAME_NULL ((task_name_t) 0)
+#define TASK_INSPECT_NULL ((task_inspect_t) 0)
+#define THREAD_NULL ((thread_t) 0)
+#define THREAD_INSPECT_NULL ((thread_inspect_t) 0)
+#define TID_NULL ((uint64_t) 0)
+#define THR_ACT_NULL ((thread_act_t) 0)
+#define IPC_SPACE_NULL ((ipc_space_t) 0)
+#define IPC_SPACE_INSPECT_NULL ((ipc_space_inspect_t) 0)
+#define COALITION_NULL ((coalition_t) 0)
+#define HOST_NULL ((host_t) 0)
+#define HOST_PRIV_NULL ((host_priv_t) 0)
+#define HOST_SECURITY_NULL ((host_security_t) 0)
+#define PROCESSOR_SET_NULL ((processor_set_t) 0)
+#define PROCESSOR_NULL ((processor_t) 0)
+#define SEMAPHORE_NULL ((semaphore_t) 0)
+#define LOCK_SET_NULL ((lock_set_t) 0)
+#define LEDGER_NULL ((ledger_t) 0)
+#define ALARM_NULL ((alarm_t) 0)
+#define CLOCK_NULL ((clock_t) 0)
+#define UND_SERVER_NULL ((UNDServerRef) 0)
+#define ARCADE_REG_NULL ((arcade_register_t) 0)
+#define SUID_CRED_NULL ((suid_cred_t) 0)
+
+/* DEPRECATED */
+typedef natural_t ledger_item_t;
+#define LEDGER_ITEM_INFINITY ((ledger_item_t) (~0))
+
+typedef int64_t ledger_amount_t;
+#define LEDGER_LIMIT_INFINITY ((ledger_amount_t)((1ULL << 63) - 1))
+
+typedef mach_vm_offset_t *emulation_vector_t;
+typedef char *user_subsystem_t;
+
+typedef char *labelstr_t;
+/*
+ * Backwards compatibility, for those programs written
+ * before mach/{std,mach}_types.{defs,h} were set up.
+ */
+#include <mach/std_types.h>
+
+#endif /* _MACH_MACH_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mach_voucher_types.h
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 2013 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 _MACH_VOUCHER_TYPES_H_
+#define _MACH_VOUCHER_TYPES_H_
+
+#include <mach/std_types.h>
+#include <mach/port.h>
+
+/*
+ * Mach Voucher - an immutable collection of attribute value handles.
+ *
+ * The mach voucher is such that it can be passed between processes
+ * as a Mach port send right (by convention in the mach_msg_header_tโs
+ * msgh_voucher field).
+ *
+ * You may construct a new mach voucher by passing a construction
+ * recipe to host_create_mach_voucher(). The construction recipe supports
+ * generic commands for copying, removing, and redeeming attribute value
+ * handles from previous vouchers, or running attribute-mananger-specific
+ * commands within the recipe.
+ *
+ * Once the set of attribute value handles is constructed and returned,
+ * that set will not change for the life of the voucher (just because the
+ * attribute value handle itself doesn't change, the value the handle refers
+ * to is free to change at will).
+ */
+typedef mach_port_t mach_voucher_t;
+#define MACH_VOUCHER_NULL ((mach_voucher_t) 0)
+
+typedef mach_port_name_t mach_voucher_name_t;
+#define MACH_VOUCHER_NAME_NULL ((mach_voucher_name_t) 0)
+
+typedef mach_voucher_name_t *mach_voucher_name_array_t;
+#define MACH_VOUCHER_NAME_ARRAY_NULL ((mach_voucher_name_array_t) 0)
+
+/*
+ * This type changes appearance between user-space and kernel. It is
+ * a port at user-space and a reference to an ipc_voucher structure in-kernel.
+ */
+typedef mach_voucher_t ipc_voucher_t;
+#define IPC_VOUCHER_NULL ((ipc_voucher_t) 0)
+
+/*
+ * mach_voucher_selector_t - A means of specifying which thread/task value to extract -
+ * the current voucher set at this level, or a voucher representing
+ * the full [layered] effective value for the task/thread.
+ */
+typedef uint32_t mach_voucher_selector_t;
+#define MACH_VOUCHER_SELECTOR_CURRENT ((mach_voucher_selector_t)0)
+#define MACH_VOUCHER_SELECTOR_EFFECTIVE ((mach_voucher_selector_t)1)
+
+
+/*
+ * mach_voucher_attr_key_t - The key used to identify a particular managed resource or
+ * to select the specific resource managerโs data associated
+ * with a given voucher.
+ */
+typedef uint32_t mach_voucher_attr_key_t;
+typedef mach_voucher_attr_key_t *mach_voucher_attr_key_array_t;
+
+#define MACH_VOUCHER_ATTR_KEY_ALL ((mach_voucher_attr_key_t)~0)
+#define MACH_VOUCHER_ATTR_KEY_NONE ((mach_voucher_attr_key_t)0)
+
+/* other well-known-keys will be added here */
+#define MACH_VOUCHER_ATTR_KEY_ATM ((mach_voucher_attr_key_t)1)
+#define MACH_VOUCHER_ATTR_KEY_IMPORTANCE ((mach_voucher_attr_key_t)2)
+#define MACH_VOUCHER_ATTR_KEY_BANK ((mach_voucher_attr_key_t)3)
+#define MACH_VOUCHER_ATTR_KEY_PTHPRIORITY ((mach_voucher_attr_key_t)4)
+
+#define MACH_VOUCHER_ATTR_KEY_USER_DATA ((mach_voucher_attr_key_t)7)
+#define MACH_VOUCHER_ATTR_KEY_BITS MACH_VOUCHER_ATTR_KEY_USER_DATA /* deprecated */
+#define MACH_VOUCHER_ATTR_KEY_TEST ((mach_voucher_attr_key_t)8)
+
+#define MACH_VOUCHER_ATTR_KEY_NUM_WELL_KNOWN MACH_VOUCHER_ATTR_KEY_TEST
+
+/*
+ * mach_voucher_attr_content_t
+ *
+ * Data passed to a resource manager for modifying an attribute
+ * value or returned from the resource manager in response to a
+ * request to externalize the current value for that attribute.
+ */
+typedef uint8_t *mach_voucher_attr_content_t;
+typedef uint32_t mach_voucher_attr_content_size_t;
+
+/*
+ * mach_voucher_attr_command_t - The private verbs implemented by each voucher
+ * attribute manager via mach_voucher_attr_command().
+ */
+typedef uint32_t mach_voucher_attr_command_t;
+
+/*
+ * mach_voucher_attr_recipe_command_t
+ *
+ * The verbs used to create/morph a voucher attribute value.
+ * We define some system-wide commands here - related to creation, and transport of
+ * vouchers and attributes. Additional commands can be defined by, and supported by,
+ * individual attribute resource managers.
+ */
+typedef uint32_t mach_voucher_attr_recipe_command_t;
+typedef mach_voucher_attr_recipe_command_t *mach_voucher_attr_recipe_command_array_t;
+
+#define MACH_VOUCHER_ATTR_NOOP ((mach_voucher_attr_recipe_command_t)0)
+#define MACH_VOUCHER_ATTR_COPY ((mach_voucher_attr_recipe_command_t)1)
+#define MACH_VOUCHER_ATTR_REMOVE ((mach_voucher_attr_recipe_command_t)2)
+#define MACH_VOUCHER_ATTR_SET_VALUE_HANDLE ((mach_voucher_attr_recipe_command_t)3)
+#define MACH_VOUCHER_ATTR_AUTO_REDEEM ((mach_voucher_attr_recipe_command_t)4)
+#define MACH_VOUCHER_ATTR_SEND_PREPROCESS ((mach_voucher_attr_recipe_command_t)5)
+
+/* redeem is on its way out? */
+#define MACH_VOUCHER_ATTR_REDEEM ((mach_voucher_attr_recipe_command_t)10)
+
+/* recipe command(s) for importance attribute manager */
+#define MACH_VOUCHER_ATTR_IMPORTANCE_SELF ((mach_voucher_attr_recipe_command_t)200)
+
+/* recipe command(s) for bit-store attribute manager */
+#define MACH_VOUCHER_ATTR_USER_DATA_STORE ((mach_voucher_attr_recipe_command_t)211)
+#define MACH_VOUCHER_ATTR_BITS_STORE MACH_VOUCHER_ATTR_USER_DATA_STORE /* deprecated */
+
+/* recipe command(s) for test attribute manager */
+#define MACH_VOUCHER_ATTR_TEST_STORE MACH_VOUCHER_ATTR_USER_DATA_STORE
+
+/*
+ * mach_voucher_attr_recipe_t
+ *
+ * An element in a recipe list to create a voucher.
+ */
+#pragma pack(push, 1)
+
+typedef struct mach_voucher_attr_recipe_data {
+ mach_voucher_attr_key_t key;
+ mach_voucher_attr_recipe_command_t command;
+ mach_voucher_name_t previous_voucher;
+ mach_voucher_attr_content_size_t content_size;
+ uint8_t content[];
+} mach_voucher_attr_recipe_data_t;
+typedef mach_voucher_attr_recipe_data_t *mach_voucher_attr_recipe_t;
+typedef mach_msg_type_number_t mach_voucher_attr_recipe_size_t;
+
+/* Make the above palatable to MIG */
+typedef uint8_t *mach_voucher_attr_raw_recipe_t;
+typedef mach_voucher_attr_raw_recipe_t mach_voucher_attr_raw_recipe_array_t;
+typedef mach_msg_type_number_t mach_voucher_attr_raw_recipe_size_t;
+typedef mach_msg_type_number_t mach_voucher_attr_raw_recipe_array_size_t;
+
+#define MACH_VOUCHER_ATTR_MAX_RAW_RECIPE_ARRAY_SIZE 5120
+#define MACH_VOUCHER_TRAP_STACK_LIMIT 256
+
+#pragma pack(pop)
+
+/*
+ * VOUCHER ATTRIBUTE MANAGER Writer types
+ */
+
+/*
+ * mach_voucher_attr_manager_t
+ *
+ * A handle through which the mach voucher mechanism communicates with the voucher
+ * attribute manager for a given attribute key.
+ */
+typedef mach_port_t mach_voucher_attr_manager_t;
+#define MACH_VOUCHER_ATTR_MANAGER_NULL ((mach_voucher_attr_manager_t) 0)
+
+/*
+ * mach_voucher_attr_control_t
+ *
+ * A handle provided to the voucher attribute manager for a given attribute key
+ * through which it makes inquiries or control operations of the mach voucher mechanism.
+ */
+typedef mach_port_t mach_voucher_attr_control_t;
+#define MACH_VOUCHER_ATTR_CONTROL_NULL ((mach_voucher_attr_control_t) 0)
+
+/*
+ * These types are different in-kernel vs user-space. They are ports in user-space,
+ * pointers to opaque structs in most of the kernel, and pointers to known struct
+ * types in the Mach portion of the kernel.
+ */
+typedef mach_port_t ipc_voucher_attr_manager_t;
+typedef mach_port_t ipc_voucher_attr_control_t;
+#define IPC_VOUCHER_ATTR_MANAGER_NULL ((ipc_voucher_attr_manager_t) 0)
+#define IPC_VOUCHER_ATTR_CONTROL_NULL ((ipc_voucher_attr_control_t) 0)
+
+/*
+ * mach_voucher_attr_value_handle_t
+ *
+ * The private handle that the voucher attribute manager provides to
+ * the mach voucher mechanism to represent a given attr content/value.
+ */
+typedef uint64_t mach_voucher_attr_value_handle_t;
+typedef mach_voucher_attr_value_handle_t *mach_voucher_attr_value_handle_array_t;
+
+typedef mach_msg_type_number_t mach_voucher_attr_value_handle_array_size_t;
+#define MACH_VOUCHER_ATTR_VALUE_MAX_NESTED ((mach_voucher_attr_value_handle_array_size_t)4)
+
+typedef uint32_t mach_voucher_attr_value_reference_t;
+typedef uint32_t mach_voucher_attr_value_flags_t;
+#define MACH_VOUCHER_ATTR_VALUE_FLAGS_NONE ((mach_voucher_attr_value_flags_t)0)
+#define MACH_VOUCHER_ATTR_VALUE_FLAGS_PERSIST ((mach_voucher_attr_value_flags_t)1)
+
+/* USE - TBD */
+typedef uint32_t mach_voucher_attr_control_flags_t;
+#define MACH_VOUCHER_ATTR_CONTROL_FLAGS_NONE ((mach_voucher_attr_control_flags_t)0)
+
+/*
+ * Commands and types for the IPC Importance Attribute Manager
+ *
+ * These are the valid mach_voucher_attr_command() options with the
+ * MACH_VOUCHER_ATTR_KEY_IMPORTANCE key.
+ */
+#define MACH_VOUCHER_IMPORTANCE_ATTR_ADD_EXTERNAL 1 /* Add some number of external refs (not supported) */
+#define MACH_VOUCHER_IMPORTANCE_ATTR_DROP_EXTERNAL 2 /* Drop some number of external refs */
+typedef uint32_t mach_voucher_attr_importance_refs;
+
+/*
+ * Activity id Generation defines
+ */
+#define MACH_ACTIVITY_ID_COUNT_MAX 16
+
+#endif /* _MACH_VOUCHER_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach/memory_object_types.h
@@ -0,0 +1,299 @@
+/*
+ * 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: memory_object.h
+ * Author: Michael Wayne Young
+ *
+ * External memory management interface definition.
+ */
+
+#ifndef _MACH_MEMORY_OBJECT_TYPES_H_
+#define _MACH_MEMORY_OBJECT_TYPES_H_
+
+/*
+ * User-visible types used in the external memory
+ * management interface:
+ */
+
+#include <mach/port.h>
+#include <mach/message.h>
+#include <mach/vm_prot.h>
+#include <mach/vm_sync.h>
+#include <mach/vm_types.h>
+#include <mach/machine/vm_types.h>
+
+#include <sys/cdefs.h>
+
+#define VM_64_BIT_DATA_OBJECTS
+
+typedef unsigned long long memory_object_offset_t;
+typedef unsigned long long memory_object_size_t;
+typedef natural_t memory_object_cluster_size_t;
+typedef natural_t * memory_object_fault_info_t;
+
+typedef unsigned long long vm_object_id_t;
+
+
+/*
+ * Temporary until real EMMI version gets re-implemented
+ */
+
+
+typedef mach_port_t memory_object_t;
+typedef mach_port_t memory_object_control_t;
+
+
+typedef memory_object_t *memory_object_array_t;
+/* A memory object ... */
+/* Used by the kernel to retrieve */
+/* or store data */
+
+typedef mach_port_t memory_object_name_t;
+/* Used to describe the memory ... */
+/* object in vm_regions() calls */
+
+typedef mach_port_t memory_object_default_t;
+/* Registered with the host ... */
+/* for creating new internal objects */
+
+#define MEMORY_OBJECT_NULL ((memory_object_t) 0)
+#define MEMORY_OBJECT_CONTROL_NULL ((memory_object_control_t) 0)
+#define MEMORY_OBJECT_NAME_NULL ((memory_object_name_t) 0)
+#define MEMORY_OBJECT_DEFAULT_NULL ((memory_object_default_t) 0)
+
+
+typedef int memory_object_copy_strategy_t;
+/* How memory manager handles copy: */
+#define MEMORY_OBJECT_COPY_NONE 0
+/* ... No special support */
+#define MEMORY_OBJECT_COPY_CALL 1
+/* ... Make call on memory manager */
+#define MEMORY_OBJECT_COPY_DELAY 2
+/* ... Memory manager doesn't
+ * change data externally.
+ */
+#define MEMORY_OBJECT_COPY_TEMPORARY 3
+/* ... Memory manager doesn't
+ * change data externally, and
+ * doesn't need to see changes.
+ */
+#define MEMORY_OBJECT_COPY_SYMMETRIC 4
+/* ... Memory manager doesn't
+ * change data externally,
+ * doesn't need to see changes,
+ * and object will not be
+ * multiply mapped.
+ *
+ * XXX
+ * Not yet safe for non-kernel use.
+ */
+
+#define MEMORY_OBJECT_COPY_INVALID 5
+/* ... An invalid copy strategy,
+ * for external objects which
+ * have not been initialized.
+ * Allows copy_strategy to be
+ * examined without also
+ * examining pager_ready and
+ * internal.
+ */
+
+typedef int memory_object_return_t;
+/* Which pages to return to manager
+ * this time (lock_request) */
+#define MEMORY_OBJECT_RETURN_NONE 0
+/* ... don't return any. */
+#define MEMORY_OBJECT_RETURN_DIRTY 1
+/* ... only dirty pages. */
+#define MEMORY_OBJECT_RETURN_ALL 2
+/* ... dirty and precious pages. */
+#define MEMORY_OBJECT_RETURN_ANYTHING 3
+/* ... any resident page. */
+
+/*
+ * Data lock request flags
+ */
+
+#define MEMORY_OBJECT_DATA_FLUSH 0x1
+#define MEMORY_OBJECT_DATA_NO_CHANGE 0x2
+#define MEMORY_OBJECT_DATA_PURGE 0x4
+#define MEMORY_OBJECT_COPY_SYNC 0x8
+#define MEMORY_OBJECT_DATA_SYNC 0x10
+#define MEMORY_OBJECT_IO_SYNC 0x20
+#define MEMORY_OBJECT_DATA_FLUSH_ALL 0x40
+
+/*
+ * Types for the memory object flavor interfaces
+ */
+
+#define MEMORY_OBJECT_INFO_MAX (1024)
+typedef int *memory_object_info_t;
+typedef int memory_object_flavor_t;
+typedef int memory_object_info_data_t[MEMORY_OBJECT_INFO_MAX];
+
+
+#define MEMORY_OBJECT_PERFORMANCE_INFO 11
+#define MEMORY_OBJECT_ATTRIBUTE_INFO 14
+#define MEMORY_OBJECT_BEHAVIOR_INFO 15
+
+
+struct memory_object_perf_info {
+ memory_object_cluster_size_t cluster_size;
+ boolean_t may_cache;
+};
+
+struct memory_object_attr_info {
+ memory_object_copy_strategy_t copy_strategy;
+ memory_object_cluster_size_t cluster_size;
+ boolean_t may_cache_object;
+ boolean_t temporary;
+};
+
+struct memory_object_behave_info {
+ memory_object_copy_strategy_t copy_strategy;
+ boolean_t temporary;
+ boolean_t invalidate;
+ boolean_t silent_overwrite;
+ boolean_t advisory_pageout;
+};
+
+
+typedef struct memory_object_behave_info *memory_object_behave_info_t;
+typedef struct memory_object_behave_info memory_object_behave_info_data_t;
+
+typedef struct memory_object_perf_info *memory_object_perf_info_t;
+typedef struct memory_object_perf_info memory_object_perf_info_data_t;
+
+typedef struct memory_object_attr_info *memory_object_attr_info_t;
+typedef struct memory_object_attr_info memory_object_attr_info_data_t;
+
+#define MEMORY_OBJECT_BEHAVE_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(memory_object_behave_info_data_t)/sizeof(int)))
+#define MEMORY_OBJECT_PERF_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(memory_object_perf_info_data_t)/sizeof(int)))
+#define MEMORY_OBJECT_ATTR_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(memory_object_attr_info_data_t)/sizeof(int)))
+
+#define invalid_memory_object_flavor(f) \
+ (f != MEMORY_OBJECT_ATTRIBUTE_INFO && \
+ f != MEMORY_OBJECT_PERFORMANCE_INFO && \
+ f != OLD_MEMORY_OBJECT_BEHAVIOR_INFO && \
+ f != MEMORY_OBJECT_BEHAVIOR_INFO && \
+ f != OLD_MEMORY_OBJECT_ATTRIBUTE_INFO)
+
+
+/*
+ * Used to support options on memory_object_release_name call
+ */
+#define MEMORY_OBJECT_TERMINATE_IDLE 0x1
+#define MEMORY_OBJECT_RESPECT_CACHE 0x2
+#define MEMORY_OBJECT_RELEASE_NO_OP 0x4
+
+
+/* named entry processor mapping options */
+/* enumerated */
+#define MAP_MEM_NOOP 0
+#define MAP_MEM_COPYBACK 1
+#define MAP_MEM_IO 2
+#define MAP_MEM_WTHRU 3
+#define MAP_MEM_WCOMB 4 /* Write combining mode */
+ /* aka store gather */
+#define MAP_MEM_INNERWBACK 5
+#define MAP_MEM_POSTED 6
+#define MAP_MEM_RT 7
+#define MAP_MEM_POSTED_REORDERED 8
+#define MAP_MEM_POSTED_COMBINED_REORDERED 9
+
+#define GET_MAP_MEM(flags) \
+ ((((unsigned int)(flags)) >> 24) & 0xFF)
+
+#define SET_MAP_MEM(caching, flags) \
+ ((flags) = ((((unsigned int)(caching)) << 24) \
+ & 0xFF000000) | ((flags) & 0xFFFFFF));
+
+/* leave room for vm_prot bits (0xFF ?) */
+#define MAP_MEM_LEDGER_TAGGED 0x002000 /* object owned by a specific task and ledger */
+#define MAP_MEM_PURGABLE_KERNEL_ONLY 0x004000 /* volatility controlled by kernel */
+#define MAP_MEM_GRAB_SECLUDED 0x008000 /* can grab secluded pages */
+#define MAP_MEM_ONLY 0x010000 /* change processor caching */
+#define MAP_MEM_NAMED_CREATE 0x020000 /* create extant object */
+#define MAP_MEM_PURGABLE 0x040000 /* create a purgable VM object */
+#define MAP_MEM_NAMED_REUSE 0x080000 /* reuse provided entry if identical */
+#define MAP_MEM_USE_DATA_ADDR 0x100000 /* preserve address of data, rather than base of page */
+#define MAP_MEM_VM_COPY 0x200000 /* make a copy of a VM range */
+#define MAP_MEM_VM_SHARE 0x400000 /* extract a VM range for remap */
+#define MAP_MEM_4K_DATA_ADDR 0x800000 /* preserve 4K aligned address of data */
+
+#define MAP_MEM_FLAGS_MASK 0x00FFFF00
+#define MAP_MEM_FLAGS_USER ( \
+ MAP_MEM_PURGABLE_KERNEL_ONLY | \
+ MAP_MEM_GRAB_SECLUDED | \
+ MAP_MEM_ONLY | \
+ MAP_MEM_NAMED_CREATE | \
+ MAP_MEM_PURGABLE | \
+ MAP_MEM_NAMED_REUSE | \
+ MAP_MEM_USE_DATA_ADDR | \
+ MAP_MEM_VM_COPY | \
+ MAP_MEM_VM_SHARE | \
+ MAP_MEM_LEDGER_TAGGED | \
+ MAP_MEM_4K_DATA_ADDR)
+#define MAP_MEM_FLAGS_ALL ( \
+ MAP_MEM_FLAGS_USER)
+
+
+#endif /* _MACH_MEMORY_OBJECT_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mig.h
@@ -0,0 +1,180 @@
+/*
+ * 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@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+
+/*
+ * Mach MIG Subsystem Interfaces
+ */
+
+#ifndef _MACH_MIG_H_
+#define _MACH_MIG_H_
+
+#include <stdint.h>
+#include <mach/port.h>
+#include <mach/message.h>
+#include <mach/vm_types.h>
+
+#include <sys/cdefs.h>
+
+#if defined(MACH_KERNEL)
+
+#if !defined(__MigTypeCheck)
+/* Turn MIG type checking on by default for kernel */
+#define __MigTypeCheck 1
+#endif
+
+#define __MigKernelSpecificCode 1
+#define _MIG_KERNEL_SPECIFIC_CODE_ 1
+
+#elif !defined(__MigTypeCheck)
+
+#if defined(TypeCheck)
+/* use legacy setting (temporary) */
+#define __MigTypeCheck TypeCheck
+#else
+/* default MIG type checking on */
+#define __MigTypeCheck 1
+#endif
+
+#endif /* !defined(MACH_KERNEL) && !defined(__MigTypeCheck) */
+
+/*
+ * Pack MIG message structs.
+ * This is an indicator of the need to view shared structs in a
+ * binary-compatible format - and MIG message structs are no different.
+ */
+#define __MigPackStructs 1
+
+/*
+ * Definition for MIG-generated server stub routines. These routines
+ * unpack the request message, call the server procedure, and pack the
+ * reply message.
+ */
+typedef void (*mig_stub_routine_t) (mach_msg_header_t *InHeadP,
+ mach_msg_header_t *OutHeadP);
+
+typedef mig_stub_routine_t mig_routine_t;
+
+/*
+ * Definition for MIG-generated server routine. This routine takes a
+ * message, and returns the appropriate stub function for handling that
+ * message.
+ */
+typedef mig_routine_t (*mig_server_routine_t) (mach_msg_header_t *InHeadP);
+
+/*
+ * Generic definition for implementation routines. These routines do
+ * the real work associated with this request. This generic type is
+ * used for keeping the pointers in the subsystem array.
+ */
+typedef kern_return_t (*mig_impl_routine_t)(void);
+
+typedef mach_msg_type_descriptor_t routine_arg_descriptor;
+typedef mach_msg_type_descriptor_t *routine_arg_descriptor_t;
+typedef mach_msg_type_descriptor_t *mig_routine_arg_descriptor_t;
+
+#define MIG_ROUTINE_ARG_DESCRIPTOR_NULL ((mig_routine_arg_descriptor_t)0)
+
+struct routine_descriptor {
+ mig_impl_routine_t impl_routine; /* Server work func pointer */
+ mig_stub_routine_t stub_routine; /* Unmarshalling func pointer */
+ unsigned int argc; /* Number of argument words */
+ unsigned int descr_count; /* Number complex descriptors */
+ routine_arg_descriptor_t
+ arg_descr; /* pointer to descriptor array*/
+ unsigned int max_reply_msg; /* Max size for reply msg */
+};
+typedef struct routine_descriptor *routine_descriptor_t;
+
+typedef struct routine_descriptor mig_routine_descriptor;
+typedef mig_routine_descriptor *mig_routine_descriptor_t;
+
+#define MIG_ROUTINE_DESCRIPTOR_NULL ((mig_routine_descriptor_t)0)
+
+typedef struct mig_subsystem {
+ mig_server_routine_t server; /* pointer to demux routine */
+ mach_msg_id_t start; /* Min routine number */
+ mach_msg_id_t end; /* Max routine number + 1 */
+ mach_msg_size_t maxsize; /* Max reply message size */
+ vm_address_t reserved; /* reserved for MIG use */
+ mig_routine_descriptor
+ routine[1]; /* Routine descriptor array */
+} *mig_subsystem_t;
+
+#define MIG_SUBSYSTEM_NULL ((mig_subsystem_t)0)
+
+typedef struct mig_symtab {
+ char *ms_routine_name;
+ int ms_routine_number;
+ void (*ms_routine)(void); /* Since the functions in the
+ * symbol table have unknown
+ * signatures, this is the best
+ * we can do...
+ */
+} mig_symtab_t;
+
+/*
+ * A compiler attribute for annotating all MIG server routines and other
+ * functions that should behave similarly. Allows the compiler to perform
+ * additional static bug-finding over them.
+ */
+#if __has_attribute(mig_server_routine)
+#define MIG_SERVER_ROUTINE __attribute__((mig_server_routine))
+#else
+#define MIG_SERVER_ROUTINE
+#endif
+
+
+__BEGIN_DECLS
+
+/* Client side reply port allocate */
+extern mach_port_t mig_get_reply_port(void);
+
+/* Client side reply port deallocate */
+extern void mig_dealloc_reply_port(mach_port_t reply_port);
+
+/* Client side reply port "deallocation" */
+extern void mig_put_reply_port(mach_port_t reply_port);
+
+/* Bounded string copy */
+extern int mig_strncpy(char *dest, const char *src, int len);
+extern int mig_strncpy_zerofill(char *dest, const char *src, int len);
+
+
+/* Allocate memory for out-of-line mig structures */
+extern void mig_allocate(vm_address_t *, vm_size_t);
+
+/* Deallocate memory used for out-of-line mig structures */
+extern void mig_deallocate(vm_address_t, vm_size_t);
+
+
+__END_DECLS
+
+#endif /* _MACH_MIG_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mig_errors.h
@@ -0,0 +1,125 @@
+/*
+ * 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@
+ */
+/*
+ * @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.
+ */
+/*
+ */
+/*
+ * Mach Interface Generator errors
+ *
+ */
+
+#ifndef _MACH_MIG_ERRORS_H_
+#define _MACH_MIG_ERRORS_H_
+
+#include <mach/mig.h>
+#include <mach/ndr.h>
+#include <mach/message.h>
+#include <mach/kern_return.h>
+
+#include <sys/cdefs.h>
+
+/*
+ * These error codes should be specified as system 4, subsytem 2.
+ * But alas backwards compatibility makes that impossible.
+ * The problem is old clients of new servers (eg, the kernel)
+ * which get strange large error codes when there is a Mig problem
+ * in the server. Unfortunately, the IPC system doesn't have
+ * the knowledge to convert the codes in this situation.
+ */
+
+#define MIG_TYPE_ERROR -300 /* client type check failure */
+#define MIG_REPLY_MISMATCH -301 /* wrong reply message ID */
+#define MIG_REMOTE_ERROR -302 /* server detected error */
+#define MIG_BAD_ID -303 /* bad request message ID */
+#define MIG_BAD_ARGUMENTS -304 /* server type check failure */
+#define MIG_NO_REPLY -305 /* no reply should be send */
+#define MIG_EXCEPTION -306 /* server raised exception */
+#define MIG_ARRAY_TOO_LARGE -307 /* array not large enough */
+#define MIG_SERVER_DIED -308 /* server died */
+#define MIG_TRAILER_ERROR -309 /* trailer has an unknown format */
+
+/*
+ * Whenever MIG detects an error, it sends back a generic
+ * mig_reply_error_t format message. Clients must accept
+ * these in addition to the expected reply message format.
+ */
+#pragma pack(4)
+typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+} mig_reply_error_t;
+#pragma pack()
+
+
+__BEGIN_DECLS
+
+#if !defined(__NDR_convert__mig_reply_error_t__defined)
+#define __NDR_convert__mig_reply_error_t__defined
+
+static __inline__ void
+__NDR_convert__mig_reply_error_t(__unused mig_reply_error_t *x)
+{
+#if defined(__NDR_convert__int_rep__kern_return_t__defined)
+ if (x->NDR.int_rep != NDR_record.int_rep) {
+ __NDR_convert__int_rep__kern_return_t(&x->RetCode, x->NDR.int_rep);
+ }
+#endif /* __NDR_convert__int_rep__kern_return_t__defined */
+}
+#endif /* !defined(__NDR_convert__mig_reply_error_t__defined) */
+
+__END_DECLS
+
+#endif /* _MACH_MIG_ERRORS_H_ */
lib/libc/include/x86_64-macos-gnu/mach/mig_strncpy_zerofill_support.h
@@ -0,0 +1,35 @@
+/*
+ * 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@
+ */
+//This dummy header file is created for mig to check when to call mig_strncpy_zerofill.
+//Mig checks if this file is available to include and knows that Libsyscall has the new mig_strncpy_zerofill symbols to link to.
+//Do not delete this file, mig will stop calling mig_strncpy_zerofill.
+
+#ifndef __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__
+#define __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__
+
+#endif // __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__
lib/libc/include/x86_64-macos-gnu/mach/ndr.h
@@ -0,0 +1,207 @@
+/*
+ * 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@
+ */
+
+#ifndef _MACH_NDR_H_
+#define _MACH_NDR_H_
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <libkern/OSByteOrder.h>
+
+
+typedef struct {
+ unsigned char mig_vers;
+ unsigned char if_vers;
+ unsigned char reserved1;
+ unsigned char mig_encoding;
+ unsigned char int_rep;
+ unsigned char char_rep;
+ unsigned char float_rep;
+ unsigned char reserved2;
+} NDR_record_t;
+
+/*
+ * MIG supported protocols for Network Data Representation
+ */
+#define NDR_PROTOCOL_2_0 0
+
+/*
+ * NDR 2.0 format flag type definition and values.
+ */
+#define NDR_INT_BIG_ENDIAN 0
+#define NDR_INT_LITTLE_ENDIAN 1
+#define NDR_FLOAT_IEEE 0
+#define NDR_FLOAT_VAX 1
+#define NDR_FLOAT_CRAY 2
+#define NDR_FLOAT_IBM 3
+#define NDR_CHAR_ASCII 0
+#define NDR_CHAR_EBCDIC 1
+
+extern NDR_record_t NDR_record;
+
+/* NDR conversion off by default */
+
+#if !defined(__NDR_convert__)
+#define __NDR_convert__ 0
+#endif /* !defined(__NDR_convert__) */
+
+#ifndef __NDR_convert__int_rep__
+#define __NDR_convert__int_rep__ __NDR_convert__
+#endif /* __NDR_convert__int_rep__ */
+
+#ifndef __NDR_convert__char_rep__
+#define __NDR_convert__char_rep__ 0
+#endif /* __NDR_convert__char_rep__ */
+
+#ifndef __NDR_convert__float_rep__
+#define __NDR_convert__float_rep__ 0
+#endif /* __NDR_convert__float_rep__ */
+
+#if __NDR_convert__
+
+#define __NDR_convert__NOOP do ; while (0)
+#define __NDR_convert__UNKNOWN(s) __NDR_convert__NOOP
+#define __NDR_convert__SINGLE(a, f, r) do { r((a), (f)); } while (0)
+#define __NDR_convert__ARRAY(a, f, c, r) \
+ do { int __i__, __C__ = (c); \
+ for (__i__ = 0; __i__ < __C__; __i__++) \
+ r(&(a)[__i__], f); } while (0)
+#define __NDR_convert__2DARRAY(a, f, s, c, r) \
+ do { int __i__, __C__ = (c), __S__ = (s); \
+ for (__i__ = 0; __i__ < __C__; __i__++) \
+ r(&(a)[__i__ * __S__], f, __S__); } while (0)
+
+#if __NDR_convert__int_rep__
+
+#define __NDR_READSWAP_assign(a, rs) do { *(a) = rs(a); } while (0)
+
+#define __NDR_READSWAP__uint16_t(a) OSReadSwapInt16((void *)a, 0)
+#define __NDR_READSWAP__int16_t(a) (int16_t)OSReadSwapInt16((void *)a, 0)
+#define __NDR_READSWAP__uint32_t(a) OSReadSwapInt32((void *)a, 0)
+#define __NDR_READSWAP__int32_t(a) (int32_t)OSReadSwapInt32((void *)a, 0)
+#define __NDR_READSWAP__uint64_t(a) OSReadSwapInt64((void *)a, 0)
+#define __NDR_READSWAP__int64_t(a) (int64_t)OSReadSwapInt64((void *)a, 0)
+
+__BEGIN_DECLS
+
+static __inline__ float
+__NDR_READSWAP__float(float *argp)
+{
+ union {
+ float sv;
+ uint32_t ull;
+ } result;
+ result.ull = __NDR_READSWAP__uint32_t((uint32_t *)argp);
+ return result.sv;
+}
+
+static __inline__ double
+__NDR_READSWAP__double(double *argp)
+{
+ union {
+ double sv;
+ uint64_t ull;
+ } result;
+ result.ull = __NDR_READSWAP__uint64_t((uint64_t *)argp);
+ return result.sv;
+}
+
+__END_DECLS
+
+#define __NDR_convert__int_rep__int16_t__defined
+#define __NDR_convert__int_rep__int16_t(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__int16_t)
+
+#define __NDR_convert__int_rep__uint16_t__defined
+#define __NDR_convert__int_rep__uint16_t(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__uint16_t)
+
+#define __NDR_convert__int_rep__int32_t__defined
+#define __NDR_convert__int_rep__int32_t(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__int32_t)
+
+#define __NDR_convert__int_rep__uint32_t__defined
+#define __NDR_convert__int_rep__uint32_t(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__uint32_t)
+
+#define __NDR_convert__int_rep__int64_t__defined
+#define __NDR_convert__int_rep__int64_t(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__int64_t)
+
+#define __NDR_convert__int_rep__uint64_t__defined
+#define __NDR_convert__int_rep__uint64_t(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__uint64_t)
+
+#define __NDR_convert__int_rep__float__defined
+#define __NDR_convert__int_rep__float(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__float)
+
+#define __NDR_convert__int_rep__double__defined
+#define __NDR_convert__int_rep__double(v, f) \
+ __NDR_READSWAP_assign(v, __NDR_READSWAP__double)
+
+#define __NDR_convert__int_rep__boolean_t__defined
+#define __NDR_convert__int_rep__boolean_t(v, f) \
+ __NDR_convert__int_rep__int32_t(v,f)
+
+#define __NDR_convert__int_rep__kern_return_t__defined
+#define __NDR_convert__int_rep__kern_return_t(v, f) \
+ __NDR_convert__int_rep__int32_t(v,f)
+
+#define __NDR_convert__int_rep__mach_port_name_t__defined
+#define __NDR_convert__int_rep__mach_port_name_t(v, f) \
+ __NDR_convert__int_rep__uint32_t(v,f)
+
+#define __NDR_convert__int_rep__mach_msg_type_number_t__defined
+#define __NDR_convert__int_rep__mach_msg_type_number_t(v, f) \
+ __NDR_convert__int_rep__uint32_t(v,f)
+
+#endif /* __NDR_convert__int_rep__ */
+
+#if __NDR_convert__char_rep__
+
+#warning NDR character representation conversions not implemented yet!
+#define __NDR_convert__char_rep__char(v, f) __NDR_convert__NOOP
+#define __NDR_convert__char_rep__string(v, f, l) __NDR_convert__NOOP
+
+#endif /* __NDR_convert__char_rep__ */
+
+#if __NDR_convert__float_rep__
+
+#warning NDR floating point representation conversions not implemented yet!
+#define __NDR_convert__float_rep__float(v, f) __NDR_convert__NOOP
+#define __NDR_convert__float_rep__double(v, f) __NDR_convert__NOOP
+
+#endif /* __NDR_convert__float_rep__ */
+
+#endif /* __NDR_convert__ */
+
+#endif /* _MACH_NDR_H_ */
lib/libc/include/x86_64-macos-gnu/mach/notify.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2000-2003 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/notify.h
+ *
+ * Kernel notification message definitions.
+ */
+
+#ifndef _MACH_NOTIFY_H_
+#define _MACH_NOTIFY_H_
+
+#include <mach/port.h>
+#include <mach/message.h>
+#include <mach/ndr.h>
+
+/*
+ * An alternative specification of the notification interface
+ * may be found in mach/notify.defs.
+ */
+
+#define MACH_NOTIFY_FIRST 0100
+#define MACH_NOTIFY_PORT_DELETED (MACH_NOTIFY_FIRST + 001)
+/* A send or send-once right was deleted. */
+#define MACH_NOTIFY_SEND_POSSIBLE (MACH_NOTIFY_FIRST + 002)
+/* Now possible to send using specified right */
+#define MACH_NOTIFY_PORT_DESTROYED (MACH_NOTIFY_FIRST + 005)
+/* A receive right was (would have been) deallocated */
+#define MACH_NOTIFY_NO_SENDERS (MACH_NOTIFY_FIRST + 006)
+/* Receive right has no extant send rights */
+#define MACH_NOTIFY_SEND_ONCE (MACH_NOTIFY_FIRST + 007)
+/* An extant send-once right died */
+#define MACH_NOTIFY_DEAD_NAME (MACH_NOTIFY_FIRST + 010)
+/* Send or send-once right died, leaving a dead-name */
+#define MACH_NOTIFY_LAST (MACH_NOTIFY_FIRST + 015)
+
+typedef mach_port_t notify_port_t;
+
+/*
+ * Hard-coded message structures for receiving Mach port notification
+ * messages. However, they are not actual large enough to receive
+ * the largest trailers current exported by Mach IPC (so they cannot
+ * be used for space allocations in situations using these new larger
+ * trailers). Instead, the MIG-generated server routines (and
+ * related prototypes should be used).
+ */
+typedef struct {
+ mach_msg_header_t not_header;
+ NDR_record_t NDR;
+ mach_port_name_t not_port;/* MACH_MSG_TYPE_PORT_NAME */
+ mach_msg_format_0_trailer_t trailer;
+} mach_port_deleted_notification_t;
+
+typedef struct {
+ mach_msg_header_t not_header;
+ NDR_record_t NDR;
+ mach_port_name_t not_port;/* MACH_MSG_TYPE_PORT_NAME */
+ mach_msg_format_0_trailer_t trailer;
+} mach_send_possible_notification_t;
+
+typedef struct {
+ mach_msg_header_t not_header;
+ mach_msg_body_t not_body;
+ mach_msg_port_descriptor_t not_port;/* MACH_MSG_TYPE_PORT_RECEIVE */
+ mach_msg_format_0_trailer_t trailer;
+} mach_port_destroyed_notification_t;
+
+typedef struct {
+ mach_msg_header_t not_header;
+ NDR_record_t NDR;
+ mach_msg_type_number_t not_count;
+ mach_msg_format_0_trailer_t trailer;
+} mach_no_senders_notification_t;
+
+typedef struct {
+ mach_msg_header_t not_header;
+ mach_msg_format_0_trailer_t trailer;
+} mach_send_once_notification_t;
+
+typedef struct {
+ mach_msg_header_t not_header;
+ NDR_record_t NDR;
+ mach_port_name_t not_port;/* MACH_MSG_TYPE_PORT_NAME */
+ mach_msg_format_0_trailer_t trailer;
+} mach_dead_name_notification_t;
+
+#endif /* _MACH_NOTIFY_H_ */
lib/libc/include/x86_64-macos-gnu/mach/policy.h
@@ -0,0 +1,235 @@
+/*
+ * 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 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_POLICY_H_
+#define _MACH_POLICY_H_
+
+/*
+ * mach/policy.h
+ *
+ * Definitions for scheduing policy.
+ */
+
+/*
+ * All interfaces defined here are obsolete.
+ */
+
+#include <mach/boolean.h>
+#include <mach/message.h>
+#include <mach/vm_types.h>
+
+/*
+ * Old scheduling control interface
+ */
+typedef int policy_t;
+typedef integer_t *policy_info_t;
+typedef integer_t *policy_base_t;
+typedef integer_t *policy_limit_t;
+
+/*
+ * Policy definitions. Policies should be powers of 2,
+ * but cannot be or'd together other than to test for a
+ * policy 'class'.
+ */
+#define POLICY_NULL 0 /* none */
+#define POLICY_TIMESHARE 1 /* timesharing */
+#define POLICY_RR 2 /* fixed round robin */
+#define POLICY_FIFO 4 /* fixed fifo */
+
+#define __NEW_SCHEDULING_FRAMEWORK__
+
+/*
+ * Check if policy is of 'class' fixed-priority.
+ */
+#define POLICYCLASS_FIXEDPRI (POLICY_RR | POLICY_FIFO)
+
+/*
+ * Check if policy is valid.
+ */
+#define invalid_policy(policy) \
+ ((policy) != POLICY_TIMESHARE && \
+ (policy) != POLICY_RR && \
+ (policy) != POLICY_FIFO)
+
+
+/*
+ * Types for TIMESHARE policy
+ */
+struct policy_timeshare_base {
+ integer_t base_priority;
+};
+struct policy_timeshare_limit {
+ integer_t max_priority;
+};
+struct policy_timeshare_info {
+ integer_t max_priority;
+ integer_t base_priority;
+ integer_t cur_priority;
+ boolean_t depressed;
+ integer_t depress_priority;
+};
+
+typedef struct policy_timeshare_base *policy_timeshare_base_t;
+typedef struct policy_timeshare_limit *policy_timeshare_limit_t;
+typedef struct policy_timeshare_info *policy_timeshare_info_t;
+
+typedef struct policy_timeshare_base policy_timeshare_base_data_t;
+typedef struct policy_timeshare_limit policy_timeshare_limit_data_t;
+typedef struct policy_timeshare_info policy_timeshare_info_data_t;
+
+
+#define POLICY_TIMESHARE_BASE_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_timeshare_base)/sizeof(integer_t)))
+#define POLICY_TIMESHARE_LIMIT_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_timeshare_limit)/sizeof(integer_t)))
+#define POLICY_TIMESHARE_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_timeshare_info)/sizeof(integer_t)))
+
+
+/*
+ * Types for the ROUND ROBIN (RR) policy
+ */
+struct policy_rr_base {
+ integer_t base_priority;
+ integer_t quantum;
+};
+struct policy_rr_limit {
+ integer_t max_priority;
+};
+struct policy_rr_info {
+ integer_t max_priority;
+ integer_t base_priority;
+ integer_t quantum;
+ boolean_t depressed;
+ integer_t depress_priority;
+};
+
+typedef struct policy_rr_base *policy_rr_base_t;
+typedef struct policy_rr_limit *policy_rr_limit_t;
+typedef struct policy_rr_info *policy_rr_info_t;
+
+typedef struct policy_rr_base policy_rr_base_data_t;
+typedef struct policy_rr_limit policy_rr_limit_data_t;
+typedef struct policy_rr_info policy_rr_info_data_t;
+
+#define POLICY_RR_BASE_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_rr_base)/sizeof(integer_t)))
+#define POLICY_RR_LIMIT_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_rr_limit)/sizeof(integer_t)))
+#define POLICY_RR_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_rr_info)/sizeof(integer_t)))
+
+
+/*
+ * Types for the FIRST-IN-FIRST-OUT (FIFO) policy
+ */
+struct policy_fifo_base {
+ integer_t base_priority;
+};
+struct policy_fifo_limit {
+ integer_t max_priority;
+};
+struct policy_fifo_info {
+ integer_t max_priority;
+ integer_t base_priority;
+ boolean_t depressed;
+ integer_t depress_priority;
+};
+
+typedef struct policy_fifo_base *policy_fifo_base_t;
+typedef struct policy_fifo_limit *policy_fifo_limit_t;
+typedef struct policy_fifo_info *policy_fifo_info_t;
+
+typedef struct policy_fifo_base policy_fifo_base_data_t;
+typedef struct policy_fifo_limit policy_fifo_limit_data_t;
+typedef struct policy_fifo_info policy_fifo_info_data_t;
+
+#define POLICY_FIFO_BASE_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_fifo_base)/sizeof(integer_t)))
+#define POLICY_FIFO_LIMIT_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_fifo_limit)/sizeof(integer_t)))
+#define POLICY_FIFO_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(struct policy_fifo_info)/sizeof(integer_t)))
+
+/*
+ * Aggregate policy types
+ */
+
+struct policy_bases {
+ policy_timeshare_base_data_t ts;
+ policy_rr_base_data_t rr;
+ policy_fifo_base_data_t fifo;
+};
+
+struct policy_limits {
+ policy_timeshare_limit_data_t ts;
+ policy_rr_limit_data_t rr;
+ policy_fifo_limit_data_t fifo;
+};
+
+struct policy_infos {
+ policy_timeshare_info_data_t ts;
+ policy_rr_info_data_t rr;
+ policy_fifo_info_data_t fifo;
+};
+
+typedef struct policy_bases policy_base_data_t;
+typedef struct policy_limits policy_limit_data_t;
+typedef struct policy_infos policy_info_data_t;
+
+#endif /* _MACH_POLICY_H_ */
lib/libc/include/x86_64-macos-gnu/mach/processor.h
@@ -0,0 +1,360 @@
+#ifndef _processor_user_
+#define _processor_user_
+
+/* Module processor */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef processor_MSG_COUNT
+#define processor_MSG_COUNT 6
+#endif /* processor_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine processor_start */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_start
+(
+ processor_t processor
+);
+
+/* Routine processor_exit */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_exit
+(
+ processor_t processor
+);
+
+/* Routine processor_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_info
+(
+ processor_t processor,
+ processor_flavor_t flavor,
+ host_t *host,
+ processor_info_t processor_info_out,
+ mach_msg_type_number_t *processor_info_outCnt
+);
+
+/* Routine processor_control */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_control
+(
+ processor_t processor,
+ processor_info_t processor_cmd,
+ mach_msg_type_number_t processor_cmdCnt
+);
+
+/* Routine processor_assign */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_assign
+(
+ processor_t processor,
+ processor_set_t new_set,
+ boolean_t wait
+);
+
+/* Routine processor_get_assignment */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_get_assignment
+(
+ processor_t processor,
+ processor_set_name_t *assigned_set
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__processor_subsystem__defined
+#define __Request__processor_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_start_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_exit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ processor_flavor_t flavor;
+ mach_msg_type_number_t processor_info_outCnt;
+ } __Request__processor_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_msg_type_number_t processor_cmdCnt;
+ integer_t processor_cmd[20];
+ } __Request__processor_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ boolean_t wait;
+ } __Request__processor_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__processor_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__processor_subsystem__defined
+#define __RequestUnion__processor_subsystem__defined
+union __RequestUnion__processor_subsystem {
+ __Request__processor_start_t Request_processor_start;
+ __Request__processor_exit_t Request_processor_exit;
+ __Request__processor_info_t Request_processor_info;
+ __Request__processor_control_t Request_processor_control;
+ __Request__processor_assign_t Request_processor_assign;
+ __Request__processor_get_assignment_t Request_processor_get_assignment;
+};
+#endif /* !__RequestUnion__processor_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__processor_subsystem__defined
+#define __Reply__processor_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_start_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_exit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t host;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t processor_info_outCnt;
+ integer_t processor_info_out[20];
+ } __Reply__processor_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t assigned_set;
+ /* end of the kernel processed data */
+ } __Reply__processor_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__processor_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__processor_subsystem__defined
+#define __ReplyUnion__processor_subsystem__defined
+union __ReplyUnion__processor_subsystem {
+ __Reply__processor_start_t Reply_processor_start;
+ __Reply__processor_exit_t Reply_processor_exit;
+ __Reply__processor_info_t Reply_processor_info;
+ __Reply__processor_control_t Reply_processor_control;
+ __Reply__processor_assign_t Reply_processor_assign;
+ __Reply__processor_get_assignment_t Reply_processor_get_assignment;
+};
+#endif /* !__RequestUnion__processor_subsystem__defined */
+
+#ifndef subsystem_to_name_map_processor
+#define subsystem_to_name_map_processor \
+ { "processor_start", 3000 },\
+ { "processor_exit", 3001 },\
+ { "processor_info", 3002 },\
+ { "processor_control", 3003 },\
+ { "processor_assign", 3004 },\
+ { "processor_get_assignment", 3005 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _processor_user_ */
lib/libc/include/x86_64-macos-gnu/mach/processor_info.h
@@ -0,0 +1,153 @@
+/*
+ * 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.
+ */
+/*
+ */
+
+/*
+ * File: mach/processor_info.h
+ * Author: David L. Black
+ * Date: 1988
+ *
+ * Data structure definitions for processor_info, processor_set_info
+ */
+
+#ifndef _MACH_PROCESSOR_INFO_H_
+#define _MACH_PROCESSOR_INFO_H_
+
+#include <mach/message.h>
+#include <mach/machine.h>
+#include <mach/machine/processor_info.h>
+
+/*
+ * Generic information structure to allow for expansion.
+ */
+typedef integer_t *processor_info_t; /* varying array of int. */
+typedef integer_t *processor_info_array_t; /* varying array of int */
+
+#define PROCESSOR_INFO_MAX (1024) /* max array size */
+typedef integer_t processor_info_data_t[PROCESSOR_INFO_MAX];
+
+
+typedef integer_t *processor_set_info_t; /* varying array of int. */
+
+#define PROCESSOR_SET_INFO_MAX (1024) /* max array size */
+typedef integer_t processor_set_info_data_t[PROCESSOR_SET_INFO_MAX];
+
+/*
+ * Currently defined information.
+ */
+typedef int processor_flavor_t;
+#define PROCESSOR_BASIC_INFO 1 /* basic information */
+#define PROCESSOR_CPU_LOAD_INFO 2 /* cpu load information */
+#define PROCESSOR_PM_REGS_INFO 0x10000001 /* performance monitor register info */
+#define PROCESSOR_TEMPERATURE 0x10000002 /* Processor core temperature */
+
+struct processor_basic_info {
+ cpu_type_t cpu_type; /* type of cpu */
+ cpu_subtype_t cpu_subtype; /* subtype of cpu */
+ boolean_t running; /* is processor running */
+ int slot_num; /* slot number */
+ boolean_t is_master; /* is this the master processor */
+};
+
+typedef struct processor_basic_info processor_basic_info_data_t;
+typedef struct processor_basic_info *processor_basic_info_t;
+#define PROCESSOR_BASIC_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_basic_info_data_t)/sizeof(natural_t)))
+
+struct processor_cpu_load_info { /* number of ticks while running... */
+ unsigned int cpu_ticks[CPU_STATE_MAX]; /* ... in the given mode */
+};
+
+typedef struct processor_cpu_load_info processor_cpu_load_info_data_t;
+typedef struct processor_cpu_load_info *processor_cpu_load_info_t;
+#define PROCESSOR_CPU_LOAD_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_cpu_load_info_data_t)/sizeof(natural_t)))
+
+/*
+ * Scaling factor for load_average, mach_factor.
+ */
+#define LOAD_SCALE 1000
+
+typedef int processor_set_flavor_t;
+#define PROCESSOR_SET_BASIC_INFO 5 /* basic information */
+
+struct processor_set_basic_info {
+ int processor_count; /* How many processors */
+ int default_policy; /* When others not enabled */
+};
+
+typedef struct processor_set_basic_info processor_set_basic_info_data_t;
+typedef struct processor_set_basic_info *processor_set_basic_info_t;
+#define PROCESSOR_SET_BASIC_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_set_basic_info_data_t)/sizeof(natural_t)))
+
+#define PROCESSOR_SET_LOAD_INFO 4 /* scheduling statistics */
+
+struct processor_set_load_info {
+ int task_count; /* How many tasks */
+ int thread_count; /* How many threads */
+ integer_t load_average; /* Scaled */
+ integer_t mach_factor; /* Scaled */
+};
+
+typedef struct processor_set_load_info processor_set_load_info_data_t;
+typedef struct processor_set_load_info *processor_set_load_info_t;
+#define PROCESSOR_SET_LOAD_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_set_load_info_data_t)/sizeof(natural_t)))
+
+
+#endif /* _MACH_PROCESSOR_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/processor_set.h
@@ -0,0 +1,540 @@
+#ifndef _processor_set_user_
+#define _processor_set_user_
+
+/* Module processor_set */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef processor_set_MSG_COUNT
+#define processor_set_MSG_COUNT 10
+#endif /* processor_set_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine processor_set_statistics */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_statistics
+(
+ processor_set_name_t pset,
+ processor_set_flavor_t flavor,
+ processor_set_info_t info_out,
+ mach_msg_type_number_t *info_outCnt
+);
+
+/* Routine processor_set_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_destroy
+(
+ processor_set_t set
+);
+
+/* Routine processor_set_max_priority */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_max_priority
+(
+ processor_set_t processor_set,
+ int max_priority,
+ boolean_t change_threads
+);
+
+/* Routine processor_set_policy_enable */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_policy_enable
+(
+ processor_set_t processor_set,
+ int policy
+);
+
+/* Routine processor_set_policy_disable */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_policy_disable
+(
+ processor_set_t processor_set,
+ int policy,
+ boolean_t change_threads
+);
+
+/* Routine processor_set_tasks */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_tasks
+(
+ processor_set_t processor_set,
+ task_array_t *task_list,
+ mach_msg_type_number_t *task_listCnt
+);
+
+/* Routine processor_set_threads */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_threads
+(
+ processor_set_t processor_set,
+ thread_act_array_t *thread_list,
+ mach_msg_type_number_t *thread_listCnt
+);
+
+/* Routine processor_set_policy_control */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_policy_control
+(
+ processor_set_t pset,
+ processor_set_flavor_t flavor,
+ processor_set_info_t policy_info,
+ mach_msg_type_number_t policy_infoCnt,
+ boolean_t change
+);
+
+/* Routine processor_set_stack_usage */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_stack_usage
+(
+ processor_set_t pset,
+ unsigned *ltotal,
+ vm_size_t *space,
+ vm_size_t *resident,
+ vm_size_t *maxusage,
+ vm_offset_t *maxstack
+);
+
+/* Routine processor_set_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_info
+(
+ processor_set_name_t set_name,
+ int flavor,
+ host_t *host,
+ processor_set_info_t info_out,
+ mach_msg_type_number_t *info_outCnt
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__processor_set_subsystem__defined
+#define __Request__processor_set_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ processor_set_flavor_t flavor;
+ mach_msg_type_number_t info_outCnt;
+ } __Request__processor_set_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int max_priority;
+ boolean_t change_threads;
+ } __Request__processor_set_max_priority_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int policy;
+ } __Request__processor_set_policy_enable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int policy;
+ boolean_t change_threads;
+ } __Request__processor_set_policy_disable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_tasks_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ processor_set_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[5];
+ boolean_t change;
+ } __Request__processor_set_policy_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_stack_usage_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int flavor;
+ mach_msg_type_number_t info_outCnt;
+ } __Request__processor_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__processor_set_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__processor_set_subsystem__defined
+#define __RequestUnion__processor_set_subsystem__defined
+union __RequestUnion__processor_set_subsystem {
+ __Request__processor_set_statistics_t Request_processor_set_statistics;
+ __Request__processor_set_destroy_t Request_processor_set_destroy;
+ __Request__processor_set_max_priority_t Request_processor_set_max_priority;
+ __Request__processor_set_policy_enable_t Request_processor_set_policy_enable;
+ __Request__processor_set_policy_disable_t Request_processor_set_policy_disable;
+ __Request__processor_set_tasks_t Request_processor_set_tasks;
+ __Request__processor_set_threads_t Request_processor_set_threads;
+ __Request__processor_set_policy_control_t Request_processor_set_policy_control;
+ __Request__processor_set_stack_usage_t Request_processor_set_stack_usage;
+ __Request__processor_set_info_t Request_processor_set_info;
+};
+#endif /* !__RequestUnion__processor_set_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__processor_set_subsystem__defined
+#define __Reply__processor_set_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t info_outCnt;
+ integer_t info_out[5];
+ } __Reply__processor_set_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_max_priority_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_policy_enable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_policy_disable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t task_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t task_listCnt;
+ } __Reply__processor_set_tasks_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t thread_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t thread_listCnt;
+ } __Reply__processor_set_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_policy_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ unsigned ltotal;
+ vm_size_t space;
+ vm_size_t resident;
+ vm_size_t maxusage;
+ vm_offset_t maxstack;
+ } __Reply__processor_set_stack_usage_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t host;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t info_outCnt;
+ integer_t info_out[5];
+ } __Reply__processor_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__processor_set_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__processor_set_subsystem__defined
+#define __ReplyUnion__processor_set_subsystem__defined
+union __ReplyUnion__processor_set_subsystem {
+ __Reply__processor_set_statistics_t Reply_processor_set_statistics;
+ __Reply__processor_set_destroy_t Reply_processor_set_destroy;
+ __Reply__processor_set_max_priority_t Reply_processor_set_max_priority;
+ __Reply__processor_set_policy_enable_t Reply_processor_set_policy_enable;
+ __Reply__processor_set_policy_disable_t Reply_processor_set_policy_disable;
+ __Reply__processor_set_tasks_t Reply_processor_set_tasks;
+ __Reply__processor_set_threads_t Reply_processor_set_threads;
+ __Reply__processor_set_policy_control_t Reply_processor_set_policy_control;
+ __Reply__processor_set_stack_usage_t Reply_processor_set_stack_usage;
+ __Reply__processor_set_info_t Reply_processor_set_info;
+};
+#endif /* !__RequestUnion__processor_set_subsystem__defined */
+
+#ifndef subsystem_to_name_map_processor_set
+#define subsystem_to_name_map_processor_set \
+ { "processor_set_statistics", 4000 },\
+ { "processor_set_destroy", 4001 },\
+ { "processor_set_max_priority", 4002 },\
+ { "processor_set_policy_enable", 4003 },\
+ { "processor_set_policy_disable", 4004 },\
+ { "processor_set_tasks", 4005 },\
+ { "processor_set_threads", 4006 },\
+ { "processor_set_policy_control", 4007 },\
+ { "processor_set_stack_usage", 4008 },\
+ { "processor_set_info", 4009 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _processor_set_user_ */
lib/libc/include/x86_64-macos-gnu/mach/rpc.h
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2002,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 RPC Subsystem Interfaces
+ */
+
+#ifndef _MACH_RPC_H_
+#define _MACH_RPC_H_
+
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/port.h>
+#include <mach/vm_types.h>
+
+#include <mach/mig.h>
+#include <mach/mig_errors.h>
+#include <mach/machine/rpc.h>
+#include <mach/thread_status.h>
+
+/*
+ * These are the types for RPC-specific variants of the MIG routine
+ * descriptor and subsystem data types.
+ *
+ * THIS IS ONLY FOR COMPATIBILITY. WE WILL NOT BE IMPLEMENTING THIS.
+ */
+
+/*
+ * Basic mach rpc types.
+ */
+typedef unsigned int routine_arg_type;
+typedef unsigned int routine_arg_offset;
+typedef unsigned int routine_arg_size;
+
+/*
+ * Definitions for a signature's argument and routine descriptor's.
+ */
+struct rpc_routine_arg_descriptor {
+ routine_arg_type type; /* Port, Array, etc. */
+ routine_arg_size size; /* element size in bytes */
+ routine_arg_size count; /* number of elements */
+ routine_arg_offset offset; /* Offset in list of routine args */
+};
+typedef struct rpc_routine_arg_descriptor *rpc_routine_arg_descriptor_t;
+
+struct rpc_routine_descriptor {
+ mig_impl_routine_t impl_routine; /* Server work func pointer */
+ mig_stub_routine_t stub_routine; /* Unmarshalling func pointer */
+ unsigned int argc; /* Number of argument words */
+ unsigned int descr_count; /* Number of complex argument */
+ /* descriptors */
+ rpc_routine_arg_descriptor_t
+ arg_descr; /* Pointer to beginning of */
+ /* the arg_descr array */
+ unsigned int max_reply_msg; /* Max size for reply msg */
+};
+typedef struct rpc_routine_descriptor *rpc_routine_descriptor_t;
+
+#define RPC_DESCR_SIZE(x) ((x)->descr_count * \
+ sizeof(struct rpc_routine_arg_descriptor))
+
+struct rpc_signature {
+ struct rpc_routine_descriptor rd;
+ struct rpc_routine_arg_descriptor rad[1];
+};
+
+#define RPC_SIGBUF_SIZE 8
+
+/*
+ * A subsystem describes a set of server routines that can be invoked by
+ * mach_rpc() on the ports that are registered with the subsystem. For
+ * each routine, the routine number is given, along with the
+ * address of the implementation function in the server and a
+ * description of the arguments of the routine (it's "signature").
+ *
+ * This structure definition is only a template for what is really a
+ * variable-length structure (generated by MIG for each subsystem).
+ * The actual structures do not always have one entry in the routine
+ * array, and also have a varying number of entries in the arg_descr
+ * array. Each routine has an array of zero or more arg descriptors
+ * one for each complex arg. These arrays are all catenated together
+ * to form the arg_descr field of the subsystem struct. The
+ * arg_descr field of each routine entry points to a unique sub-sequence
+ * within this catenated array. The goal is to keep everything
+ * contiguous.
+ */
+struct rpc_subsystem {
+ void *reserved; /* Reserved for system use */
+
+ mach_msg_id_t start; /* Min routine number */
+ mach_msg_id_t end; /* Max routine number + 1 */
+ unsigned int maxsize; /* Max mach_msg size */
+ vm_address_t base_addr; /* Address of this struct in user */
+
+ struct rpc_routine_descriptor /* Array of routine descriptors */
+ routine[1 /* Actually, (start-end+1) */
+ ];
+
+ struct rpc_routine_arg_descriptor
+ arg_descriptor[1 /* Actually, the sum of the descr_ */
+ ]; /* count fields for all routines */
+};
+typedef struct rpc_subsystem *rpc_subsystem_t;
+
+#define RPC_SUBSYSTEM_NULL ((rpc_subsystem_t) 0)
+
+#endif /* _MACH_RPC_H_ */
lib/libc/include/x86_64-macos-gnu/mach/semaphore.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2000-2008 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_SEMAPHORE_H_
+#define _MACH_SEMAPHORE_H_
+
+#include <mach/port.h>
+#include <mach/mach_types.h>
+#include <mach/kern_return.h>
+#include <mach/sync_policy.h>
+
+/*
+ * Forward Declarations
+ *
+ * The semaphore creation and deallocation routines are
+ * defined with the Mach task APIs in <mach/task.h>.
+ *
+ * kern_return_t semaphore_create(task_t task,
+ * semaphore_t *new_semaphore,
+ * sync_policy_t policy,
+ * int value);
+ *
+ * kern_return_t semaphore_destroy(task_t task,
+ * semaphore_t semaphore);
+ */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+extern kern_return_t semaphore_signal(semaphore_t semaphore);
+extern kern_return_t semaphore_signal_all(semaphore_t semaphore);
+
+extern kern_return_t semaphore_wait(semaphore_t semaphore);
+
+
+extern kern_return_t semaphore_timedwait(semaphore_t semaphore,
+ mach_timespec_t wait_time);
+
+extern kern_return_t semaphore_timedwait_signal(semaphore_t wait_semaphore,
+ semaphore_t signal_semaphore,
+ mach_timespec_t wait_time);
+
+extern kern_return_t semaphore_wait_signal(semaphore_t wait_semaphore,
+ semaphore_t signal_semaphore);
+
+extern kern_return_t semaphore_signal_thread(semaphore_t semaphore,
+ thread_t thread);
+
+
+__END_DECLS
+
+
+#endif /* _MACH_SEMAPHORE_H_ */
lib/libc/include/x86_64-macos-gnu/mach/std_types.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2002,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.
+ */
+/*
+ */
+/*
+ * Mach standard external interface type definitions.
+ *
+ */
+
+#ifndef _MACH_STD_TYPES_H_
+#define _MACH_STD_TYPES_H_
+
+#include <stdint.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/port.h>
+#include <mach/vm_types.h>
+
+#include <sys/_types.h>
+#include <sys/_types/_uuid_t.h>
+
+#endif /* _MACH_STD_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach/sync_policy.h
@@ -0,0 +1,49 @@
+/*
+ * 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@
+ */
+
+#ifndef _MACH_SYNC_POLICY_H_
+#define _MACH_SYNC_POLICY_H_
+
+typedef int sync_policy_t;
+
+/*
+ * These options define the wait ordering of the synchronizers
+ */
+#define SYNC_POLICY_FIFO 0x0
+#define SYNC_POLICY_FIXED_PRIORITY 0x1
+#define SYNC_POLICY_REVERSED 0x2
+#define SYNC_POLICY_ORDER_MASK 0x3
+#define SYNC_POLICY_LIFO (SYNC_POLICY_FIFO|SYNC_POLICY_REVERSED)
+
+
+#define SYNC_POLICY_MAX 0x7
+
+#endif /* _MACH_SYNC_POLICY_H_ */
lib/libc/include/x86_64-macos-gnu/mach/task.h
@@ -0,0 +1,2523 @@
+#ifndef _task_user_
+#define _task_user_
+
+/* Module task */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef task_MSG_COUNT
+#define task_MSG_COUNT 55
+#endif /* task_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine task_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_create
+(
+ task_t target_task,
+ ledger_array_t ledgers,
+ mach_msg_type_number_t ledgersCnt,
+ boolean_t inherit_memory,
+ task_t *child_task
+);
+
+/* Routine task_terminate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_terminate
+(
+ task_t target_task
+);
+
+/* Routine task_threads */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_threads
+(
+ task_inspect_t target_task,
+ thread_act_array_t *act_list,
+ mach_msg_type_number_t *act_listCnt
+);
+
+/* Routine mach_ports_register */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t mach_ports_register
+(
+ task_t target_task,
+ mach_port_array_t init_port_set,
+ mach_msg_type_number_t init_port_setCnt
+);
+
+/* Routine mach_ports_lookup */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t mach_ports_lookup
+(
+ task_t target_task,
+ mach_port_array_t *init_port_set,
+ mach_msg_type_number_t *init_port_setCnt
+);
+
+/* Routine task_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_info
+(
+ task_name_t target_task,
+ task_flavor_t flavor,
+ task_info_t task_info_out,
+ mach_msg_type_number_t *task_info_outCnt
+);
+
+/* Routine task_set_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_info
+(
+ task_t target_task,
+ task_flavor_t flavor,
+ task_info_t task_info_in,
+ mach_msg_type_number_t task_info_inCnt
+);
+
+/* Routine task_suspend */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_suspend
+(
+ task_t target_task
+);
+
+/* Routine task_resume */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_resume
+(
+ task_t target_task
+);
+
+/* Routine task_get_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_special_port
+(
+ task_inspect_t task,
+ int which_port,
+ mach_port_t *special_port
+);
+
+/* Routine task_set_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_special_port
+(
+ task_t task,
+ int which_port,
+ mach_port_t special_port
+);
+
+/* Routine thread_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_create
+(
+ task_t parent_task,
+ thread_act_t *child_act
+);
+
+/* Routine thread_create_running */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_create_running
+(
+ task_t parent_task,
+ thread_state_flavor_t flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt,
+ thread_act_t *child_act
+);
+
+/* Routine task_set_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_exception_ports
+(
+ task_t task,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor
+);
+
+/* Routine task_get_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_exception_ports
+(
+ task_inspect_t task,
+ exception_mask_t exception_mask,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine task_swap_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_swap_exception_ports
+(
+ task_t task,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlerss,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine lock_set_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_set_create
+(
+ task_t task,
+ lock_set_t *new_lock_set,
+ int n_ulocks,
+ int policy
+);
+
+/* Routine lock_set_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_set_destroy
+(
+ task_t task,
+ lock_set_t lock_set
+);
+
+/* Routine semaphore_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t semaphore_create
+(
+ task_t task,
+ semaphore_t *semaphore,
+ int policy,
+ int value
+);
+
+/* Routine semaphore_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t semaphore_destroy
+(
+ task_t task,
+ semaphore_t semaphore
+);
+
+/* Routine task_policy_set */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_policy_set
+(
+ task_t task,
+ task_policy_flavor_t flavor,
+ task_policy_t policy_info,
+ mach_msg_type_number_t policy_infoCnt
+);
+
+/* Routine task_policy_get */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_policy_get
+(
+ task_t task,
+ task_policy_flavor_t flavor,
+ task_policy_t policy_info,
+ mach_msg_type_number_t *policy_infoCnt,
+ boolean_t *get_default
+);
+
+/* Routine task_sample */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_sample
+(
+ task_t task,
+ mach_port_t reply
+);
+
+/* Routine task_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_policy
+(
+ task_t task,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ boolean_t set_limit,
+ boolean_t change
+);
+
+/* Routine task_set_emulation */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_emulation
+(
+ task_t target_port,
+ vm_address_t routine_entry_pt,
+ int routine_number
+);
+
+/* Routine task_get_emulation_vector */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_emulation_vector
+(
+ task_t task,
+ int *vector_start,
+ emulation_vector_t *emulation_vector,
+ mach_msg_type_number_t *emulation_vectorCnt
+);
+
+/* Routine task_set_emulation_vector */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_emulation_vector
+(
+ task_t task,
+ int vector_start,
+ emulation_vector_t emulation_vector,
+ mach_msg_type_number_t emulation_vectorCnt
+);
+
+/* Routine task_set_ras_pc */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_ras_pc
+(
+ task_t target_task,
+ vm_address_t basepc,
+ vm_address_t boundspc
+);
+
+/* Routine task_zone_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_zone_info
+(
+ task_t target_task,
+ mach_zone_name_array_t *names,
+ mach_msg_type_number_t *namesCnt,
+ task_zone_info_array_t *info,
+ mach_msg_type_number_t *infoCnt
+);
+
+/* Routine task_assign */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_assign
+(
+ task_t task,
+ processor_set_t new_set,
+ boolean_t assign_threads
+);
+
+/* Routine task_assign_default */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_assign_default
+(
+ task_t task,
+ boolean_t assign_threads
+);
+
+/* Routine task_get_assignment */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_assignment
+(
+ task_t task,
+ processor_set_name_t *assigned_set
+);
+
+/* Routine task_set_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_policy
+(
+ task_t task,
+ processor_set_t pset,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ policy_limit_t limit,
+ mach_msg_type_number_t limitCnt,
+ boolean_t change
+);
+
+/* Routine task_get_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_state
+(
+ task_t task,
+ thread_state_flavor_t flavor,
+ thread_state_t old_state,
+ mach_msg_type_number_t *old_stateCnt
+);
+
+/* Routine task_set_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_state
+(
+ task_t task,
+ thread_state_flavor_t flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt
+);
+
+/* Routine task_set_phys_footprint_limit */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_phys_footprint_limit
+(
+ task_t task,
+ int new_limit,
+ int *old_limit
+);
+
+/* Routine task_suspend2 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_suspend2
+(
+ task_t target_task,
+ task_suspension_token_t *suspend_token
+);
+
+/* Routine task_resume2 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_resume2
+(
+ task_suspension_token_t suspend_token
+);
+
+/* Routine task_purgable_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_purgable_info
+(
+ task_t task,
+ task_purgable_info_t *stats
+);
+
+/* Routine task_get_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_mach_voucher
+(
+ task_t task,
+ mach_voucher_selector_t which,
+ ipc_voucher_t *voucher
+);
+
+/* Routine task_set_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_mach_voucher
+(
+ task_t task,
+ ipc_voucher_t voucher
+);
+
+/* Routine task_swap_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_swap_mach_voucher
+(
+ task_t task,
+ ipc_voucher_t new_voucher,
+ ipc_voucher_t *old_voucher
+);
+
+/* Routine task_generate_corpse */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_generate_corpse
+(
+ task_t task,
+ mach_port_t *corpse_task_port
+);
+
+/* Routine task_map_corpse_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_map_corpse_info
+(
+ task_t task,
+ task_t corspe_task,
+ vm_address_t *kcd_addr_begin,
+ uint32_t *kcd_size
+);
+
+/* Routine task_register_dyld_image_infos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_image_infos
+(
+ task_t task,
+ dyld_kernel_image_info_array_t dyld_images,
+ mach_msg_type_number_t dyld_imagesCnt
+);
+
+/* Routine task_unregister_dyld_image_infos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_unregister_dyld_image_infos
+(
+ task_t task,
+ dyld_kernel_image_info_array_t dyld_images,
+ mach_msg_type_number_t dyld_imagesCnt
+);
+
+/* Routine task_get_dyld_image_infos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_dyld_image_infos
+(
+ task_inspect_t task,
+ dyld_kernel_image_info_array_t *dyld_images,
+ mach_msg_type_number_t *dyld_imagesCnt
+);
+
+/* Routine task_register_dyld_shared_cache_image_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_shared_cache_image_info
+(
+ task_t task,
+ dyld_kernel_image_info_t dyld_cache_image,
+ boolean_t no_cache,
+ boolean_t private_cache
+);
+
+/* Routine task_register_dyld_set_dyld_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_set_dyld_state
+(
+ task_t task,
+ uint8_t dyld_state
+);
+
+/* Routine task_register_dyld_get_process_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_get_process_state
+(
+ task_t task,
+ dyld_kernel_process_info_t *dyld_process_state
+);
+
+/* Routine task_map_corpse_info_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_map_corpse_info_64
+(
+ task_t task,
+ task_t corspe_task,
+ mach_vm_address_t *kcd_addr_begin,
+ mach_vm_size_t *kcd_size
+);
+
+/* Routine task_inspect */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_inspect
+(
+ task_inspect_t task,
+ task_inspect_flavor_t flavor,
+ task_inspect_info_t info_out,
+ mach_msg_type_number_t *info_outCnt
+);
+
+/* Routine task_get_exc_guard_behavior */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_exc_guard_behavior
+(
+ task_inspect_t task,
+ task_exc_guard_behavior_t *behavior
+);
+
+/* Routine task_set_exc_guard_behavior */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_exc_guard_behavior
+(
+ task_t task,
+ task_exc_guard_behavior_t behavior
+);
+
+/* Routine task_create_suid_cred */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_create_suid_cred
+(
+ task_t task,
+ suid_cred_path_t path,
+ suid_cred_uid_t uid,
+ suid_cred_t *delegation
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__task_subsystem__defined
+#define __Request__task_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t ledgers;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t ledgersCnt;
+ boolean_t inherit_memory;
+ } __Request__task_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t init_port_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t init_port_setCnt;
+ } __Request__mach_ports_register_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_ports_lookup_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_flavor_t flavor;
+ mach_msg_type_number_t task_info_outCnt;
+ } __Request__task_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_flavor_t flavor;
+ mach_msg_type_number_t task_info_inCnt;
+ integer_t task_info_in[87];
+ } __Request__task_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__task_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__task_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[614];
+ } __Request__thread_create_running_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__task_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ } __Request__task_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__task_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int n_ulocks;
+ int policy;
+ } __Request__lock_set_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t lock_set;
+ /* end of the kernel processed data */
+ } __Request__lock_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int policy;
+ int value;
+ } __Request__semaphore_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t semaphore;
+ /* end of the kernel processed data */
+ } __Request__semaphore_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ } __Request__task_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ boolean_t get_default;
+ } __Request__task_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t reply;
+ /* end of the kernel processed data */
+ } __Request__task_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ boolean_t set_limit;
+ boolean_t change;
+ } __Request__task_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t routine_entry_pt;
+ int routine_number;
+ } __Request__task_set_emulation_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t emulation_vector;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int vector_start;
+ mach_msg_type_number_t emulation_vectorCnt;
+ } __Request__task_set_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t basepc;
+ vm_address_t boundspc;
+ } __Request__task_set_ras_pc_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_zone_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ boolean_t assign_threads;
+ } __Request__task_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ boolean_t assign_threads;
+ } __Request__task_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t pset;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ mach_msg_type_number_t limitCnt;
+ integer_t limit[1];
+ boolean_t change;
+ } __Request__task_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t old_stateCnt;
+ } __Request__task_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[614];
+ } __Request__task_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int new_limit;
+ } __Request__task_set_phys_footprint_limit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_suspend2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_resume2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_purgable_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_voucher_selector_t which;
+ } __Request__task_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Request__task_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_voucher;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Request__task_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_generate_corpse_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t corspe_task;
+ /* end of the kernel processed data */
+ } __Request__task_map_corpse_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t dyld_images;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dyld_imagesCnt;
+ } __Request__task_register_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t dyld_images;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dyld_imagesCnt;
+ } __Request__task_unregister_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ dyld_kernel_image_info_t dyld_cache_image;
+ boolean_t no_cache;
+ boolean_t private_cache;
+ } __Request__task_register_dyld_shared_cache_image_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ uint8_t dyld_state;
+ char dyld_statePad[3];
+ } __Request__task_register_dyld_set_dyld_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_register_dyld_get_process_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t corspe_task;
+ /* end of the kernel processed data */
+ } __Request__task_map_corpse_info_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_inspect_flavor_t flavor;
+ mach_msg_type_number_t info_outCnt;
+ } __Request__task_inspect_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_exc_guard_behavior_t behavior;
+ } __Request__task_set_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_msg_type_number_t pathOffset; /* MiG doesn't use it */
+ mach_msg_type_number_t pathCnt;
+ char path[1024];
+ suid_cred_uid_t uid;
+ } __Request__task_create_suid_cred_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__task_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__task_subsystem__defined
+#define __RequestUnion__task_subsystem__defined
+union __RequestUnion__task_subsystem {
+ __Request__task_create_t Request_task_create;
+ __Request__task_terminate_t Request_task_terminate;
+ __Request__task_threads_t Request_task_threads;
+ __Request__mach_ports_register_t Request_mach_ports_register;
+ __Request__mach_ports_lookup_t Request_mach_ports_lookup;
+ __Request__task_info_t Request_task_info;
+ __Request__task_set_info_t Request_task_set_info;
+ __Request__task_suspend_t Request_task_suspend;
+ __Request__task_resume_t Request_task_resume;
+ __Request__task_get_special_port_t Request_task_get_special_port;
+ __Request__task_set_special_port_t Request_task_set_special_port;
+ __Request__thread_create_t Request_thread_create;
+ __Request__thread_create_running_t Request_thread_create_running;
+ __Request__task_set_exception_ports_t Request_task_set_exception_ports;
+ __Request__task_get_exception_ports_t Request_task_get_exception_ports;
+ __Request__task_swap_exception_ports_t Request_task_swap_exception_ports;
+ __Request__lock_set_create_t Request_lock_set_create;
+ __Request__lock_set_destroy_t Request_lock_set_destroy;
+ __Request__semaphore_create_t Request_semaphore_create;
+ __Request__semaphore_destroy_t Request_semaphore_destroy;
+ __Request__task_policy_set_t Request_task_policy_set;
+ __Request__task_policy_get_t Request_task_policy_get;
+ __Request__task_sample_t Request_task_sample;
+ __Request__task_policy_t Request_task_policy;
+ __Request__task_set_emulation_t Request_task_set_emulation;
+ __Request__task_get_emulation_vector_t Request_task_get_emulation_vector;
+ __Request__task_set_emulation_vector_t Request_task_set_emulation_vector;
+ __Request__task_set_ras_pc_t Request_task_set_ras_pc;
+ __Request__task_zone_info_t Request_task_zone_info;
+ __Request__task_assign_t Request_task_assign;
+ __Request__task_assign_default_t Request_task_assign_default;
+ __Request__task_get_assignment_t Request_task_get_assignment;
+ __Request__task_set_policy_t Request_task_set_policy;
+ __Request__task_get_state_t Request_task_get_state;
+ __Request__task_set_state_t Request_task_set_state;
+ __Request__task_set_phys_footprint_limit_t Request_task_set_phys_footprint_limit;
+ __Request__task_suspend2_t Request_task_suspend2;
+ __Request__task_resume2_t Request_task_resume2;
+ __Request__task_purgable_info_t Request_task_purgable_info;
+ __Request__task_get_mach_voucher_t Request_task_get_mach_voucher;
+ __Request__task_set_mach_voucher_t Request_task_set_mach_voucher;
+ __Request__task_swap_mach_voucher_t Request_task_swap_mach_voucher;
+ __Request__task_generate_corpse_t Request_task_generate_corpse;
+ __Request__task_map_corpse_info_t Request_task_map_corpse_info;
+ __Request__task_register_dyld_image_infos_t Request_task_register_dyld_image_infos;
+ __Request__task_unregister_dyld_image_infos_t Request_task_unregister_dyld_image_infos;
+ __Request__task_get_dyld_image_infos_t Request_task_get_dyld_image_infos;
+ __Request__task_register_dyld_shared_cache_image_info_t Request_task_register_dyld_shared_cache_image_info;
+ __Request__task_register_dyld_set_dyld_state_t Request_task_register_dyld_set_dyld_state;
+ __Request__task_register_dyld_get_process_state_t Request_task_register_dyld_get_process_state;
+ __Request__task_map_corpse_info_64_t Request_task_map_corpse_info_64;
+ __Request__task_inspect_t Request_task_inspect;
+ __Request__task_get_exc_guard_behavior_t Request_task_get_exc_guard_behavior;
+ __Request__task_set_exc_guard_behavior_t Request_task_set_exc_guard_behavior;
+ __Request__task_create_suid_cred_t Request_task_create_suid_cred;
+};
+#endif /* !__RequestUnion__task_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__task_subsystem__defined
+#define __Reply__task_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_task;
+ /* end of the kernel processed data */
+ } __Reply__task_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t act_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t act_listCnt;
+ } __Reply__task_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_ports_register_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t init_port_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t init_port_setCnt;
+ } __Reply__mach_ports_lookup_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t task_info_outCnt;
+ integer_t task_info_out[87];
+ } __Reply__task_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ } __Reply__task_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_act;
+ /* end of the kernel processed data */
+ } __Reply__thread_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_act;
+ /* end of the kernel processed data */
+ } __Reply__thread_create_running_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__task_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlerss[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__task_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_lock_set;
+ /* end of the kernel processed data */
+ } __Reply__lock_set_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t semaphore;
+ /* end of the kernel processed data */
+ } __Reply__semaphore_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__semaphore_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ boolean_t get_default;
+ } __Reply__task_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_emulation_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t emulation_vector;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int vector_start;
+ mach_msg_type_number_t emulation_vectorCnt;
+ } __Reply__task_get_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_ras_pc_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t names;
+ mach_msg_ool_descriptor_t info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t namesCnt;
+ mach_msg_type_number_t infoCnt;
+ } __Reply__task_zone_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t assigned_set;
+ /* end of the kernel processed data */
+ } __Reply__task_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t old_stateCnt;
+ natural_t old_state[614];
+ } __Reply__task_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ int old_limit;
+ } __Reply__task_set_phys_footprint_limit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t suspend_token;
+ /* end of the kernel processed data */
+ } __Reply__task_suspend2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_resume2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ task_purgable_info_t stats;
+ } __Reply__task_purgable_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Reply__task_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Reply__task_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t corpse_task_port;
+ /* end of the kernel processed data */
+ } __Reply__task_generate_corpse_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t kcd_addr_begin;
+ uint32_t kcd_size;
+ } __Reply__task_map_corpse_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_register_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_unregister_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t dyld_images;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dyld_imagesCnt;
+ } __Reply__task_get_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_register_dyld_shared_cache_image_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_register_dyld_set_dyld_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ dyld_kernel_process_info_t dyld_process_state;
+ } __Reply__task_register_dyld_get_process_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_vm_address_t kcd_addr_begin;
+ mach_vm_size_t kcd_size;
+ } __Reply__task_map_corpse_info_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t info_outCnt;
+ integer_t info_out[4];
+ } __Reply__task_inspect_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ task_exc_guard_behavior_t behavior;
+ } __Reply__task_get_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t delegation;
+ /* end of the kernel processed data */
+ } __Reply__task_create_suid_cred_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__task_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__task_subsystem__defined
+#define __ReplyUnion__task_subsystem__defined
+union __ReplyUnion__task_subsystem {
+ __Reply__task_create_t Reply_task_create;
+ __Reply__task_terminate_t Reply_task_terminate;
+ __Reply__task_threads_t Reply_task_threads;
+ __Reply__mach_ports_register_t Reply_mach_ports_register;
+ __Reply__mach_ports_lookup_t Reply_mach_ports_lookup;
+ __Reply__task_info_t Reply_task_info;
+ __Reply__task_set_info_t Reply_task_set_info;
+ __Reply__task_suspend_t Reply_task_suspend;
+ __Reply__task_resume_t Reply_task_resume;
+ __Reply__task_get_special_port_t Reply_task_get_special_port;
+ __Reply__task_set_special_port_t Reply_task_set_special_port;
+ __Reply__thread_create_t Reply_thread_create;
+ __Reply__thread_create_running_t Reply_thread_create_running;
+ __Reply__task_set_exception_ports_t Reply_task_set_exception_ports;
+ __Reply__task_get_exception_ports_t Reply_task_get_exception_ports;
+ __Reply__task_swap_exception_ports_t Reply_task_swap_exception_ports;
+ __Reply__lock_set_create_t Reply_lock_set_create;
+ __Reply__lock_set_destroy_t Reply_lock_set_destroy;
+ __Reply__semaphore_create_t Reply_semaphore_create;
+ __Reply__semaphore_destroy_t Reply_semaphore_destroy;
+ __Reply__task_policy_set_t Reply_task_policy_set;
+ __Reply__task_policy_get_t Reply_task_policy_get;
+ __Reply__task_sample_t Reply_task_sample;
+ __Reply__task_policy_t Reply_task_policy;
+ __Reply__task_set_emulation_t Reply_task_set_emulation;
+ __Reply__task_get_emulation_vector_t Reply_task_get_emulation_vector;
+ __Reply__task_set_emulation_vector_t Reply_task_set_emulation_vector;
+ __Reply__task_set_ras_pc_t Reply_task_set_ras_pc;
+ __Reply__task_zone_info_t Reply_task_zone_info;
+ __Reply__task_assign_t Reply_task_assign;
+ __Reply__task_assign_default_t Reply_task_assign_default;
+ __Reply__task_get_assignment_t Reply_task_get_assignment;
+ __Reply__task_set_policy_t Reply_task_set_policy;
+ __Reply__task_get_state_t Reply_task_get_state;
+ __Reply__task_set_state_t Reply_task_set_state;
+ __Reply__task_set_phys_footprint_limit_t Reply_task_set_phys_footprint_limit;
+ __Reply__task_suspend2_t Reply_task_suspend2;
+ __Reply__task_resume2_t Reply_task_resume2;
+ __Reply__task_purgable_info_t Reply_task_purgable_info;
+ __Reply__task_get_mach_voucher_t Reply_task_get_mach_voucher;
+ __Reply__task_set_mach_voucher_t Reply_task_set_mach_voucher;
+ __Reply__task_swap_mach_voucher_t Reply_task_swap_mach_voucher;
+ __Reply__task_generate_corpse_t Reply_task_generate_corpse;
+ __Reply__task_map_corpse_info_t Reply_task_map_corpse_info;
+ __Reply__task_register_dyld_image_infos_t Reply_task_register_dyld_image_infos;
+ __Reply__task_unregister_dyld_image_infos_t Reply_task_unregister_dyld_image_infos;
+ __Reply__task_get_dyld_image_infos_t Reply_task_get_dyld_image_infos;
+ __Reply__task_register_dyld_shared_cache_image_info_t Reply_task_register_dyld_shared_cache_image_info;
+ __Reply__task_register_dyld_set_dyld_state_t Reply_task_register_dyld_set_dyld_state;
+ __Reply__task_register_dyld_get_process_state_t Reply_task_register_dyld_get_process_state;
+ __Reply__task_map_corpse_info_64_t Reply_task_map_corpse_info_64;
+ __Reply__task_inspect_t Reply_task_inspect;
+ __Reply__task_get_exc_guard_behavior_t Reply_task_get_exc_guard_behavior;
+ __Reply__task_set_exc_guard_behavior_t Reply_task_set_exc_guard_behavior;
+ __Reply__task_create_suid_cred_t Reply_task_create_suid_cred;
+};
+#endif /* !__RequestUnion__task_subsystem__defined */
+
+#ifndef subsystem_to_name_map_task
+#define subsystem_to_name_map_task \
+ { "task_create", 3400 },\
+ { "task_terminate", 3401 },\
+ { "task_threads", 3402 },\
+ { "mach_ports_register", 3403 },\
+ { "mach_ports_lookup", 3404 },\
+ { "task_info", 3405 },\
+ { "task_set_info", 3406 },\
+ { "task_suspend", 3407 },\
+ { "task_resume", 3408 },\
+ { "task_get_special_port", 3409 },\
+ { "task_set_special_port", 3410 },\
+ { "thread_create", 3411 },\
+ { "thread_create_running", 3412 },\
+ { "task_set_exception_ports", 3413 },\
+ { "task_get_exception_ports", 3414 },\
+ { "task_swap_exception_ports", 3415 },\
+ { "lock_set_create", 3416 },\
+ { "lock_set_destroy", 3417 },\
+ { "semaphore_create", 3418 },\
+ { "semaphore_destroy", 3419 },\
+ { "task_policy_set", 3420 },\
+ { "task_policy_get", 3421 },\
+ { "task_sample", 3422 },\
+ { "task_policy", 3423 },\
+ { "task_set_emulation", 3424 },\
+ { "task_get_emulation_vector", 3425 },\
+ { "task_set_emulation_vector", 3426 },\
+ { "task_set_ras_pc", 3427 },\
+ { "task_zone_info", 3428 },\
+ { "task_assign", 3429 },\
+ { "task_assign_default", 3430 },\
+ { "task_get_assignment", 3431 },\
+ { "task_set_policy", 3432 },\
+ { "task_get_state", 3433 },\
+ { "task_set_state", 3434 },\
+ { "task_set_phys_footprint_limit", 3435 },\
+ { "task_suspend2", 3436 },\
+ { "task_resume2", 3437 },\
+ { "task_purgable_info", 3438 },\
+ { "task_get_mach_voucher", 3439 },\
+ { "task_set_mach_voucher", 3440 },\
+ { "task_swap_mach_voucher", 3441 },\
+ { "task_generate_corpse", 3442 },\
+ { "task_map_corpse_info", 3443 },\
+ { "task_register_dyld_image_infos", 3444 },\
+ { "task_unregister_dyld_image_infos", 3445 },\
+ { "task_get_dyld_image_infos", 3446 },\
+ { "task_register_dyld_shared_cache_image_info", 3447 },\
+ { "task_register_dyld_set_dyld_state", 3448 },\
+ { "task_register_dyld_get_process_state", 3449 },\
+ { "task_map_corpse_info_64", 3450 },\
+ { "task_inspect", 3451 },\
+ { "task_get_exc_guard_behavior", 3452 },\
+ { "task_set_exc_guard_behavior", 3453 },\
+ { "task_create_suid_cred", 3454 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _task_user_ */
lib/libc/include/x86_64-macos-gnu/mach/task_info.h
@@ -0,0 +1,478 @@
+/*
+ * Copyright (c) 2000-2007, 2015 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,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.
+ */
+/*
+ * Machine-independent task information structures and definitions.
+ *
+ * The definitions in this file are exported to the user. The kernel
+ * will translate its internal data structures to these structures
+ * as appropriate.
+ *
+ */
+
+#ifndef _MACH_TASK_INFO_H_
+#define _MACH_TASK_INFO_H_
+
+#include <mach/message.h>
+#include <mach/machine/vm_types.h>
+#include <mach/time_value.h>
+#include <mach/policy.h>
+#include <mach/vm_statistics.h> /* for vm_extmod_statistics_data_t */
+#include <Availability.h>
+
+#include <sys/cdefs.h>
+
+/*
+ * Generic information structure to allow for expansion.
+ */
+typedef natural_t task_flavor_t;
+typedef integer_t *task_info_t; /* varying array of int */
+
+/* Deprecated, use per structure _data_t's instead */
+#define TASK_INFO_MAX (1024) /* maximum array size */
+typedef integer_t task_info_data_t[TASK_INFO_MAX];
+
+/*
+ * Currently defined information structures.
+ */
+
+#pragma pack(push, 4)
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+#define TASK_BASIC_INFO_32 4 /* basic information */
+#define TASK_BASIC2_INFO_32 6
+
+struct task_basic_info_32 {
+ integer_t suspend_count; /* suspend count for task */
+ natural_t virtual_size; /* virtual memory size (bytes) */
+ natural_t resident_size; /* resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+typedef struct task_basic_info_32 task_basic_info_32_data_t;
+typedef struct task_basic_info_32 *task_basic_info_32_t;
+#define TASK_BASIC_INFO_32_COUNT \
+ (sizeof(task_basic_info_32_data_t) / sizeof(natural_t))
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+struct task_basic_info_64 {
+ integer_t suspend_count; /* suspend count for task */
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+typedef struct task_basic_info_64 task_basic_info_64_data_t;
+typedef struct task_basic_info_64 *task_basic_info_64_t;
+
+#define TASK_BASIC_INFO_64 5 /* 64-bit capable basic info */
+#define TASK_BASIC_INFO_64_COUNT \
+ (sizeof(task_basic_info_64_data_t) / sizeof(natural_t))
+
+
+/* localized structure - cannot be safely passed between tasks of differing sizes */
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+struct task_basic_info {
+ integer_t suspend_count; /* suspend count for task */
+ vm_size_t virtual_size; /* virtual memory size (bytes) */
+ vm_size_t resident_size; /* resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+
+typedef struct task_basic_info task_basic_info_data_t;
+typedef struct task_basic_info *task_basic_info_t;
+#define TASK_BASIC_INFO_COUNT \
+ (sizeof(task_basic_info_data_t) / sizeof(natural_t))
+#if !defined(__LP64__)
+#define TASK_BASIC_INFO TASK_BASIC_INFO_32
+#else
+#define TASK_BASIC_INFO TASK_BASIC_INFO_64
+#endif
+
+
+
+#define TASK_EVENTS_INFO 2 /* various event counts */
+
+struct task_events_info {
+ integer_t faults; /* number of page faults */
+ integer_t pageins; /* number of actual pageins */
+ integer_t cow_faults; /* number of copy-on-write faults */
+ integer_t messages_sent; /* number of messages sent */
+ integer_t messages_received; /* number of messages received */
+ integer_t syscalls_mach; /* number of mach system calls */
+ integer_t syscalls_unix; /* number of unix system calls */
+ integer_t csw; /* number of context switches */
+};
+typedef struct task_events_info task_events_info_data_t;
+typedef struct task_events_info *task_events_info_t;
+#define TASK_EVENTS_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_events_info_data_t) / sizeof(natural_t)))
+
+#define TASK_THREAD_TIMES_INFO 3 /* total times for live threads -
+ * only accurate if suspended */
+
+struct task_thread_times_info {
+ time_value_t user_time; /* total user run time for
+ * live threads */
+ time_value_t system_time; /* total system run time for
+ * live threads */
+};
+
+typedef struct task_thread_times_info task_thread_times_info_data_t;
+typedef struct task_thread_times_info *task_thread_times_info_t;
+#define TASK_THREAD_TIMES_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_thread_times_info_data_t) / sizeof(natural_t)))
+
+#define TASK_ABSOLUTETIME_INFO 1
+
+struct task_absolutetime_info {
+ uint64_t total_user;
+ uint64_t total_system;
+ uint64_t threads_user; /* existing threads only */
+ uint64_t threads_system;
+};
+
+typedef struct task_absolutetime_info task_absolutetime_info_data_t;
+typedef struct task_absolutetime_info *task_absolutetime_info_t;
+#define TASK_ABSOLUTETIME_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_absolutetime_info_data_t) / sizeof (natural_t)))
+
+#define TASK_KERNELMEMORY_INFO 7
+
+struct task_kernelmemory_info {
+ uint64_t total_palloc; /* private kernel mem alloc'ed */
+ uint64_t total_pfree; /* private kernel mem freed */
+ uint64_t total_salloc; /* shared kernel mem alloc'ed */
+ uint64_t total_sfree; /* shared kernel mem freed */
+};
+
+typedef struct task_kernelmemory_info task_kernelmemory_info_data_t;
+typedef struct task_kernelmemory_info *task_kernelmemory_info_t;
+#define TASK_KERNELMEMORY_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_kernelmemory_info_data_t) / sizeof (natural_t)))
+
+#define TASK_SECURITY_TOKEN 13
+#define TASK_SECURITY_TOKEN_COUNT ((mach_msg_type_number_t) \
+ (sizeof(security_token_t) / sizeof(natural_t)))
+
+#define TASK_AUDIT_TOKEN 15
+#define TASK_AUDIT_TOKEN_COUNT \
+ (sizeof(audit_token_t) / sizeof(natural_t))
+
+
+#define TASK_AFFINITY_TAG_INFO 16 /* This is experimental. */
+
+struct task_affinity_tag_info {
+ integer_t set_count;
+ integer_t min;
+ integer_t max;
+ integer_t task_count;
+};
+typedef struct task_affinity_tag_info task_affinity_tag_info_data_t;
+typedef struct task_affinity_tag_info *task_affinity_tag_info_t;
+#define TASK_AFFINITY_TAG_INFO_COUNT \
+ (sizeof(task_affinity_tag_info_data_t) / sizeof(natural_t))
+
+#define TASK_DYLD_INFO 17
+
+struct task_dyld_info {
+ mach_vm_address_t all_image_info_addr;
+ mach_vm_size_t all_image_info_size;
+ integer_t all_image_info_format;
+};
+typedef struct task_dyld_info task_dyld_info_data_t;
+typedef struct task_dyld_info *task_dyld_info_t;
+#define TASK_DYLD_INFO_COUNT \
+ (sizeof(task_dyld_info_data_t) / sizeof(natural_t))
+#define TASK_DYLD_ALL_IMAGE_INFO_32 0 /* format value */
+#define TASK_DYLD_ALL_IMAGE_INFO_64 1 /* format value */
+
+
+#define TASK_EXTMOD_INFO 19
+
+struct task_extmod_info {
+ unsigned char task_uuid[16];
+ vm_extmod_statistics_data_t extmod_statistics;
+};
+typedef struct task_extmod_info task_extmod_info_data_t;
+typedef struct task_extmod_info *task_extmod_info_t;
+#define TASK_EXTMOD_INFO_COUNT \
+ (sizeof(task_extmod_info_data_t) / sizeof(natural_t))
+
+
+#define MACH_TASK_BASIC_INFO 20 /* always 64-bit basic info */
+struct mach_task_basic_info {
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+ mach_vm_size_t resident_size_max; /* maximum resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+ integer_t suspend_count; /* suspend count for task */
+};
+typedef struct mach_task_basic_info mach_task_basic_info_data_t;
+typedef struct mach_task_basic_info *mach_task_basic_info_t;
+#define MACH_TASK_BASIC_INFO_COUNT \
+ (sizeof(mach_task_basic_info_data_t) / sizeof(natural_t))
+
+
+#define TASK_POWER_INFO 21
+
+struct task_power_info {
+ uint64_t total_user;
+ uint64_t total_system;
+ uint64_t task_interrupt_wakeups;
+ uint64_t task_platform_idle_wakeups;
+ uint64_t task_timer_wakeups_bin_1;
+ uint64_t task_timer_wakeups_bin_2;
+};
+
+typedef struct task_power_info task_power_info_data_t;
+typedef struct task_power_info *task_power_info_t;
+#define TASK_POWER_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_power_info_data_t) / sizeof (natural_t)))
+
+
+
+#define TASK_VM_INFO 22
+#define TASK_VM_INFO_PURGEABLE 23
+struct task_vm_info {
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ integer_t region_count; /* number of memory regions */
+ integer_t page_size;
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+ mach_vm_size_t resident_size_peak; /* peak resident size (bytes) */
+
+ mach_vm_size_t device;
+ mach_vm_size_t device_peak;
+ mach_vm_size_t internal;
+ mach_vm_size_t internal_peak;
+ mach_vm_size_t external;
+ mach_vm_size_t external_peak;
+ mach_vm_size_t reusable;
+ mach_vm_size_t reusable_peak;
+ mach_vm_size_t purgeable_volatile_pmap;
+ mach_vm_size_t purgeable_volatile_resident;
+ mach_vm_size_t purgeable_volatile_virtual;
+ mach_vm_size_t compressed;
+ mach_vm_size_t compressed_peak;
+ mach_vm_size_t compressed_lifetime;
+
+ /* added for rev1 */
+ mach_vm_size_t phys_footprint;
+
+ /* added for rev2 */
+ mach_vm_address_t min_address;
+ mach_vm_address_t max_address;
+
+ /* added for rev3 */
+ int64_t ledger_phys_footprint_peak;
+ int64_t ledger_purgeable_nonvolatile;
+ int64_t ledger_purgeable_novolatile_compressed;
+ int64_t ledger_purgeable_volatile;
+ int64_t ledger_purgeable_volatile_compressed;
+ int64_t ledger_tag_network_nonvolatile;
+ int64_t ledger_tag_network_nonvolatile_compressed;
+ int64_t ledger_tag_network_volatile;
+ int64_t ledger_tag_network_volatile_compressed;
+ int64_t ledger_tag_media_footprint;
+ int64_t ledger_tag_media_footprint_compressed;
+ int64_t ledger_tag_media_nofootprint;
+ int64_t ledger_tag_media_nofootprint_compressed;
+ int64_t ledger_tag_graphics_footprint;
+ int64_t ledger_tag_graphics_footprint_compressed;
+ int64_t ledger_tag_graphics_nofootprint;
+ int64_t ledger_tag_graphics_nofootprint_compressed;
+ int64_t ledger_tag_neural_footprint;
+ int64_t ledger_tag_neural_footprint_compressed;
+ int64_t ledger_tag_neural_nofootprint;
+ int64_t ledger_tag_neural_nofootprint_compressed;
+
+ /* added for rev4 */
+ uint64_t limit_bytes_remaining;
+
+ /* added for rev5 */
+ integer_t decompressions;
+};
+typedef struct task_vm_info task_vm_info_data_t;
+typedef struct task_vm_info *task_vm_info_t;
+#define TASK_VM_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_vm_info_data_t) / sizeof (natural_t)))
+#define TASK_VM_INFO_REV5_COUNT TASK_VM_INFO_COUNT
+#define TASK_VM_INFO_REV4_COUNT /* doesn't include decompressions */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV5_COUNT - 1))
+#define TASK_VM_INFO_REV3_COUNT /* doesn't include limit bytes */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV4_COUNT - 2))
+#define TASK_VM_INFO_REV2_COUNT /* doesn't include extra ledgers info */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV3_COUNT - 42))
+#define TASK_VM_INFO_REV1_COUNT /* doesn't include min and max address */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV2_COUNT - 4))
+#define TASK_VM_INFO_REV0_COUNT /* doesn't include phys_footprint */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV1_COUNT - 2))
+
+typedef struct vm_purgeable_info task_purgable_info_t;
+
+
+#define TASK_TRACE_MEMORY_INFO 24
+struct task_trace_memory_info {
+ uint64_t user_memory_address; /* address of start of trace memory buffer */
+ uint64_t buffer_size; /* size of buffer in bytes */
+ uint64_t mailbox_array_size; /* size of mailbox area in bytes */
+};
+typedef struct task_trace_memory_info task_trace_memory_info_data_t;
+typedef struct task_trace_memory_info * task_trace_memory_info_t;
+#define TASK_TRACE_MEMORY_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_trace_memory_info_data_t) / sizeof(natural_t)))
+
+#define TASK_WAIT_STATE_INFO 25 /* deprecated. */
+struct task_wait_state_info {
+ uint64_t total_wait_state_time; /* Time that all threads past and present have been in a wait state */
+ uint64_t total_wait_sfi_state_time; /* Time that threads have been in SFI wait (should be a subset of total wait state time */
+ uint32_t _reserved[4];
+};
+typedef struct task_wait_state_info task_wait_state_info_data_t;
+typedef struct task_wait_state_info * task_wait_state_info_t;
+#define TASK_WAIT_STATE_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_wait_state_info_data_t) / sizeof(natural_t)))
+
+#define TASK_POWER_INFO_V2 26
+
+typedef struct {
+ uint64_t task_gpu_utilisation;
+ uint64_t task_gpu_stat_reserved0;
+ uint64_t task_gpu_stat_reserved1;
+ uint64_t task_gpu_stat_reserved2;
+} gpu_energy_data;
+
+typedef gpu_energy_data *gpu_energy_data_t;
+struct task_power_info_v2 {
+ task_power_info_data_t cpu_energy;
+ gpu_energy_data gpu_energy;
+ uint64_t task_ptime;
+ uint64_t task_pset_switches;
+};
+
+typedef struct task_power_info_v2 task_power_info_v2_data_t;
+typedef struct task_power_info_v2 *task_power_info_v2_t;
+#define TASK_POWER_INFO_V2_COUNT_OLD \
+ ((mach_msg_type_number_t) (sizeof (task_power_info_v2_data_t) - sizeof(uint64_t)*2) / sizeof (natural_t))
+#define TASK_POWER_INFO_V2_COUNT \
+ ((mach_msg_type_number_t) (sizeof (task_power_info_v2_data_t) / sizeof (natural_t)))
+
+#define TASK_VM_INFO_PURGEABLE_ACCOUNT 27 /* Used for xnu purgeable vm unit tests */
+
+
+#define TASK_FLAGS_INFO 28 /* return t_flags field */
+struct task_flags_info {
+ uint32_t flags; /* task flags */
+};
+typedef struct task_flags_info task_flags_info_data_t;
+typedef struct task_flags_info * task_flags_info_t;
+#define TASK_FLAGS_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_flags_info_data_t) / sizeof (natural_t)))
+
+#define TF_LP64 0x00000001 /* task has 64-bit addressing */
+#define TF_64B_DATA 0x00000002 /* task has 64-bit data registers */
+
+#define TASK_DEBUG_INFO_INTERNAL 29 /* Used for kernel internal development tests. */
+
+
+/*
+ * Type to control EXC_GUARD delivery options for a task
+ * via task_get/set_exc_guard_behavior interface(s).
+ */
+typedef uint32_t task_exc_guard_behavior_t;
+
+/* EXC_GUARD optional delivery settings on a per-task basis */
+#define TASK_EXC_GUARD_VM_DELIVER 0x01 /* Deliver virtual memory EXC_GUARD exceptions */
+#define TASK_EXC_GUARD_VM_ONCE 0x02 /* Deliver them only once */
+#define TASK_EXC_GUARD_VM_CORPSE 0x04 /* Deliver them via a forked corpse */
+#define TASK_EXC_GUARD_VM_FATAL 0x08 /* Virtual Memory EXC_GUARD delivery is fatal */
+#define TASK_EXC_GUARD_VM_ALL 0x0f
+
+#define TASK_EXC_GUARD_MP_DELIVER 0x10 /* Deliver mach port EXC_GUARD exceptions */
+#define TASK_EXC_GUARD_MP_ONCE 0x20 /* Deliver them only once */
+#define TASK_EXC_GUARD_MP_CORPSE 0x40 /* Deliver them via a forked corpse */
+#define TASK_EXC_GUARD_MP_FATAL 0x80 /* mach port EXC_GUARD delivery is fatal */
+#define TASK_EXC_GUARD_MP_ALL 0xf0
+
+#define TASK_EXC_GUARD_ALL 0xff /* All optional deliver settings */
+
+
+/*
+ * Obsolete interfaces.
+ */
+
+#define TASK_SCHED_TIMESHARE_INFO 10
+#define TASK_SCHED_RR_INFO 11
+#define TASK_SCHED_FIFO_INFO 12
+
+#define TASK_SCHED_INFO 14
+
+#pragma pack(pop)
+
+#endif /* _MACH_TASK_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/task_inspect.h
@@ -0,0 +1,54 @@
+/*
+ * 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 MACH_TASK_INSPECT_H
+#define MACH_TASK_INSPECT_H
+
+/*
+ * XXX These interfaces are still in development -- they are subject to change
+ * without notice.
+ */
+
+typedef natural_t task_inspect_flavor_t;
+
+enum task_inspect_flavor {
+ TASK_INSPECT_BASIC_COUNTS = 1,
+};
+
+struct task_inspect_basic_counts {
+ uint64_t instructions;
+ uint64_t cycles;
+};
+#define TASK_INSPECT_BASIC_COUNTS_COUNT \
+ (sizeof(struct task_inspect_basic_counts) / sizeof(natural_t))
+typedef struct task_inspect_basic_counts task_inspect_basic_counts_data_t;
+typedef struct task_inspect_basic_counts *task_inspect_basic_counts_t;
+
+typedef integer_t *task_inspect_info_t;
+
+#endif /* !defined(MACH_TASK_INSPECT_H) */
lib/libc/include/x86_64-macos-gnu/mach/task_policy.h
@@ -0,0 +1,189 @@
+/*
+ * 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@
+ */
+
+#ifndef _MACH_TASK_POLICY_H_
+#define _MACH_TASK_POLICY_H_
+
+#include <mach/mach_types.h>
+
+/*
+ * These are the calls for accessing the policy parameters
+ * of a particular task.
+ *
+ * The extra 'get_default' parameter to the second call is
+ * IN/OUT as follows:
+ * 1) if asserted on the way in it indicates that the default
+ * values should be returned, not the ones currently set, in
+ * this case 'get_default' will always be asserted on return;
+ * 2) if unasserted on the way in, the current settings are
+ * desired and if still unasserted on return, then the info
+ * returned reflects the current settings, otherwise if
+ * 'get_default' returns asserted, it means that there are no
+ * current settings due to other parameters taking precedence,
+ * and the default ones are being returned instead.
+ */
+
+typedef natural_t task_policy_flavor_t;
+typedef integer_t *task_policy_t;
+
+/*
+ * kern_return_t task_policy_set(
+ * task_t task,
+ * task_policy_flavor_t flavor,
+ * task_policy_t policy_info,
+ * mach_msg_type_number_t count);
+ *
+ * kern_return_t task_policy_get(
+ * task_t task,
+ * task_policy_flavor_t flavor,
+ * task_policy_t policy_info,
+ * mach_msg_type_number_t *count,
+ * boolean_t *get_default);
+ */
+
+/*
+ * Defined flavors.
+ */
+/*
+ * TASK_CATEGORY_POLICY:
+ *
+ * This provides information to the kernel about the role
+ * of the task in the system.
+ *
+ * Parameters:
+ *
+ * role: Enumerated as follows:
+ *
+ * TASK_UNSPECIFIED is the default, since the role is not
+ * inherited from the parent.
+ *
+ * TASK_FOREGROUND_APPLICATION should be assigned when the
+ * task is a normal UI application in the foreground from
+ * the HI point of view.
+ * **N.B. There may be more than one of these at a given time.
+ *
+ * TASK_BACKGROUND_APPLICATION should be assigned when the
+ * task is a normal UI application in the background from
+ * the HI point of view.
+ *
+ * TASK_CONTROL_APPLICATION should be assigned to the unique
+ * UI application which implements the pop-up application dialog.
+ * There can only be one task at a time with this designation,
+ * which is assigned FCFS.
+ *
+ * TASK_GRAPHICS_SERVER should be assigned to the graphics
+ * management (window) server. There can only be one task at
+ * a time with this designation, which is assigned FCFS.
+ */
+
+#define TASK_CATEGORY_POLICY 1
+
+#define TASK_SUPPRESSION_POLICY 3
+#define TASK_POLICY_STATE 4
+#define TASK_BASE_QOS_POLICY 8
+#define TASK_OVERRIDE_QOS_POLICY 9
+#define TASK_BASE_LATENCY_QOS_POLICY 10
+#define TASK_BASE_THROUGHPUT_QOS_POLICY 11
+
+
+enum task_role {
+ TASK_RENICED = -1,
+ TASK_UNSPECIFIED = 0,
+ TASK_FOREGROUND_APPLICATION = 1,
+ TASK_BACKGROUND_APPLICATION = 2,
+ TASK_CONTROL_APPLICATION = 3,
+ TASK_GRAPHICS_SERVER = 4,
+ TASK_THROTTLE_APPLICATION = 5,
+ TASK_NONUI_APPLICATION = 6,
+ TASK_DEFAULT_APPLICATION = 7,
+ TASK_DARWINBG_APPLICATION = 8,
+};
+
+typedef integer_t task_role_t;
+
+struct task_category_policy {
+ task_role_t role;
+};
+
+typedef struct task_category_policy task_category_policy_data_t;
+typedef struct task_category_policy *task_category_policy_t;
+
+#define TASK_CATEGORY_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_category_policy_data_t) / sizeof (integer_t)))
+
+
+enum task_latency_qos {
+ LATENCY_QOS_TIER_UNSPECIFIED = 0x0,
+ LATENCY_QOS_TIER_0 = ((0xFF << 16) | 1),
+ LATENCY_QOS_TIER_1 = ((0xFF << 16) | 2),
+ LATENCY_QOS_TIER_2 = ((0xFF << 16) | 3),
+ LATENCY_QOS_TIER_3 = ((0xFF << 16) | 4),
+ LATENCY_QOS_TIER_4 = ((0xFF << 16) | 5),
+ LATENCY_QOS_TIER_5 = ((0xFF << 16) | 6)
+};
+typedef integer_t task_latency_qos_t;
+enum task_throughput_qos {
+ THROUGHPUT_QOS_TIER_UNSPECIFIED = 0x0,
+ THROUGHPUT_QOS_TIER_0 = ((0xFE << 16) | 1),
+ THROUGHPUT_QOS_TIER_1 = ((0xFE << 16) | 2),
+ THROUGHPUT_QOS_TIER_2 = ((0xFE << 16) | 3),
+ THROUGHPUT_QOS_TIER_3 = ((0xFE << 16) | 4),
+ THROUGHPUT_QOS_TIER_4 = ((0xFE << 16) | 5),
+ THROUGHPUT_QOS_TIER_5 = ((0xFE << 16) | 6),
+};
+
+#define LATENCY_QOS_LAUNCH_DEFAULT_TIER LATENCY_QOS_TIER_3
+#define THROUGHPUT_QOS_LAUNCH_DEFAULT_TIER THROUGHPUT_QOS_TIER_3
+
+typedef integer_t task_throughput_qos_t;
+
+struct task_qos_policy {
+ task_latency_qos_t task_latency_qos_tier;
+ task_throughput_qos_t task_throughput_qos_tier;
+};
+
+typedef struct task_qos_policy *task_qos_policy_t;
+#define TASK_QOS_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (struct task_qos_policy) / sizeof (integer_t)))
+
+/* These should be removed - they belong in proc_info.h */
+#define PROC_FLAG_DARWINBG 0x8000 /* process in darwin background */
+#define PROC_FLAG_EXT_DARWINBG 0x10000 /* process in darwin background - external enforcement */
+#define PROC_FLAG_IOS_APPLEDAEMON 0x20000 /* process is apple ios daemon */
+#define PROC_FLAG_IOS_IMPPROMOTION 0x80000 /* process is apple ios daemon */
+#define PROC_FLAG_ADAPTIVE 0x100000 /* Process is adaptive */
+#define PROC_FLAG_ADAPTIVE_IMPORTANT 0x200000 /* Process is adaptive, and is currently important */
+#define PROC_FLAG_IMPORTANCE_DONOR 0x400000 /* Process is marked as an importance donor */
+#define PROC_FLAG_SUPPRESSED 0x800000 /* Process is suppressed */
+#define PROC_FLAG_APPLICATION 0x1000000 /* Process is an application */
+#define PROC_FLAG_IOS_APPLICATION PROC_FLAG_APPLICATION /* Process is an application */
+
+
+
+
+#endif /* _MACH_TASK_POLICY_H_ */
lib/libc/include/x86_64-macos-gnu/mach/task_special_ports.h
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2000-2010 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/task_special_ports.h
+ *
+ * Defines codes for special_purpose task ports. These are NOT
+ * port identifiers - they are only used for the task_get_special_port
+ * and task_set_special_port routines.
+ *
+ */
+
+#ifndef _MACH_TASK_SPECIAL_PORTS_H_
+#define _MACH_TASK_SPECIAL_PORTS_H_
+
+typedef int task_special_port_t;
+
+#define TASK_KERNEL_PORT 1 /* Represents task to the outside
+ * world.*/
+
+#define TASK_HOST_PORT 2 /* The host (priv) port for task. */
+
+#define TASK_NAME_PORT 3 /* the name (unpriv) port for task */
+
+#define TASK_BOOTSTRAP_PORT 4 /* Bootstrap environment for task. */
+
+/*
+ * Evolving and likely to change.
+ */
+
+#define TASK_SEATBELT_PORT 7 /* Seatbelt compiler/DEM port for task. */
+
+/* PORT 8 was the GSSD TASK PORT which transformed to a host port */
+
+#define TASK_ACCESS_PORT 9 /* Permission check for task_for_pid. */
+
+#define TASK_DEBUG_CONTROL_PORT 10 /* debug control port */
+
+#define TASK_RESOURCE_NOTIFY_PORT 11 /* overrides host special RN port */
+
+#define TASK_MAX_SPECIAL_PORT TASK_RESOURCE_NOTIFY_PORT
+
+/*
+ * Definitions for ease of use
+ */
+
+#define task_get_kernel_port(task, port) \
+ (task_get_special_port((task), TASK_KERNEL_PORT, (port)))
+
+#define task_set_kernel_port(task, port) \
+ (task_set_special_port((task), TASK_KERNEL_PORT, (port)))
+
+#define task_get_host_port(task, port) \
+ (task_get_special_port((task), TASK_HOST_PORT, (port)))
+
+#define task_set_host_port(task, port) \
+ (task_set_special_port((task), TASK_HOST_PORT, (port)))
+
+#define task_get_bootstrap_port(task, port) \
+ (task_get_special_port((task), TASK_BOOTSTRAP_PORT, (port)))
+
+#define task_get_debug_control_port(task, port) \
+ (task_get_special_port((task), TASK_DEBUG_CONTROL_PORT, (port)))
+
+#define task_set_bootstrap_port(task, port) \
+ (task_set_special_port((task), TASK_BOOTSTRAP_PORT, (port)))
+
+#define task_get_task_access_port(task, port) \
+ (task_get_special_port((task), TASK_ACCESS_PORT, (port)))
+
+#define task_set_task_access_port(task, port) \
+ (task_set_special_port((task), TASK_ACCESS_PORT, (port)))
+
+#define task_set_task_debug_control_port(task, port) \
+ (task_set_special_port((task), TASK_DEBUG_CONTROL_PORT, (port)))
+
+
+#endif /* _MACH_TASK_SPECIAL_PORTS_H_ */
lib/libc/include/x86_64-macos-gnu/mach/thread_act.h
@@ -0,0 +1,1336 @@
+#ifndef _thread_act_user_
+#define _thread_act_user_
+
+/* Module thread_act */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef thread_act_MSG_COUNT
+#define thread_act_MSG_COUNT 28
+#endif /* thread_act_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine thread_terminate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_terminate
+(
+ thread_act_t target_act
+);
+
+/* Routine act_get_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t act_get_state
+(
+ thread_act_t target_act,
+ int flavor,
+ thread_state_t old_state,
+ mach_msg_type_number_t *old_stateCnt
+);
+
+/* Routine act_set_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t act_set_state
+(
+ thread_act_t target_act,
+ int flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt
+);
+
+/* Routine thread_get_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_get_state
+(
+ thread_act_t target_act,
+ thread_state_flavor_t flavor,
+ thread_state_t old_state,
+ mach_msg_type_number_t *old_stateCnt
+);
+
+/* Routine thread_set_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_set_state
+(
+ thread_act_t target_act,
+ thread_state_flavor_t flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt
+);
+
+/* Routine thread_suspend */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_suspend
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_resume */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_resume
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_abort */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_abort
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_abort_safely */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_abort_safely
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_depress_abort */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_depress_abort
+(
+ thread_act_t thread
+);
+
+/* Routine thread_get_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_get_special_port
+(
+ thread_act_t thr_act,
+ int which_port,
+ mach_port_t *special_port
+);
+
+/* Routine thread_set_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_set_special_port
+(
+ thread_act_t thr_act,
+ int which_port,
+ mach_port_t special_port
+);
+
+/* Routine thread_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_info
+(
+ thread_inspect_t target_act,
+ thread_flavor_t flavor,
+ thread_info_t thread_info_out,
+ mach_msg_type_number_t *thread_info_outCnt
+);
+
+/* Routine thread_set_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_set_exception_ports
+(
+ thread_act_t thread,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor
+);
+
+/* Routine thread_get_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_get_exception_ports
+(
+ thread_inspect_t thread,
+ exception_mask_t exception_mask,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine thread_swap_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_swap_exception_ports
+(
+ thread_act_t thread,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine thread_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_policy
+(
+ thread_act_t thr_act,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ boolean_t set_limit
+);
+
+/* Routine thread_policy_set */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_policy_set
+(
+ thread_act_t thread,
+ thread_policy_flavor_t flavor,
+ thread_policy_t policy_info,
+ mach_msg_type_number_t policy_infoCnt
+);
+
+/* Routine thread_policy_get */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_policy_get
+(
+ thread_inspect_t thread,
+ thread_policy_flavor_t flavor,
+ thread_policy_t policy_info,
+ mach_msg_type_number_t *policy_infoCnt,
+ boolean_t *get_default
+);
+
+/* Routine thread_sample */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_sample
+(
+ thread_act_t thread,
+ mach_port_t reply
+);
+
+/* Routine etap_trace_thread */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t etap_trace_thread
+(
+ thread_act_t target_act,
+ boolean_t trace_status
+);
+
+/* Routine thread_assign */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_assign
+(
+ thread_act_t thread,
+ processor_set_t new_set
+);
+
+/* Routine thread_assign_default */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_assign_default
+(
+ thread_act_t thread
+);
+
+/* Routine thread_get_assignment */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_get_assignment
+(
+ thread_act_t thread,
+ processor_set_name_t *assigned_set
+);
+
+/* Routine thread_set_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_set_policy
+(
+ thread_act_t thr_act,
+ processor_set_t pset,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ policy_limit_t limit,
+ mach_msg_type_number_t limitCnt
+);
+
+/* Routine thread_get_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_get_mach_voucher
+(
+ thread_act_t thr_act,
+ mach_voucher_selector_t which,
+ ipc_voucher_t *voucher
+);
+
+/* Routine thread_set_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_set_mach_voucher
+(
+ thread_act_t thr_act,
+ ipc_voucher_t voucher
+);
+
+/* Routine thread_swap_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_swap_mach_voucher
+(
+ thread_act_t thr_act,
+ ipc_voucher_t new_voucher,
+ ipc_voucher_t *old_voucher
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__thread_act_subsystem__defined
+#define __Request__thread_act_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int flavor;
+ mach_msg_type_number_t old_stateCnt;
+ } __Request__act_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[614];
+ } __Request__act_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t old_stateCnt;
+ } __Request__thread_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[614];
+ } __Request__thread_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_abort_safely_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_depress_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__thread_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__thread_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_flavor_t flavor;
+ mach_msg_type_number_t thread_info_outCnt;
+ } __Request__thread_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__thread_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ } __Request__thread_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__thread_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ boolean_t set_limit;
+ } __Request__thread_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ } __Request__thread_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ boolean_t get_default;
+ } __Request__thread_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t reply;
+ /* end of the kernel processed data */
+ } __Request__thread_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ boolean_t trace_status;
+ } __Request__etap_trace_thread_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_set;
+ /* end of the kernel processed data */
+ } __Request__thread_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t pset;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ mach_msg_type_number_t limitCnt;
+ integer_t limit[1];
+ } __Request__thread_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_voucher_selector_t which;
+ } __Request__thread_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Request__thread_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_voucher;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Request__thread_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__thread_act_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__thread_act_subsystem__defined
+#define __RequestUnion__thread_act_subsystem__defined
+union __RequestUnion__thread_act_subsystem {
+ __Request__thread_terminate_t Request_thread_terminate;
+ __Request__act_get_state_t Request_act_get_state;
+ __Request__act_set_state_t Request_act_set_state;
+ __Request__thread_get_state_t Request_thread_get_state;
+ __Request__thread_set_state_t Request_thread_set_state;
+ __Request__thread_suspend_t Request_thread_suspend;
+ __Request__thread_resume_t Request_thread_resume;
+ __Request__thread_abort_t Request_thread_abort;
+ __Request__thread_abort_safely_t Request_thread_abort_safely;
+ __Request__thread_depress_abort_t Request_thread_depress_abort;
+ __Request__thread_get_special_port_t Request_thread_get_special_port;
+ __Request__thread_set_special_port_t Request_thread_set_special_port;
+ __Request__thread_info_t Request_thread_info;
+ __Request__thread_set_exception_ports_t Request_thread_set_exception_ports;
+ __Request__thread_get_exception_ports_t Request_thread_get_exception_ports;
+ __Request__thread_swap_exception_ports_t Request_thread_swap_exception_ports;
+ __Request__thread_policy_t Request_thread_policy;
+ __Request__thread_policy_set_t Request_thread_policy_set;
+ __Request__thread_policy_get_t Request_thread_policy_get;
+ __Request__thread_sample_t Request_thread_sample;
+ __Request__etap_trace_thread_t Request_etap_trace_thread;
+ __Request__thread_assign_t Request_thread_assign;
+ __Request__thread_assign_default_t Request_thread_assign_default;
+ __Request__thread_get_assignment_t Request_thread_get_assignment;
+ __Request__thread_set_policy_t Request_thread_set_policy;
+ __Request__thread_get_mach_voucher_t Request_thread_get_mach_voucher;
+ __Request__thread_set_mach_voucher_t Request_thread_set_mach_voucher;
+ __Request__thread_swap_mach_voucher_t Request_thread_swap_mach_voucher;
+};
+#endif /* !__RequestUnion__thread_act_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__thread_act_subsystem__defined
+#define __Reply__thread_act_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t old_stateCnt;
+ natural_t old_state[614];
+ } __Reply__act_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__act_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t old_stateCnt;
+ natural_t old_state[614];
+ } __Reply__thread_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_abort_safely_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_depress_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ } __Reply__thread_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t thread_info_outCnt;
+ integer_t thread_info_out[32];
+ } __Reply__thread_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__thread_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__thread_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ boolean_t get_default;
+ } __Reply__thread_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__etap_trace_thread_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t assigned_set;
+ /* end of the kernel processed data */
+ } __Reply__thread_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Reply__thread_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Reply__thread_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__thread_act_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__thread_act_subsystem__defined
+#define __ReplyUnion__thread_act_subsystem__defined
+union __ReplyUnion__thread_act_subsystem {
+ __Reply__thread_terminate_t Reply_thread_terminate;
+ __Reply__act_get_state_t Reply_act_get_state;
+ __Reply__act_set_state_t Reply_act_set_state;
+ __Reply__thread_get_state_t Reply_thread_get_state;
+ __Reply__thread_set_state_t Reply_thread_set_state;
+ __Reply__thread_suspend_t Reply_thread_suspend;
+ __Reply__thread_resume_t Reply_thread_resume;
+ __Reply__thread_abort_t Reply_thread_abort;
+ __Reply__thread_abort_safely_t Reply_thread_abort_safely;
+ __Reply__thread_depress_abort_t Reply_thread_depress_abort;
+ __Reply__thread_get_special_port_t Reply_thread_get_special_port;
+ __Reply__thread_set_special_port_t Reply_thread_set_special_port;
+ __Reply__thread_info_t Reply_thread_info;
+ __Reply__thread_set_exception_ports_t Reply_thread_set_exception_ports;
+ __Reply__thread_get_exception_ports_t Reply_thread_get_exception_ports;
+ __Reply__thread_swap_exception_ports_t Reply_thread_swap_exception_ports;
+ __Reply__thread_policy_t Reply_thread_policy;
+ __Reply__thread_policy_set_t Reply_thread_policy_set;
+ __Reply__thread_policy_get_t Reply_thread_policy_get;
+ __Reply__thread_sample_t Reply_thread_sample;
+ __Reply__etap_trace_thread_t Reply_etap_trace_thread;
+ __Reply__thread_assign_t Reply_thread_assign;
+ __Reply__thread_assign_default_t Reply_thread_assign_default;
+ __Reply__thread_get_assignment_t Reply_thread_get_assignment;
+ __Reply__thread_set_policy_t Reply_thread_set_policy;
+ __Reply__thread_get_mach_voucher_t Reply_thread_get_mach_voucher;
+ __Reply__thread_set_mach_voucher_t Reply_thread_set_mach_voucher;
+ __Reply__thread_swap_mach_voucher_t Reply_thread_swap_mach_voucher;
+};
+#endif /* !__RequestUnion__thread_act_subsystem__defined */
+
+#ifndef subsystem_to_name_map_thread_act
+#define subsystem_to_name_map_thread_act \
+ { "thread_terminate", 3600 },\
+ { "act_get_state", 3601 },\
+ { "act_set_state", 3602 },\
+ { "thread_get_state", 3603 },\
+ { "thread_set_state", 3604 },\
+ { "thread_suspend", 3605 },\
+ { "thread_resume", 3606 },\
+ { "thread_abort", 3607 },\
+ { "thread_abort_safely", 3608 },\
+ { "thread_depress_abort", 3609 },\
+ { "thread_get_special_port", 3610 },\
+ { "thread_set_special_port", 3611 },\
+ { "thread_info", 3612 },\
+ { "thread_set_exception_ports", 3613 },\
+ { "thread_get_exception_ports", 3614 },\
+ { "thread_swap_exception_ports", 3615 },\
+ { "thread_policy", 3616 },\
+ { "thread_policy_set", 3617 },\
+ { "thread_policy_get", 3618 },\
+ { "thread_sample", 3619 },\
+ { "etap_trace_thread", 3620 },\
+ { "thread_assign", 3621 },\
+ { "thread_assign_default", 3622 },\
+ { "thread_get_assignment", 3623 },\
+ { "thread_set_policy", 3624 },\
+ { "thread_get_mach_voucher", 3625 },\
+ { "thread_set_mach_voucher", 3626 },\
+ { "thread_swap_mach_voucher", 3627 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _thread_act_user_ */
lib/libc/include/x86_64-macos-gnu/mach/thread_info.h
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2000-2005, 2015 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/thread_info
+ *
+ * Thread information structure and definitions.
+ *
+ * The defintions in this file are exported to the user. The kernel
+ * will translate its internal data structures to these structures
+ * as appropriate.
+ *
+ */
+
+#ifndef _MACH_THREAD_INFO_H_
+#define _MACH_THREAD_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/policy.h>
+#include <mach/time_value.h>
+#include <mach/message.h>
+#include <mach/machine/vm_types.h>
+
+/*
+ * Generic information structure to allow for expansion.
+ */
+typedef natural_t thread_flavor_t;
+typedef integer_t *thread_info_t; /* varying array of int */
+
+#define THREAD_INFO_MAX (32) /* maximum array size */
+typedef integer_t thread_info_data_t[THREAD_INFO_MAX];
+
+/*
+ * Currently defined information.
+ */
+#define THREAD_BASIC_INFO 3 /* basic information */
+
+struct thread_basic_info {
+ time_value_t user_time; /* user run time */
+ time_value_t system_time; /* system run time */
+ integer_t cpu_usage; /* scaled cpu usage percentage */
+ policy_t policy; /* scheduling policy in effect */
+ integer_t run_state; /* run state (see below) */
+ integer_t flags; /* various flags (see below) */
+ integer_t suspend_count; /* suspend count for thread */
+ integer_t sleep_time; /* number of seconds that thread
+ * has been sleeping */
+};
+
+typedef struct thread_basic_info thread_basic_info_data_t;
+typedef struct thread_basic_info *thread_basic_info_t;
+#define THREAD_BASIC_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(thread_basic_info_data_t) / sizeof(natural_t)))
+
+#define THREAD_IDENTIFIER_INFO 4 /* thread id and other information */
+
+struct thread_identifier_info {
+ uint64_t thread_id; /* system-wide unique 64-bit thread id */
+ uint64_t thread_handle; /* handle to be used by libproc */
+ uint64_t dispatch_qaddr; /* libdispatch queue address */
+};
+
+typedef struct thread_identifier_info thread_identifier_info_data_t;
+typedef struct thread_identifier_info *thread_identifier_info_t;
+#define THREAD_IDENTIFIER_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(thread_identifier_info_data_t) / sizeof(natural_t)))
+
+/*
+ * Scale factor for usage field.
+ */
+
+#define TH_USAGE_SCALE 1000
+
+/*
+ * Thread run states (state field).
+ */
+
+#define TH_STATE_RUNNING 1 /* thread is running normally */
+#define TH_STATE_STOPPED 2 /* thread is stopped */
+#define TH_STATE_WAITING 3 /* thread is waiting normally */
+#define TH_STATE_UNINTERRUPTIBLE 4 /* thread is in an uninterruptible
+ * wait */
+#define TH_STATE_HALTED 5 /* thread is halted at a
+ * clean point */
+
+/*
+ * Thread flags (flags field).
+ */
+#define TH_FLAGS_SWAPPED 0x1 /* thread is swapped out */
+#define TH_FLAGS_IDLE 0x2 /* thread is an idle thread */
+#define TH_FLAGS_GLOBAL_FORCED_IDLE 0x4 /* thread performs global forced idle */
+
+/*
+ * Thread extended info (returns same info as proc_pidinfo(...,PROC_PIDTHREADINFO,...)
+ */
+#define THREAD_EXTENDED_INFO 5
+#define MAXTHREADNAMESIZE 64
+struct thread_extended_info { // same as proc_threadinfo (from proc_info.h) & proc_threadinfo_internal (from bsd_taskinfo.h)
+ uint64_t pth_user_time; /* user run time */
+ uint64_t pth_system_time; /* system run time */
+ int32_t pth_cpu_usage; /* scaled cpu usage percentage */
+ int32_t pth_policy; /* scheduling policy in effect */
+ int32_t pth_run_state; /* run state (see below) */
+ int32_t pth_flags; /* various flags (see below) */
+ int32_t pth_sleep_time; /* number of seconds that thread */
+ int32_t pth_curpri; /* cur priority*/
+ int32_t pth_priority; /* priority*/
+ int32_t pth_maxpriority; /* max priority*/
+ char pth_name[MAXTHREADNAMESIZE]; /* thread name, if any */
+};
+typedef struct thread_extended_info thread_extended_info_data_t;
+typedef struct thread_extended_info * thread_extended_info_t;
+#define THREAD_EXTENDED_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(thread_extended_info_data_t) / sizeof (natural_t)))
+
+#define THREAD_DEBUG_INFO_INTERNAL 6 /* for kernel development internal info */
+
+
+#define IO_NUM_PRIORITIES 4
+
+#define UPDATE_IO_STATS(info, size) \
+{ \
+ info.count++; \
+ info.size += size; \
+}
+
+#define UPDATE_IO_STATS_ATOMIC(info, io_size) \
+{ \
+ OSIncrementAtomic64((SInt64 *)&(info.count)); \
+ OSAddAtomic64(io_size, (SInt64 *)&(info.size)); \
+}
+
+struct io_stat_entry {
+ uint64_t count;
+ uint64_t size;
+};
+
+struct io_stat_info {
+ struct io_stat_entry disk_reads;
+ struct io_stat_entry io_priority[IO_NUM_PRIORITIES];
+ struct io_stat_entry paging;
+ struct io_stat_entry metadata;
+ struct io_stat_entry total_io;
+};
+
+typedef struct io_stat_info *io_stat_info_t;
+
+
+/*
+ * Obsolete interfaces.
+ */
+
+#define THREAD_SCHED_TIMESHARE_INFO 10
+#define THREAD_SCHED_RR_INFO 11
+#define THREAD_SCHED_FIFO_INFO 12
+
+#endif /* _MACH_THREAD_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach/thread_policy.h
@@ -0,0 +1,266 @@
+/*
+ * 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_THREAD_POLICY_H_
+#define _MACH_THREAD_POLICY_H_
+
+#include <mach/mach_types.h>
+
+/*
+ * These are the calls for accessing the policy parameters
+ * of a particular thread.
+ *
+ * The extra 'get_default' parameter to the second call is
+ * IN/OUT as follows:
+ * 1) if asserted on the way in it indicates that the default
+ * values should be returned, not the ones currently set, in
+ * this case 'get_default' will always be asserted on return;
+ * 2) if unasserted on the way in, the current settings are
+ * desired and if still unasserted on return, then the info
+ * returned reflects the current settings, otherwise if
+ * 'get_default' returns asserted, it means that there are no
+ * current settings due to other parameters taking precedence,
+ * and the default ones are being returned instead.
+ */
+
+typedef natural_t thread_policy_flavor_t;
+typedef integer_t *thread_policy_t;
+
+/*
+ * kern_return_t thread_policy_set(
+ * thread_t thread,
+ * thread_policy_flavor_t flavor,
+ * thread_policy_t policy_info,
+ * mach_msg_type_number_t count);
+ *
+ * kern_return_t thread_policy_get(
+ * thread_t thread,
+ * thread_policy_flavor_t flavor,
+ * thread_policy_t policy_info,
+ * mach_msg_type_number_t *count,
+ * boolean_t *get_default);
+ */
+
+/*
+ * Defined flavors.
+ */
+/*
+ * THREAD_STANDARD_POLICY:
+ *
+ * This is the standard (fair) scheduling mode, assigned to new
+ * threads. The thread will be given processor time in a manner
+ * which apportions approximately equal share to long running
+ * computations.
+ *
+ * Parameters:
+ * [none]
+ */
+
+#define THREAD_STANDARD_POLICY 1
+
+struct thread_standard_policy {
+ natural_t no_data;
+};
+
+typedef struct thread_standard_policy thread_standard_policy_data_t;
+typedef struct thread_standard_policy *thread_standard_policy_t;
+
+#define THREAD_STANDARD_POLICY_COUNT 0
+
+/*
+ * THREAD_EXTENDED_POLICY:
+ *
+ * Extended form of THREAD_STANDARD_POLICY, which supplies a
+ * hint indicating whether this is a long running computation.
+ *
+ * Parameters:
+ *
+ * timeshare: TRUE (the default) results in identical scheduling
+ * behavior as THREAD_STANDARD_POLICY.
+ */
+
+#define THREAD_EXTENDED_POLICY 1
+
+struct thread_extended_policy {
+ boolean_t timeshare;
+};
+
+typedef struct thread_extended_policy thread_extended_policy_data_t;
+typedef struct thread_extended_policy *thread_extended_policy_t;
+
+#define THREAD_EXTENDED_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_extended_policy_data_t) / sizeof (integer_t)))
+
+/*
+ * THREAD_TIME_CONSTRAINT_POLICY:
+ *
+ * This scheduling mode is for threads which have real time
+ * constraints on their execution.
+ *
+ * Parameters:
+ *
+ * period: This is the nominal amount of time between separate
+ * processing arrivals, specified in absolute time units. A
+ * value of 0 indicates that there is no inherent periodicity in
+ * the computation.
+ *
+ * computation: This is the nominal amount of computation
+ * time needed during a separate processing arrival, specified
+ * in absolute time units.
+ *
+ * constraint: This is the maximum amount of real time that
+ * may elapse from the start of a separate processing arrival
+ * to the end of computation for logically correct functioning,
+ * specified in absolute time units. Must be (>= computation).
+ * Note that latency = (constraint - computation).
+ *
+ * preemptible: This indicates that the computation may be
+ * interrupted, subject to the constraint specified above.
+ */
+
+#define THREAD_TIME_CONSTRAINT_POLICY 2
+
+struct thread_time_constraint_policy {
+ uint32_t period;
+ uint32_t computation;
+ uint32_t constraint;
+ boolean_t preemptible;
+};
+
+typedef struct thread_time_constraint_policy \
+ thread_time_constraint_policy_data_t;
+typedef struct thread_time_constraint_policy \
+ *thread_time_constraint_policy_t;
+
+#define THREAD_TIME_CONSTRAINT_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_time_constraint_policy_data_t) / sizeof (integer_t)))
+
+/*
+ * THREAD_PRECEDENCE_POLICY:
+ *
+ * This may be used to indicate the relative value of the
+ * computation compared to the other threads in the task.
+ *
+ * Parameters:
+ *
+ * importance: The importance is specified as a signed value.
+ */
+
+#define THREAD_PRECEDENCE_POLICY 3
+
+struct thread_precedence_policy {
+ integer_t importance;
+};
+
+typedef struct thread_precedence_policy thread_precedence_policy_data_t;
+typedef struct thread_precedence_policy *thread_precedence_policy_t;
+
+#define THREAD_PRECEDENCE_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_precedence_policy_data_t) / sizeof (integer_t)))
+
+/*
+ * THREAD_AFFINITY_POLICY:
+ *
+ * This policy is experimental.
+ * This may be used to express affinity relationships
+ * between threads in the task. Threads with the same affinity tag will
+ * be scheduled to share an L2 cache if possible. That is, affinity tags
+ * are a hint to the scheduler for thread placement.
+ *
+ * The namespace of affinity tags is generally local to one task. However,
+ * a child task created after the assignment of affinity tags by its parent
+ * will share that namespace. In particular, a family of forked processes
+ * may be created with a shared affinity namespace.
+ *
+ * Parameters:
+ * tag: The affinity set identifier.
+ */
+
+#define THREAD_AFFINITY_POLICY 4
+
+struct thread_affinity_policy {
+ integer_t affinity_tag;
+};
+
+#define THREAD_AFFINITY_TAG_NULL 0
+
+typedef struct thread_affinity_policy thread_affinity_policy_data_t;
+typedef struct thread_affinity_policy *thread_affinity_policy_t;
+
+#define THREAD_AFFINITY_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_affinity_policy_data_t) / sizeof (integer_t)))
+
+/*
+ * THREAD_BACKGROUND_POLICY:
+ */
+
+#define THREAD_BACKGROUND_POLICY 5
+
+struct thread_background_policy {
+ integer_t priority;
+};
+
+#define THREAD_BACKGROUND_POLICY_DARWIN_BG 0x1000
+
+typedef struct thread_background_policy thread_background_policy_data_t;
+typedef struct thread_background_policy *thread_background_policy_t;
+
+#define THREAD_BACKGROUND_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_background_policy_data_t) / sizeof (integer_t)))
+
+
+#define THREAD_LATENCY_QOS_POLICY 7
+typedef integer_t thread_latency_qos_t;
+
+struct thread_latency_qos_policy {
+ thread_latency_qos_t thread_latency_qos_tier;
+};
+
+typedef struct thread_latency_qos_policy thread_latency_qos_policy_data_t;
+typedef struct thread_latency_qos_policy *thread_latency_qos_policy_t;
+
+#define THREAD_LATENCY_QOS_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_latency_qos_policy_data_t) / sizeof (integer_t)))
+
+#define THREAD_THROUGHPUT_QOS_POLICY 8
+typedef integer_t thread_throughput_qos_t;
+
+struct thread_throughput_qos_policy {
+ thread_throughput_qos_t thread_throughput_qos_tier;
+};
+
+typedef struct thread_throughput_qos_policy thread_throughput_qos_policy_data_t;
+typedef struct thread_throughput_qos_policy *thread_throughput_qos_policy_t;
+
+#define THREAD_THROUGHPUT_QOS_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (thread_throughput_qos_policy_data_t) / sizeof (integer_t)))
+
+
+
+
+#endif /* _MACH_THREAD_POLICY_H_ */
lib/libc/include/x86_64-macos-gnu/mach/thread_special_ports.h
@@ -0,0 +1,83 @@
+/*
+ * 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,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/thread_special_ports.h
+ *
+ * Defines codes for special_purpose thread ports. These are NOT
+ * port identifiers - they are only used for the thread_get_special_port
+ * and thread_set_special_port routines.
+ *
+ */
+
+#ifndef _MACH_THREAD_SPECIAL_PORTS_H_
+#define _MACH_THREAD_SPECIAL_PORTS_H_
+
+#define THREAD_KERNEL_PORT 1 /* Represents the thread to the outside
+ * world.*/
+
+/*
+ * Definitions for ease of use
+ */
+
+#define thread_get_kernel_port(thread, port) \
+ (thread_get_special_port((thread), THREAD_KERNEL_PORT, (port)))
+
+#define thread_set_kernel_port(thread, port) \
+ (thread_set_special_port((thread), THREAD_KERNEL_PORT, (port)))
+
+#endif /* _MACH_THREAD_SPECIAL_PORTS_H_ */
lib/libc/include/x86_64-macos-gnu/mach/thread_switch.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2000-2004 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 _MACH_THREAD_SWITCH_H_
+#define _MACH_THREAD_SWITCH_H_
+
+#include <mach/mach_types.h>
+#include <mach/kern_return.h>
+#include <mach/message.h>
+#include <mach/mach_traps.h>
+
+/*
+ * Constant definitions for thread_switch trap.
+ */
+
+#define SWITCH_OPTION_NONE 0
+#define SWITCH_OPTION_DEPRESS 1
+#define SWITCH_OPTION_WAIT 2
+
+#define valid_switch_option(opt) (0 <= (opt) && (opt) <= 5)
+
+#endif /* _MACH_THREAD_SWITCH_H_ */
lib/libc/include/x86_64-macos-gnu/mach/time_value.h
@@ -0,0 +1,96 @@
+/*
+ * 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_TIME_VALUE_H_
+#define _MACH_TIME_VALUE_H_
+
+#include <mach/machine/vm_types.h>
+
+/*
+ * Time value returned by kernel.
+ */
+
+struct time_value {
+ integer_t seconds;
+ integer_t microseconds;
+};
+
+typedef struct time_value time_value_t;
+
+/*
+ * Macros to manipulate time values. Assume that time values
+ * are normalized (microseconds <= 999999).
+ */
+#define TIME_MICROS_MAX (1000000)
+
+#define time_value_add_usec(val, micros) { \
+ if (((val)->microseconds += (micros)) \
+ >= TIME_MICROS_MAX) { \
+ (val)->microseconds -= TIME_MICROS_MAX; \
+ (val)->seconds++; \
+ } \
+}
+
+#define time_value_add(result, addend) { \
+ (result)->microseconds += (addend)->microseconds; \
+ (result)->seconds += (addend)->seconds; \
+ if ((result)->microseconds >= TIME_MICROS_MAX) { \
+ (result)->microseconds -= TIME_MICROS_MAX; \
+ (result)->seconds++; \
+ } \
+}
+
+#endif /* _MACH_TIME_VALUE_H_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_attributes.h
@@ -0,0 +1,99 @@
+/*
+ * 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,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/vm_attributes.h
+ * Author: Alessandro Forin
+ *
+ * Virtual memory attributes definitions.
+ *
+ * These definitions are in addition to the machine-independent
+ * ones (e.g. protection), and are only selectively supported
+ * on specific machine architectures.
+ *
+ */
+
+#ifndef _MACH_VM_ATTRIBUTES_H_
+#define _MACH_VM_ATTRIBUTES_H_
+
+/*
+ * Types of machine-dependent attributes
+ */
+typedef unsigned int vm_machine_attribute_t;
+
+#define MATTR_CACHE 1 /* cachability */
+#define MATTR_MIGRATE 2 /* migrability */
+#define MATTR_REPLICATE 4 /* replicability */
+
+/*
+ * Values for the above, e.g. operations on attribute
+ */
+typedef int vm_machine_attribute_val_t;
+
+#define MATTR_VAL_OFF 0 /* (generic) turn attribute off */
+#define MATTR_VAL_ON 1 /* (generic) turn attribute on */
+#define MATTR_VAL_GET 2 /* (generic) return current value */
+
+#define MATTR_VAL_CACHE_FLUSH 6 /* flush from all caches */
+#define MATTR_VAL_DCACHE_FLUSH 7 /* flush from data caches */
+#define MATTR_VAL_ICACHE_FLUSH 8 /* flush from instruction caches */
+#define MATTR_VAL_CACHE_SYNC 9 /* sync I+D caches */
+#define MATTR_VAL_CACHE_SYNC 9 /* sync I+D caches */
+
+#define MATTR_VAL_GET_INFO 10 /* get page info (stats) */
+
+#endif /* _MACH_VM_ATTRIBUTES_H_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_behavior.h
@@ -0,0 +1,79 @@
+/*
+ * 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@
+ */
+/*
+ * File: mach/vm_behavior.h
+ *
+ * Virtual memory map behavior definitions.
+ *
+ */
+
+#ifndef _MACH_VM_BEHAVIOR_H_
+#define _MACH_VM_BEHAVIOR_H_
+
+/*
+ * Types defined:
+ *
+ * vm_behavior_t behavior codes.
+ */
+
+typedef int vm_behavior_t;
+
+/*
+ * Enumeration of valid values for vm_behavior_t.
+ * These describe expected page reference behavior for
+ * for a given range of virtual memory. For implementation
+ * details see vm/vm_fault.c
+ */
+
+
+/*
+ * The following behaviors affect the memory region's future behavior
+ * and are stored in the VM map entry data structure.
+ */
+#define VM_BEHAVIOR_DEFAULT ((vm_behavior_t) 0) /* default */
+#define VM_BEHAVIOR_RANDOM ((vm_behavior_t) 1) /* random */
+#define VM_BEHAVIOR_SEQUENTIAL ((vm_behavior_t) 2) /* forward sequential */
+#define VM_BEHAVIOR_RSEQNTL ((vm_behavior_t) 3) /* reverse sequential */
+
+/*
+ * The following "behaviors" affect the memory region only at the time of the
+ * call and are not stored in the VM map entry.
+ */
+#define VM_BEHAVIOR_WILLNEED ((vm_behavior_t) 4) /* will need in near future */
+#define VM_BEHAVIOR_DONTNEED ((vm_behavior_t) 5) /* dont need in near future */
+#define VM_BEHAVIOR_FREE ((vm_behavior_t) 6) /* free memory without write-back */
+#define VM_BEHAVIOR_ZERO_WIRED_PAGES ((vm_behavior_t) 7) /* zero out the wired pages of an entry if it is being deleted without unwiring them first */
+#define VM_BEHAVIOR_REUSABLE ((vm_behavior_t) 8)
+#define VM_BEHAVIOR_REUSE ((vm_behavior_t) 9)
+#define VM_BEHAVIOR_CAN_REUSE ((vm_behavior_t) 10)
+#define VM_BEHAVIOR_PAGEOUT ((vm_behavior_t) 11)
+
+#endif /*_MACH_VM_BEHAVIOR_H_*/
lib/libc/include/x86_64-macos-gnu/mach/vm_inherit.h
@@ -0,0 +1,89 @@
+/*
+ * 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,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/vm_inherit.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young
+ *
+ * Virtual memory map inheritance definitions.
+ *
+ */
+
+#ifndef _MACH_VM_INHERIT_H_
+#define _MACH_VM_INHERIT_H_
+
+/*
+ * Types defined:
+ *
+ * vm_inherit_t inheritance codes.
+ */
+
+typedef unsigned int vm_inherit_t; /* might want to change this */
+
+/*
+ * Enumeration of valid values for vm_inherit_t.
+ */
+
+#define VM_INHERIT_SHARE ((vm_inherit_t) 0) /* share with child */
+#define VM_INHERIT_COPY ((vm_inherit_t) 1) /* copy into child */
+#define VM_INHERIT_NONE ((vm_inherit_t) 2) /* absent from child */
+#define VM_INHERIT_DONATE_COPY ((vm_inherit_t) 3) /* copy and delete */
+
+#define VM_INHERIT_DEFAULT VM_INHERIT_COPY
+#define VM_INHERIT_LAST_VALID VM_INHERIT_NONE
+
+#endif /* _MACH_VM_INHERIT_H_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_map.h
@@ -0,0 +1,1440 @@
+#ifndef _vm_map_user_
+#define _vm_map_user_
+
+/* Module vm_map */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef vm_map_MSG_COUNT
+#define vm_map_MSG_COUNT 32
+#endif /* vm_map_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine vm_region */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_region
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t *size,
+ vm_region_flavor_t flavor,
+ vm_region_info_t info,
+ mach_msg_type_number_t *infoCnt,
+ mach_port_t *object_name
+);
+
+/* Routine vm_allocate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_allocate
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t size,
+ int flags
+);
+
+/* Routine vm_deallocate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_deallocate
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size
+);
+
+/* Routine vm_protect */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_protect
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ boolean_t set_maximum,
+ vm_prot_t new_protection
+);
+
+/* Routine vm_inherit */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_inherit
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_inherit_t new_inheritance
+);
+
+/* Routine vm_read */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_read
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_offset_t *data,
+ mach_msg_type_number_t *dataCnt
+);
+
+/* Routine vm_read_list */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_read_list
+(
+ vm_map_t target_task,
+ vm_read_entry_t data_list,
+ natural_t count
+);
+
+/* Routine vm_write */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_write
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_offset_t data,
+ mach_msg_type_number_t dataCnt
+);
+
+/* Routine vm_copy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_copy
+(
+ vm_map_t target_task,
+ vm_address_t source_address,
+ vm_size_t size,
+ vm_address_t dest_address
+);
+
+/* Routine vm_read_overwrite */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_read_overwrite
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_address_t data,
+ vm_size_t *outsize
+);
+
+/* Routine vm_msync */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_msync
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_sync_t sync_flags
+);
+
+/* Routine vm_behavior_set */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_behavior_set
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_behavior_t new_behavior
+);
+
+/* Routine vm_map */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_map
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t size,
+ vm_address_t mask,
+ int flags,
+ mem_entry_name_port_t object,
+ vm_offset_t offset,
+ boolean_t copy,
+ vm_prot_t cur_protection,
+ vm_prot_t max_protection,
+ vm_inherit_t inheritance
+);
+
+/* Routine vm_machine_attribute */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_machine_attribute
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_size_t size,
+ vm_machine_attribute_t attribute,
+ vm_machine_attribute_val_t *value
+);
+
+/* Routine vm_remap */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_remap
+(
+ vm_map_t target_task,
+ vm_address_t *target_address,
+ vm_size_t size,
+ vm_address_t mask,
+ int flags,
+ vm_map_t src_task,
+ vm_address_t src_address,
+ boolean_t copy,
+ vm_prot_t *cur_protection,
+ vm_prot_t *max_protection,
+ vm_inherit_t inheritance
+);
+
+/* Routine task_wire */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_wire
+(
+ vm_map_t target_task,
+ boolean_t must_wire
+);
+
+/* Routine mach_make_memory_entry */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_make_memory_entry
+(
+ vm_map_t target_task,
+ vm_size_t *size,
+ vm_offset_t offset,
+ vm_prot_t permission,
+ mem_entry_name_port_t *object_handle,
+ mem_entry_name_port_t parent_entry
+);
+
+/* Routine vm_map_page_query */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_map_page_query
+(
+ vm_map_t target_map,
+ vm_offset_t offset,
+ integer_t *disposition,
+ integer_t *ref_count
+);
+
+/* Routine mach_vm_region_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_vm_region_info
+(
+ vm_map_t task,
+ vm_address_t address,
+ vm_info_region_t *region,
+ vm_info_object_array_t *objects,
+ mach_msg_type_number_t *objectsCnt
+);
+
+/* Routine vm_mapped_pages_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_mapped_pages_info
+(
+ vm_map_t task,
+ page_address_array_t *pages,
+ mach_msg_type_number_t *pagesCnt
+);
+
+/* Routine vm_region_recurse */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_region_recurse
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t *size,
+ natural_t *nesting_depth,
+ vm_region_recurse_info_t info,
+ mach_msg_type_number_t *infoCnt
+);
+
+/* Routine vm_region_recurse_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_region_recurse_64
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t *size,
+ natural_t *nesting_depth,
+ vm_region_recurse_info_t info,
+ mach_msg_type_number_t *infoCnt
+);
+
+/* Routine mach_vm_region_info_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_vm_region_info_64
+(
+ vm_map_t task,
+ vm_address_t address,
+ vm_info_region_64_t *region,
+ vm_info_object_array_t *objects,
+ mach_msg_type_number_t *objectsCnt
+);
+
+/* Routine vm_region_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_region_64
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t *size,
+ vm_region_flavor_t flavor,
+ vm_region_info_t info,
+ mach_msg_type_number_t *infoCnt,
+ mach_port_t *object_name
+);
+
+/* Routine mach_make_memory_entry_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_make_memory_entry_64
+(
+ vm_map_t target_task,
+ memory_object_size_t *size,
+ memory_object_offset_t offset,
+ vm_prot_t permission,
+ mach_port_t *object_handle,
+ mem_entry_name_port_t parent_entry
+);
+
+/* Routine vm_map_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_map_64
+(
+ vm_map_t target_task,
+ vm_address_t *address,
+ vm_size_t size,
+ vm_address_t mask,
+ int flags,
+ mem_entry_name_port_t object,
+ memory_object_offset_t offset,
+ boolean_t copy,
+ vm_prot_t cur_protection,
+ vm_prot_t max_protection,
+ vm_inherit_t inheritance
+);
+
+/* Routine vm_purgable_control */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_purgable_control
+(
+ vm_map_t target_task,
+ vm_address_t address,
+ vm_purgable_t control,
+ int *state
+);
+
+/* Routine vm_map_exec_lockdown */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t vm_map_exec_lockdown
+(
+ vm_map_t target_task
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__vm_map_subsystem__defined
+#define __Request__vm_map_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_region_flavor_t flavor;
+ mach_msg_type_number_t infoCnt;
+ } __Request__vm_region_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ int flags;
+ } __Request__vm_allocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ } __Request__vm_deallocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ boolean_t set_maximum;
+ vm_prot_t new_protection;
+ } __Request__vm_protect_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_inherit_t new_inheritance;
+ } __Request__vm_inherit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ } __Request__vm_read_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_read_entry_t data_list;
+ natural_t count;
+ } __Request__vm_read_list_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t data;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ mach_msg_type_number_t dataCnt;
+ } __Request__vm_write_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t source_address;
+ vm_size_t size;
+ vm_address_t dest_address;
+ } __Request__vm_copy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_address_t data;
+ } __Request__vm_read_overwrite_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_sync_t sync_flags;
+ } __Request__vm_msync_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_behavior_t new_behavior;
+ } __Request__vm_behavior_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t object;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_address_t mask;
+ int flags;
+ vm_offset_t offset;
+ boolean_t copy;
+ vm_prot_t cur_protection;
+ vm_prot_t max_protection;
+ vm_inherit_t inheritance;
+ } __Request__vm_map_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_machine_attribute_t attribute;
+ vm_machine_attribute_val_t value;
+ } __Request__vm_machine_attribute_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t src_task;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t target_address;
+ vm_size_t size;
+ vm_address_t mask;
+ int flags;
+ vm_address_t src_address;
+ boolean_t copy;
+ vm_inherit_t inheritance;
+ } __Request__vm_remap_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ boolean_t must_wire;
+ } __Request__task_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t parent_entry;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_size_t size;
+ vm_offset_t offset;
+ vm_prot_t permission;
+ } __Request__mach_make_memory_entry_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_offset_t offset;
+ } __Request__vm_map_page_query_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ } __Request__mach_vm_region_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__vm_mapped_pages_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ natural_t nesting_depth;
+ mach_msg_type_number_t infoCnt;
+ } __Request__vm_region_recurse_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ natural_t nesting_depth;
+ mach_msg_type_number_t infoCnt;
+ } __Request__vm_region_recurse_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ } __Request__mach_vm_region_info_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_region_flavor_t flavor;
+ mach_msg_type_number_t infoCnt;
+ } __Request__vm_region_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t parent_entry;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ memory_object_size_t size;
+ memory_object_offset_t offset;
+ vm_prot_t permission;
+ } __Request__mach_make_memory_entry_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t object;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ vm_address_t mask;
+ int flags;
+ memory_object_offset_t offset;
+ boolean_t copy;
+ vm_prot_t cur_protection;
+ vm_prot_t max_protection;
+ vm_inherit_t inheritance;
+ } __Request__vm_map_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_purgable_t control;
+ int state;
+ } __Request__vm_purgable_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__vm_map_exec_lockdown_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__vm_map_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__vm_map_subsystem__defined
+#define __RequestUnion__vm_map_subsystem__defined
+union __RequestUnion__vm_map_subsystem {
+ __Request__vm_region_t Request_vm_region;
+ __Request__vm_allocate_t Request_vm_allocate;
+ __Request__vm_deallocate_t Request_vm_deallocate;
+ __Request__vm_protect_t Request_vm_protect;
+ __Request__vm_inherit_t Request_vm_inherit;
+ __Request__vm_read_t Request_vm_read;
+ __Request__vm_read_list_t Request_vm_read_list;
+ __Request__vm_write_t Request_vm_write;
+ __Request__vm_copy_t Request_vm_copy;
+ __Request__vm_read_overwrite_t Request_vm_read_overwrite;
+ __Request__vm_msync_t Request_vm_msync;
+ __Request__vm_behavior_set_t Request_vm_behavior_set;
+ __Request__vm_map_t Request_vm_map;
+ __Request__vm_machine_attribute_t Request_vm_machine_attribute;
+ __Request__vm_remap_t Request_vm_remap;
+ __Request__task_wire_t Request_task_wire;
+ __Request__mach_make_memory_entry_t Request_mach_make_memory_entry;
+ __Request__vm_map_page_query_t Request_vm_map_page_query;
+ __Request__mach_vm_region_info_t Request_mach_vm_region_info;
+ __Request__vm_mapped_pages_info_t Request_vm_mapped_pages_info;
+ __Request__vm_region_recurse_t Request_vm_region_recurse;
+ __Request__vm_region_recurse_64_t Request_vm_region_recurse_64;
+ __Request__mach_vm_region_info_64_t Request_mach_vm_region_info_64;
+ __Request__vm_region_64_t Request_vm_region_64;
+ __Request__mach_make_memory_entry_64_t Request_mach_make_memory_entry_64;
+ __Request__vm_map_64_t Request_vm_map_64;
+ __Request__vm_purgable_control_t Request_vm_purgable_control;
+ __Request__vm_map_exec_lockdown_t Request_vm_map_exec_lockdown;
+};
+#endif /* !__RequestUnion__vm_map_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__vm_map_subsystem__defined
+#define __Reply__vm_map_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t object_name;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ mach_msg_type_number_t infoCnt;
+ int info[10];
+ } __Reply__vm_region_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t address;
+ } __Reply__vm_allocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_deallocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_protect_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_inherit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t data;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dataCnt;
+ } __Reply__vm_read_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_read_entry_t data_list;
+ } __Reply__vm_read_list_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_write_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_copy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_size_t outsize;
+ } __Reply__vm_read_overwrite_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_msync_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_behavior_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t address;
+ } __Reply__vm_map_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_machine_attribute_val_t value;
+ } __Reply__vm_machine_attribute_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t target_address;
+ vm_prot_t cur_protection;
+ vm_prot_t max_protection;
+ } __Reply__vm_remap_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_wire_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t object_handle;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_size_t size;
+ } __Reply__mach_make_memory_entry_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ integer_t disposition;
+ integer_t ref_count;
+ } __Reply__vm_map_page_query_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t objects;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_info_region_t region;
+ mach_msg_type_number_t objectsCnt;
+ } __Reply__mach_vm_region_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t pages;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t pagesCnt;
+ } __Reply__vm_mapped_pages_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t address;
+ vm_size_t size;
+ natural_t nesting_depth;
+ mach_msg_type_number_t infoCnt;
+ int info[19];
+ } __Reply__vm_region_recurse_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t address;
+ vm_size_t size;
+ natural_t nesting_depth;
+ mach_msg_type_number_t infoCnt;
+ int info[19];
+ } __Reply__vm_region_recurse_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t objects;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_info_region_64_t region;
+ mach_msg_type_number_t objectsCnt;
+ } __Reply__mach_vm_region_info_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t object_name;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ vm_address_t address;
+ vm_size_t size;
+ mach_msg_type_number_t infoCnt;
+ int info[10];
+ } __Reply__vm_region_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t object_handle;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ memory_object_size_t size;
+ } __Reply__mach_make_memory_entry_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t address;
+ } __Reply__vm_map_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ int state;
+ } __Reply__vm_purgable_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__vm_map_exec_lockdown_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__vm_map_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__vm_map_subsystem__defined
+#define __ReplyUnion__vm_map_subsystem__defined
+union __ReplyUnion__vm_map_subsystem {
+ __Reply__vm_region_t Reply_vm_region;
+ __Reply__vm_allocate_t Reply_vm_allocate;
+ __Reply__vm_deallocate_t Reply_vm_deallocate;
+ __Reply__vm_protect_t Reply_vm_protect;
+ __Reply__vm_inherit_t Reply_vm_inherit;
+ __Reply__vm_read_t Reply_vm_read;
+ __Reply__vm_read_list_t Reply_vm_read_list;
+ __Reply__vm_write_t Reply_vm_write;
+ __Reply__vm_copy_t Reply_vm_copy;
+ __Reply__vm_read_overwrite_t Reply_vm_read_overwrite;
+ __Reply__vm_msync_t Reply_vm_msync;
+ __Reply__vm_behavior_set_t Reply_vm_behavior_set;
+ __Reply__vm_map_t Reply_vm_map;
+ __Reply__vm_machine_attribute_t Reply_vm_machine_attribute;
+ __Reply__vm_remap_t Reply_vm_remap;
+ __Reply__task_wire_t Reply_task_wire;
+ __Reply__mach_make_memory_entry_t Reply_mach_make_memory_entry;
+ __Reply__vm_map_page_query_t Reply_vm_map_page_query;
+ __Reply__mach_vm_region_info_t Reply_mach_vm_region_info;
+ __Reply__vm_mapped_pages_info_t Reply_vm_mapped_pages_info;
+ __Reply__vm_region_recurse_t Reply_vm_region_recurse;
+ __Reply__vm_region_recurse_64_t Reply_vm_region_recurse_64;
+ __Reply__mach_vm_region_info_64_t Reply_mach_vm_region_info_64;
+ __Reply__vm_region_64_t Reply_vm_region_64;
+ __Reply__mach_make_memory_entry_64_t Reply_mach_make_memory_entry_64;
+ __Reply__vm_map_64_t Reply_vm_map_64;
+ __Reply__vm_purgable_control_t Reply_vm_purgable_control;
+ __Reply__vm_map_exec_lockdown_t Reply_vm_map_exec_lockdown;
+};
+#endif /* !__RequestUnion__vm_map_subsystem__defined */
+
+#ifndef subsystem_to_name_map_vm_map
+#define subsystem_to_name_map_vm_map \
+ { "vm_region", 3800 },\
+ { "vm_allocate", 3801 },\
+ { "vm_deallocate", 3802 },\
+ { "vm_protect", 3803 },\
+ { "vm_inherit", 3804 },\
+ { "vm_read", 3805 },\
+ { "vm_read_list", 3806 },\
+ { "vm_write", 3807 },\
+ { "vm_copy", 3808 },\
+ { "vm_read_overwrite", 3809 },\
+ { "vm_msync", 3810 },\
+ { "vm_behavior_set", 3811 },\
+ { "vm_map", 3812 },\
+ { "vm_machine_attribute", 3813 },\
+ { "vm_remap", 3814 },\
+ { "task_wire", 3815 },\
+ { "mach_make_memory_entry", 3816 },\
+ { "vm_map_page_query", 3817 },\
+ { "mach_vm_region_info", 3818 },\
+ { "vm_mapped_pages_info", 3819 },\
+ { "vm_region_recurse", 3821 },\
+ { "vm_region_recurse_64", 3822 },\
+ { "mach_vm_region_info_64", 3823 },\
+ { "vm_region_64", 3824 },\
+ { "mach_make_memory_entry_64", 3825 },\
+ { "vm_map_64", 3826 },\
+ { "vm_purgable_control", 3830 },\
+ { "vm_map_exec_lockdown", 3831 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _vm_map_user_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_page_size.h
@@ -0,0 +1,68 @@
+/*
+ * 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 _VM_PAGE_SIZE_H_
+#define _VM_PAGE_SIZE_H_
+
+#include <Availability.h>
+#include <mach/mach_types.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+/*
+ * Globally interesting numbers.
+ * These macros assume vm_page_size is a power-of-2.
+ */
+extern vm_size_t vm_page_size;
+extern vm_size_t vm_page_mask;
+extern int vm_page_shift;
+
+/*
+ * These macros assume vm_page_size is a power-of-2.
+ */
+#define trunc_page(x) ((x) & (~(vm_page_size - 1)))
+#define round_page(x) trunc_page((x) + (vm_page_size - 1))
+
+/*
+ * Page-size rounding macros for the fixed-width VM types.
+ */
+#define mach_vm_trunc_page(x) ((mach_vm_offset_t)(x) & ~((signed)vm_page_mask))
+#define mach_vm_round_page(x) (((mach_vm_offset_t)(x) + vm_page_mask) & ~((signed)vm_page_mask))
+
+
+extern vm_size_t vm_kernel_page_size __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern vm_size_t vm_kernel_page_mask __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern int vm_kernel_page_shift __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+
+#define trunc_page_kernel(x) ((x) & (~vm_kernel_page_mask))
+#define round_page_kernel(x) trunc_page_kernel((x) + vm_kernel_page_mask)
+
+__END_DECLS
+
+#endif
lib/libc/include/x86_64-macos-gnu/mach/vm_purgable.h
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2003-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@
+ */
+
+/*
+ * Virtual memory map purgeable object definitions.
+ * Objects that will be needed in the future (forward cached objects) should be queued LIFO.
+ * Objects that have been used and are cached for reuse (backward cached) should be queued FIFO.
+ * Every user of purgeable memory is entitled to using the highest volatile group (7).
+ * Only if a client wants some of its objects to definitely be purged earlier, it can put those in
+ * another group. This could be used to make all FIFO objects (in the lower group) go away before
+ * any LIFO objects (in the higher group) go away.
+ * Objects that should not get any chance to stay around can be marked as "obsolete". They will
+ * be emptied before any other objects or pages are reclaimed. Obsolete objects are not emptied
+ * in any particular order.
+ * 'purgeable' is recognized as the correct spelling. For historical reasons, definitions
+ * in this file are spelled 'purgable'.
+ */
+
+#ifndef _MACH_VM_PURGABLE_H_
+#define _MACH_VM_PURGABLE_H_
+
+/*
+ * Types defined:
+ *
+ * vm_purgable_t purgeable object control codes.
+ */
+
+typedef int vm_purgable_t;
+
+/*
+ * Enumeration of valid values for vm_purgable_t.
+ */
+#define VM_PURGABLE_SET_STATE ((vm_purgable_t) 0) /* set state of purgeable object */
+#define VM_PURGABLE_GET_STATE ((vm_purgable_t) 1) /* get state of purgeable object */
+#define VM_PURGABLE_PURGE_ALL ((vm_purgable_t) 2) /* purge all volatile objects now */
+#define VM_PURGABLE_SET_STATE_FROM_KERNEL ((vm_purgable_t) 3) /* set state from kernel */
+
+/*
+ * Purgeable state:
+ *
+ * 31 15 14 13 12 11 10 8 7 6 5 4 3 2 1 0
+ * +-----+--+-----+--+----+-+-+---+---+---+
+ * | |NA|DEBUG| | GRP| |B|ORD| |STA|
+ * +-----+--+-----+--+----+-+-+---+---+---+
+ * " ": unused (i.e. reserved)
+ * STA: purgeable state
+ * see: VM_PURGABLE_NONVOLATILE=0 to VM_PURGABLE_DENY=3
+ * ORD: order
+ * see:VM_VOLATILE_ORDER_*
+ * B: behavior
+ * see: VM_PURGABLE_BEHAVIOR_*
+ * GRP: group
+ * see: VM_VOLATILE_GROUP_*
+ * DEBUG: debug
+ * see: VM_PURGABLE_DEBUG_*
+ * NA: no aging
+ * see: VM_PURGABLE_NO_AGING*
+ */
+
+#define VM_PURGABLE_NO_AGING_SHIFT 16
+#define VM_PURGABLE_NO_AGING_MASK (0x1 << VM_PURGABLE_NO_AGING_SHIFT)
+#define VM_PURGABLE_NO_AGING (0x1 << VM_PURGABLE_NO_AGING_SHIFT)
+
+#define VM_PURGABLE_DEBUG_SHIFT 12
+#define VM_PURGABLE_DEBUG_MASK (0x3 << VM_PURGABLE_DEBUG_SHIFT)
+#define VM_PURGABLE_DEBUG_EMPTY (0x1 << VM_PURGABLE_DEBUG_SHIFT)
+#define VM_PURGABLE_DEBUG_FAULT (0x2 << VM_PURGABLE_DEBUG_SHIFT)
+
+/*
+ * Volatile memory ordering groups (group zero objects are purged before group 1, etc...
+ * It is implementation dependent as to whether these groups are global or per-address space.
+ * (for the moment, they are global).
+ */
+#define VM_VOLATILE_GROUP_SHIFT 8
+#define VM_VOLATILE_GROUP_MASK (7 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_DEFAULT VM_VOLATILE_GROUP_0
+
+#define VM_VOLATILE_GROUP_0 (0 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_1 (1 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_2 (2 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_3 (3 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_4 (4 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_5 (5 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_6 (6 << VM_VOLATILE_GROUP_SHIFT)
+#define VM_VOLATILE_GROUP_7 (7 << VM_VOLATILE_GROUP_SHIFT)
+
+/*
+ * Purgeable behavior
+ * Within the same group, FIFO objects will be emptied before objects that are added later.
+ * LIFO objects will be emptied after objects that are added later.
+ * - Input only, not returned on state queries.
+ */
+#define VM_PURGABLE_BEHAVIOR_SHIFT 6
+#define VM_PURGABLE_BEHAVIOR_MASK (1 << VM_PURGABLE_BEHAVIOR_SHIFT)
+#define VM_PURGABLE_BEHAVIOR_FIFO (0 << VM_PURGABLE_BEHAVIOR_SHIFT)
+#define VM_PURGABLE_BEHAVIOR_LIFO (1 << VM_PURGABLE_BEHAVIOR_SHIFT)
+
+/*
+ * Obsolete object.
+ * Disregard volatile group, and put object into obsolete queue instead, so it is the next object
+ * to be purged.
+ * - Input only, not returned on state queries.
+ */
+#define VM_PURGABLE_ORDERING_SHIFT 5
+#define VM_PURGABLE_ORDERING_MASK (1 << VM_PURGABLE_ORDERING_SHIFT)
+#define VM_PURGABLE_ORDERING_OBSOLETE (1 << VM_PURGABLE_ORDERING_SHIFT)
+#define VM_PURGABLE_ORDERING_NORMAL (0 << VM_PURGABLE_ORDERING_SHIFT)
+
+
+/*
+ * Obsolete parameter - do not use
+ */
+#define VM_VOLATILE_ORDER_SHIFT 4
+#define VM_VOLATILE_ORDER_MASK (1 << VM_VOLATILE_ORDER_SHIFT)
+#define VM_VOLATILE_MAKE_FIRST_IN_GROUP (1 << VM_VOLATILE_ORDER_SHIFT)
+#define VM_VOLATILE_MAKE_LAST_IN_GROUP (0 << VM_VOLATILE_ORDER_SHIFT)
+
+/*
+ * Valid states of a purgeable object.
+ */
+#define VM_PURGABLE_STATE_MIN 0 /* minimum purgeable object state value */
+#define VM_PURGABLE_STATE_MAX 3 /* maximum purgeable object state value */
+#define VM_PURGABLE_STATE_MASK 3 /* mask to separate state from group */
+
+#define VM_PURGABLE_NONVOLATILE 0 /* purgeable object is non-volatile */
+#define VM_PURGABLE_VOLATILE 1 /* purgeable object is volatile */
+#define VM_PURGABLE_EMPTY 2 /* purgeable object is volatile and empty */
+#define VM_PURGABLE_DENY 3 /* (mark) object not purgeable */
+
+#define VM_PURGABLE_ALL_MASKS (VM_PURGABLE_STATE_MASK | \
+ VM_VOLATILE_ORDER_MASK | \
+ VM_PURGABLE_ORDERING_MASK | \
+ VM_PURGABLE_BEHAVIOR_MASK | \
+ VM_VOLATILE_GROUP_MASK | \
+ VM_PURGABLE_DEBUG_MASK | \
+ VM_PURGABLE_NO_AGING_MASK)
+#endif /* _MACH_VM_PURGABLE_H_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_region.h
@@ -0,0 +1,349 @@
+/*
+ * 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@
+ */
+/*
+ * File: mach/vm_region.h
+ *
+ * Define the attributes of a task's memory region
+ *
+ */
+
+#ifndef _MACH_VM_REGION_H_
+#define _MACH_VM_REGION_H_
+
+#include <mach/boolean.h>
+#include <mach/vm_prot.h>
+#include <mach/vm_inherit.h>
+#include <mach/vm_behavior.h>
+#include <mach/vm_types.h>
+#include <mach/message.h>
+#include <mach/machine/vm_param.h>
+#include <mach/machine/vm_types.h>
+#include <mach/memory_object_types.h>
+
+#include <sys/cdefs.h>
+
+#pragma pack(push, 4)
+
+// LP64todo: all the current tools are 32bit, obviously never worked for 64b
+// so probably should be a real 32b ID vs. ptr.
+// Current users just check for equality
+typedef uint32_t vm32_object_id_t;
+
+/*
+ * Types defined:
+ *
+ * vm_region_info_t memory region attributes
+ */
+
+#define VM_REGION_INFO_MAX (1024)
+typedef int *vm_region_info_t;
+typedef int *vm_region_info_64_t;
+typedef int *vm_region_recurse_info_t;
+typedef int *vm_region_recurse_info_64_t;
+typedef int vm_region_flavor_t;
+typedef int vm_region_info_data_t[VM_REGION_INFO_MAX];
+
+#define VM_REGION_BASIC_INFO_64 9
+struct vm_region_basic_info_64 {
+ vm_prot_t protection;
+ vm_prot_t max_protection;
+ vm_inherit_t inheritance;
+ boolean_t shared;
+ boolean_t reserved;
+ memory_object_offset_t offset;
+ vm_behavior_t behavior;
+ unsigned short user_wired_count;
+};
+typedef struct vm_region_basic_info_64 *vm_region_basic_info_64_t;
+typedef struct vm_region_basic_info_64 vm_region_basic_info_data_64_t;
+
+#define VM_REGION_BASIC_INFO_COUNT_64 ((mach_msg_type_number_t) \
+ (sizeof(vm_region_basic_info_data_64_t)/sizeof(int)))
+
+/*
+ * Passing VM_REGION_BASIC_INFO to vm_region_64
+ * automatically converts it to a VM_REGION_BASIC_INFO_64.
+ * Please use that explicitly instead.
+ */
+#define VM_REGION_BASIC_INFO 10
+
+/*
+ * This is the legacy basic info structure. It is
+ * deprecated because it passes only a 32-bit memory object
+ * offset back - too small for many larger objects (e.g. files).
+ */
+struct vm_region_basic_info {
+ vm_prot_t protection;
+ vm_prot_t max_protection;
+ vm_inherit_t inheritance;
+ boolean_t shared;
+ boolean_t reserved;
+ uint32_t offset; /* too small for a real offset */
+ vm_behavior_t behavior;
+ unsigned short user_wired_count;
+};
+
+typedef struct vm_region_basic_info *vm_region_basic_info_t;
+typedef struct vm_region_basic_info vm_region_basic_info_data_t;
+
+#define VM_REGION_BASIC_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(vm_region_basic_info_data_t)/sizeof(int)))
+
+#define SM_COW 1
+#define SM_PRIVATE 2
+#define SM_EMPTY 3
+#define SM_SHARED 4
+#define SM_TRUESHARED 5
+#define SM_PRIVATE_ALIASED 6
+#define SM_SHARED_ALIASED 7
+#define SM_LARGE_PAGE 8
+
+/*
+ * For submap info, the SM flags above are overlayed when a submap
+ * is encountered. The field denotes whether or not machine level mapping
+ * information is being shared. PTE's etc. When such sharing is taking
+ * place the value returned is SM_TRUESHARED otherwise SM_PRIVATE is passed
+ * back.
+ */
+
+
+
+
+#define VM_REGION_EXTENDED_INFO 13
+struct vm_region_extended_info {
+ vm_prot_t protection;
+ unsigned int user_tag;
+ unsigned int pages_resident;
+ unsigned int pages_shared_now_private;
+ unsigned int pages_swapped_out;
+ unsigned int pages_dirtied;
+ unsigned int ref_count;
+ unsigned short shadow_depth;
+ unsigned char external_pager;
+ unsigned char share_mode;
+ unsigned int pages_reusable;
+};
+typedef struct vm_region_extended_info *vm_region_extended_info_t;
+typedef struct vm_region_extended_info vm_region_extended_info_data_t;
+#define VM_REGION_EXTENDED_INFO_COUNT \
+ ((mach_msg_type_number_t) \
+ (sizeof (vm_region_extended_info_data_t) / sizeof (natural_t)))
+
+
+
+
+#define VM_REGION_TOP_INFO 12
+
+struct vm_region_top_info {
+ unsigned int obj_id;
+ unsigned int ref_count;
+ unsigned int private_pages_resident;
+ unsigned int shared_pages_resident;
+ unsigned char share_mode;
+};
+
+typedef struct vm_region_top_info *vm_region_top_info_t;
+typedef struct vm_region_top_info vm_region_top_info_data_t;
+
+#define VM_REGION_TOP_INFO_COUNT \
+ ((mach_msg_type_number_t) \
+ (sizeof(vm_region_top_info_data_t) / sizeof(natural_t)))
+
+
+
+/*
+ * vm_region_submap_info will return information on a submap or object.
+ * The user supplies a nesting level on the call. When a walk of the
+ * user's map is done and a submap is encountered, the nesting count is
+ * checked. If the nesting count is greater than 1 the submap is entered and
+ * the offset relative to the address in the base map is examined. If the
+ * nesting count is zero, the information on the submap is returned.
+ * The caller may thus learn about a submap and its contents by judicious
+ * choice of the base map address and nesting count. The nesting count
+ * allows penetration of recursively mapped submaps. If a submap is
+ * encountered as a mapped entry of another submap, the caller may bump
+ * the nesting count and call vm_region_recurse again on the target address
+ * range. The "is_submap" field tells the caller whether or not a submap
+ * has been encountered.
+ *
+ * Object only fields are filled in through a walking of the object shadow
+ * chain (where one is present), and a walking of the resident page queue.
+ *
+ */
+
+struct vm_region_submap_info {
+ vm_prot_t protection; /* present access protection */
+ vm_prot_t max_protection; /* max avail through vm_prot */
+ vm_inherit_t inheritance;/* behavior of map/obj on fork */
+ uint32_t offset; /* offset into object/map */
+ unsigned int user_tag; /* user tag on map entry */
+ unsigned int pages_resident; /* only valid for objects */
+ unsigned int pages_shared_now_private; /* only for objects */
+ unsigned int pages_swapped_out; /* only for objects */
+ unsigned int pages_dirtied; /* only for objects */
+ unsigned int ref_count; /* obj/map mappers, etc */
+ unsigned short shadow_depth; /* only for obj */
+ unsigned char external_pager; /* only for obj */
+ unsigned char share_mode; /* see enumeration */
+ boolean_t is_submap; /* submap vs obj */
+ vm_behavior_t behavior; /* access behavior hint */
+ vm32_object_id_t object_id; /* obj/map name, not a handle */
+ unsigned short user_wired_count;
+};
+
+typedef struct vm_region_submap_info *vm_region_submap_info_t;
+typedef struct vm_region_submap_info vm_region_submap_info_data_t;
+
+#define VM_REGION_SUBMAP_INFO_COUNT \
+ ((mach_msg_type_number_t) \
+ (sizeof(vm_region_submap_info_data_t) / sizeof(natural_t)))
+
+struct vm_region_submap_info_64 {
+ vm_prot_t protection; /* present access protection */
+ vm_prot_t max_protection; /* max avail through vm_prot */
+ vm_inherit_t inheritance;/* behavior of map/obj on fork */
+ memory_object_offset_t offset; /* offset into object/map */
+ unsigned int user_tag; /* user tag on map entry */
+ unsigned int pages_resident; /* only valid for objects */
+ unsigned int pages_shared_now_private; /* only for objects */
+ unsigned int pages_swapped_out; /* only for objects */
+ unsigned int pages_dirtied; /* only for objects */
+ unsigned int ref_count; /* obj/map mappers, etc */
+ unsigned short shadow_depth; /* only for obj */
+ unsigned char external_pager; /* only for obj */
+ unsigned char share_mode; /* see enumeration */
+ boolean_t is_submap; /* submap vs obj */
+ vm_behavior_t behavior; /* access behavior hint */
+ vm32_object_id_t object_id; /* obj/map name, not a handle */
+ unsigned short user_wired_count;
+ unsigned int pages_reusable;
+ vm_object_id_t object_id_full;
+};
+
+typedef struct vm_region_submap_info_64 *vm_region_submap_info_64_t;
+typedef struct vm_region_submap_info_64 vm_region_submap_info_data_64_t;
+
+#define VM_REGION_SUBMAP_INFO_V2_SIZE \
+ (sizeof (vm_region_submap_info_data_64_t))
+#define VM_REGION_SUBMAP_INFO_V1_SIZE \
+ (VM_REGION_SUBMAP_INFO_V2_SIZE - \
+ sizeof (vm_object_id_t) /* object_id_full */ )
+#define VM_REGION_SUBMAP_INFO_V0_SIZE \
+ (VM_REGION_SUBMAP_INFO_V1_SIZE - \
+ sizeof (unsigned int) /* pages_reusable */ )
+
+#define VM_REGION_SUBMAP_INFO_V2_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (VM_REGION_SUBMAP_INFO_V2_SIZE / sizeof (natural_t)))
+#define VM_REGION_SUBMAP_INFO_V1_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (VM_REGION_SUBMAP_INFO_V1_SIZE / sizeof (natural_t)))
+#define VM_REGION_SUBMAP_INFO_V0_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (VM_REGION_SUBMAP_INFO_V0_SIZE / sizeof (natural_t)))
+
+/* set this to the latest version */
+#define VM_REGION_SUBMAP_INFO_COUNT_64 VM_REGION_SUBMAP_INFO_V2_COUNT_64
+
+struct vm_region_submap_short_info_64 {
+ vm_prot_t protection; /* present access protection */
+ vm_prot_t max_protection; /* max avail through vm_prot */
+ vm_inherit_t inheritance;/* behavior of map/obj on fork */
+ memory_object_offset_t offset; /* offset into object/map */
+ unsigned int user_tag; /* user tag on map entry */
+ unsigned int ref_count; /* obj/map mappers, etc */
+ unsigned short shadow_depth; /* only for obj */
+ unsigned char external_pager; /* only for obj */
+ unsigned char share_mode; /* see enumeration */
+ boolean_t is_submap; /* submap vs obj */
+ vm_behavior_t behavior; /* access behavior hint */
+ vm32_object_id_t object_id; /* obj/map name, not a handle */
+ unsigned short user_wired_count;
+};
+
+typedef struct vm_region_submap_short_info_64 *vm_region_submap_short_info_64_t;
+typedef struct vm_region_submap_short_info_64 vm_region_submap_short_info_data_64_t;
+
+#define VM_REGION_SUBMAP_SHORT_INFO_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (sizeof (vm_region_submap_short_info_data_64_t) / sizeof (natural_t)))
+
+struct mach_vm_read_entry {
+ mach_vm_address_t address;
+ mach_vm_size_t size;
+};
+
+struct vm_read_entry {
+ vm_address_t address;
+ vm_size_t size;
+};
+
+#ifdef VM32_SUPPORT
+struct vm32_read_entry {
+ vm32_address_t address;
+ vm32_size_t size;
+};
+#endif
+
+
+#define VM_MAP_ENTRY_MAX (256)
+
+typedef struct mach_vm_read_entry mach_vm_read_entry_t[VM_MAP_ENTRY_MAX];
+typedef struct vm_read_entry vm_read_entry_t[VM_MAP_ENTRY_MAX];
+#ifdef VM32_SUPPORT
+typedef struct vm32_read_entry vm32_read_entry_t[VM_MAP_ENTRY_MAX];
+#endif
+
+#pragma pack(pop)
+
+
+#define VM_PAGE_INFO_MAX
+typedef int *vm_page_info_t;
+typedef int vm_page_info_data_t[VM_PAGE_INFO_MAX];
+typedef int vm_page_info_flavor_t;
+
+#define VM_PAGE_INFO_BASIC 1
+struct vm_page_info_basic {
+ int disposition;
+ int ref_count;
+ vm_object_id_t object_id;
+ memory_object_offset_t offset;
+ int depth;
+ int __pad; /* pad to 64-bit boundary */
+};
+typedef struct vm_page_info_basic *vm_page_info_basic_t;
+typedef struct vm_page_info_basic vm_page_info_basic_data_t;
+
+#define VM_PAGE_INFO_BASIC_COUNT ((mach_msg_type_number_t) \
+ (sizeof(vm_page_info_basic_data_t)/sizeof(int)))
+
+
+#endif /*_MACH_VM_REGION_H_*/
lib/libc/include/x86_64-macos-gnu/mach/vm_statistics.h
@@ -0,0 +1,523 @@
+/*
+ * 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@
+ */
+/*
+ * @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/vm_statistics.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young, David Golub
+ *
+ * Virtual memory statistics structure.
+ *
+ */
+
+#ifndef _MACH_VM_STATISTICS_H_
+#define _MACH_VM_STATISTICS_H_
+
+#include <mach/machine/vm_types.h>
+
+
+/*
+ * vm_statistics
+ *
+ * History:
+ * rev0 - original structure.
+ * rev1 - added purgable info (purgable_count and purges).
+ * rev2 - added speculative_count.
+ *
+ * Note: you cannot add any new fields to this structure. Add them below in
+ * vm_statistics64.
+ */
+
+struct vm_statistics {
+ natural_t free_count; /* # of pages free */
+ natural_t active_count; /* # of pages active */
+ natural_t inactive_count; /* # of pages inactive */
+ natural_t wire_count; /* # of pages wired down */
+ natural_t zero_fill_count; /* # of zero fill pages */
+ natural_t reactivations; /* # of pages reactivated */
+ natural_t pageins; /* # of pageins */
+ natural_t pageouts; /* # of pageouts */
+ natural_t faults; /* # of faults */
+ natural_t cow_faults; /* # of copy-on-writes */
+ natural_t lookups; /* object cache lookups */
+ natural_t hits; /* object cache hits */
+
+ /* added for rev1 */
+ natural_t purgeable_count; /* # of pages purgeable */
+ natural_t purges; /* # of pages purged */
+
+ /* added for rev2 */
+ /*
+ * NB: speculative pages are already accounted for in "free_count",
+ * so "speculative_count" is the number of "free" pages that are
+ * used to hold data that was read speculatively from disk but
+ * haven't actually been used by anyone so far.
+ */
+ natural_t speculative_count; /* # of pages speculative */
+};
+
+/* Used by all architectures */
+typedef struct vm_statistics *vm_statistics_t;
+typedef struct vm_statistics vm_statistics_data_t;
+
+/*
+ * vm_statistics64
+ *
+ * History:
+ * rev0 - original structure.
+ * rev1 - added purgable info (purgable_count and purges).
+ * rev2 - added speculative_count.
+ * ----
+ * rev3 - changed name to vm_statistics64.
+ * changed some fields in structure to 64-bit on
+ * arm, i386 and x86_64 architectures.
+ * rev4 - require 64-bit alignment for efficient access
+ * in the kernel. No change to reported data.
+ *
+ */
+
+struct vm_statistics64 {
+ natural_t free_count; /* # of pages free */
+ natural_t active_count; /* # of pages active */
+ natural_t inactive_count; /* # of pages inactive */
+ natural_t wire_count; /* # of pages wired down */
+ uint64_t zero_fill_count; /* # of zero fill pages */
+ uint64_t reactivations; /* # of pages reactivated */
+ uint64_t pageins; /* # of pageins */
+ uint64_t pageouts; /* # of pageouts */
+ uint64_t faults; /* # of faults */
+ uint64_t cow_faults; /* # of copy-on-writes */
+ uint64_t lookups; /* object cache lookups */
+ uint64_t hits; /* object cache hits */
+ uint64_t purges; /* # of pages purged */
+ natural_t purgeable_count; /* # of pages purgeable */
+ /*
+ * NB: speculative pages are already accounted for in "free_count",
+ * so "speculative_count" is the number of "free" pages that are
+ * used to hold data that was read speculatively from disk but
+ * haven't actually been used by anyone so far.
+ */
+ natural_t speculative_count; /* # of pages speculative */
+
+ /* added for rev1 */
+ uint64_t decompressions; /* # of pages decompressed */
+ uint64_t compressions; /* # of pages compressed */
+ uint64_t swapins; /* # of pages swapped in (via compression segments) */
+ uint64_t swapouts; /* # of pages swapped out (via compression segments) */
+ natural_t compressor_page_count; /* # of pages used by the compressed pager to hold all the compressed data */
+ natural_t throttled_count; /* # of pages throttled */
+ natural_t external_page_count; /* # of pages that are file-backed (non-swap) */
+ natural_t internal_page_count; /* # of pages that are anonymous */
+ uint64_t total_uncompressed_pages_in_compressor; /* # of pages (uncompressed) held within the compressor. */
+} __attribute__((aligned(8)));
+
+typedef struct vm_statistics64 *vm_statistics64_t;
+typedef struct vm_statistics64 vm_statistics64_data_t;
+
+/*
+ * VM_STATISTICS_TRUNCATE_TO_32_BIT
+ *
+ * This is used by host_statistics() to truncate and peg the 64-bit in-kernel values from
+ * vm_statistics64 to the 32-bit values of the older structure above (vm_statistics).
+ */
+#define VM_STATISTICS_TRUNCATE_TO_32_BIT(value) ((uint32_t)(((value) > UINT32_MAX ) ? UINT32_MAX : (value)))
+
+/*
+ * vm_extmod_statistics
+ *
+ * Structure to record modifications to a task by an
+ * external agent.
+ *
+ * History:
+ * rev0 - original structure.
+ */
+
+struct vm_extmod_statistics {
+ int64_t task_for_pid_count; /* # of times task port was looked up */
+ int64_t task_for_pid_caller_count; /* # of times this task called task_for_pid */
+ int64_t thread_creation_count; /* # of threads created in task */
+ int64_t thread_creation_caller_count; /* # of threads created by task */
+ int64_t thread_set_state_count; /* # of register state sets in task */
+ int64_t thread_set_state_caller_count; /* # of register state sets by task */
+} __attribute__((aligned(8)));
+
+typedef struct vm_extmod_statistics *vm_extmod_statistics_t;
+typedef struct vm_extmod_statistics vm_extmod_statistics_data_t;
+
+typedef struct vm_purgeable_stat {
+ uint64_t count;
+ uint64_t size;
+}vm_purgeable_stat_t;
+
+struct vm_purgeable_info {
+ vm_purgeable_stat_t fifo_data[8];
+ vm_purgeable_stat_t obsolete_data;
+ vm_purgeable_stat_t lifo_data[8];
+};
+
+typedef struct vm_purgeable_info *vm_purgeable_info_t;
+
+/* included for the vm_map_page_query call */
+
+#define VM_PAGE_QUERY_PAGE_PRESENT 0x1
+#define VM_PAGE_QUERY_PAGE_FICTITIOUS 0x2
+#define VM_PAGE_QUERY_PAGE_REF 0x4
+#define VM_PAGE_QUERY_PAGE_DIRTY 0x8
+#define VM_PAGE_QUERY_PAGE_PAGED_OUT 0x10
+#define VM_PAGE_QUERY_PAGE_COPIED 0x20
+#define VM_PAGE_QUERY_PAGE_SPECULATIVE 0x40
+#define VM_PAGE_QUERY_PAGE_EXTERNAL 0x80
+#define VM_PAGE_QUERY_PAGE_CS_VALIDATED 0x100
+#define VM_PAGE_QUERY_PAGE_CS_TAINTED 0x200
+#define VM_PAGE_QUERY_PAGE_CS_NX 0x400
+#define VM_PAGE_QUERY_PAGE_REUSABLE 0x800
+
+
+/*
+ * VM allocation flags:
+ *
+ * VM_FLAGS_FIXED
+ * (really the absence of VM_FLAGS_ANYWHERE)
+ * Allocate new VM region at the specified virtual address, if possible.
+ *
+ * VM_FLAGS_ANYWHERE
+ * Allocate new VM region anywhere it would fit in the address space.
+ *
+ * VM_FLAGS_PURGABLE
+ * Create a purgable VM object for that new VM region.
+ *
+ * VM_FLAGS_4GB_CHUNK
+ * The new VM region will be chunked up into 4GB sized pieces.
+ *
+ * VM_FLAGS_NO_PMAP_CHECK
+ * (for DEBUG kernel config only, ignored for other configs)
+ * Do not check that there is no stale pmap mapping for the new VM region.
+ * This is useful for kernel memory allocations at bootstrap when building
+ * the initial kernel address space while some memory is already in use.
+ *
+ * VM_FLAGS_OVERWRITE
+ * The new VM region can replace existing VM regions if necessary
+ * (to be used in combination with VM_FLAGS_FIXED).
+ *
+ * VM_FLAGS_NO_CACHE
+ * Pages brought in to this VM region are placed on the speculative
+ * queue instead of the active queue. In other words, they are not
+ * cached so that they will be stolen first if memory runs low.
+ */
+
+#define VM_FLAGS_FIXED 0x0000
+#define VM_FLAGS_ANYWHERE 0x0001
+#define VM_FLAGS_PURGABLE 0x0002
+#define VM_FLAGS_4GB_CHUNK 0x0004
+#define VM_FLAGS_RANDOM_ADDR 0x0008
+#define VM_FLAGS_NO_CACHE 0x0010
+#define VM_FLAGS_RESILIENT_CODESIGN 0x0020
+#define VM_FLAGS_RESILIENT_MEDIA 0x0040
+#define VM_FLAGS_OVERWRITE 0x4000 /* delete any existing mappings first */
+/*
+ * VM_FLAGS_SUPERPAGE_MASK
+ * 3 bits that specify whether large pages should be used instead of
+ * base pages (!=0), as well as the requested page size.
+ */
+#define VM_FLAGS_SUPERPAGE_MASK 0x70000 /* bits 0x10000, 0x20000, 0x40000 */
+#define VM_FLAGS_RETURN_DATA_ADDR 0x100000 /* Return address of target data, rather than base of page */
+#define VM_FLAGS_RETURN_4K_DATA_ADDR 0x800000 /* Return 4K aligned address of target data */
+#define VM_FLAGS_ALIAS_MASK 0xFF000000
+#define VM_GET_FLAGS_ALIAS(flags, alias) \
+ (alias) = ((flags) & VM_FLAGS_ALIAS_MASK) >> 24
+#define VM_SET_FLAGS_ALIAS(flags, alias) \
+ (flags) = (((flags) & ~VM_FLAGS_ALIAS_MASK) | \
+ (((alias) & ~VM_FLAGS_ALIAS_MASK) << 24))
+
+/* These are the flags that we accept from user-space */
+#define VM_FLAGS_USER_ALLOCATE (VM_FLAGS_FIXED | \
+ VM_FLAGS_ANYWHERE | \
+ VM_FLAGS_PURGABLE | \
+ VM_FLAGS_4GB_CHUNK | \
+ VM_FLAGS_RANDOM_ADDR | \
+ VM_FLAGS_NO_CACHE | \
+ VM_FLAGS_OVERWRITE | \
+ VM_FLAGS_SUPERPAGE_MASK | \
+ VM_FLAGS_ALIAS_MASK)
+#define VM_FLAGS_USER_MAP (VM_FLAGS_USER_ALLOCATE | \
+ VM_FLAGS_RETURN_4K_DATA_ADDR | \
+ VM_FLAGS_RETURN_DATA_ADDR)
+#define VM_FLAGS_USER_REMAP (VM_FLAGS_FIXED | \
+ VM_FLAGS_ANYWHERE | \
+ VM_FLAGS_RANDOM_ADDR | \
+ VM_FLAGS_OVERWRITE| \
+ VM_FLAGS_RETURN_DATA_ADDR | \
+ VM_FLAGS_RESILIENT_CODESIGN | \
+ VM_FLAGS_RESILIENT_MEDIA)
+
+#define VM_FLAGS_SUPERPAGE_SHIFT 16
+#define SUPERPAGE_NONE 0 /* no superpages, if all bits are 0 */
+#define SUPERPAGE_SIZE_ANY 1
+#define VM_FLAGS_SUPERPAGE_NONE (SUPERPAGE_NONE << VM_FLAGS_SUPERPAGE_SHIFT)
+#define VM_FLAGS_SUPERPAGE_SIZE_ANY (SUPERPAGE_SIZE_ANY << VM_FLAGS_SUPERPAGE_SHIFT)
+#define SUPERPAGE_SIZE_2MB 2
+#define VM_FLAGS_SUPERPAGE_SIZE_2MB (SUPERPAGE_SIZE_2MB<<VM_FLAGS_SUPERPAGE_SHIFT)
+
+/*
+ * EXC_GUARD definitions for virtual memory.
+ */
+#define GUARD_TYPE_VIRT_MEMORY 0x5
+
+/* Reasons for exception for virtual memory */
+enum virtual_memory_guard_exception_codes {
+ kGUARD_EXC_DEALLOC_GAP = 1u << 0
+};
+
+
+/* current accounting postmark */
+#define __VM_LEDGER_ACCOUNTING_POSTMARK 2019032600
+
+/* discrete values: */
+#define VM_LEDGER_TAG_NONE 0x00000000
+#define VM_LEDGER_TAG_DEFAULT 0x00000001
+#define VM_LEDGER_TAG_NETWORK 0x00000002
+#define VM_LEDGER_TAG_MEDIA 0x00000003
+#define VM_LEDGER_TAG_GRAPHICS 0x00000004
+#define VM_LEDGER_TAG_NEURAL 0x00000005
+#define VM_LEDGER_TAG_MAX 0x00000005
+/* individual bits: */
+#define VM_LEDGER_FLAG_NO_FOOTPRINT 0x00000001
+#define VM_LEDGER_FLAGS (VM_LEDGER_FLAG_NO_FOOTPRINT)
+
+
+#define VM_MEMORY_MALLOC 1
+#define VM_MEMORY_MALLOC_SMALL 2
+#define VM_MEMORY_MALLOC_LARGE 3
+#define VM_MEMORY_MALLOC_HUGE 4
+#define VM_MEMORY_SBRK 5// uninteresting -- no one should call
+#define VM_MEMORY_REALLOC 6
+#define VM_MEMORY_MALLOC_TINY 7
+#define VM_MEMORY_MALLOC_LARGE_REUSABLE 8
+#define VM_MEMORY_MALLOC_LARGE_REUSED 9
+
+#define VM_MEMORY_ANALYSIS_TOOL 10
+
+#define VM_MEMORY_MALLOC_NANO 11
+#define VM_MEMORY_MALLOC_MEDIUM 12
+
+#define VM_MEMORY_MACH_MSG 20
+#define VM_MEMORY_IOKIT 21
+#define VM_MEMORY_STACK 30
+#define VM_MEMORY_GUARD 31
+#define VM_MEMORY_SHARED_PMAP 32
+/* memory containing a dylib */
+#define VM_MEMORY_DYLIB 33
+#define VM_MEMORY_OBJC_DISPATCHERS 34
+
+/* Was a nested pmap (VM_MEMORY_SHARED_PMAP) which has now been unnested */
+#define VM_MEMORY_UNSHARED_PMAP 35
+
+
+// Placeholders for now -- as we analyze the libraries and find how they
+// use memory, we can make these labels more specific.
+#define VM_MEMORY_APPKIT 40
+#define VM_MEMORY_FOUNDATION 41
+#define VM_MEMORY_COREGRAPHICS 42
+#define VM_MEMORY_CORESERVICES 43
+#define VM_MEMORY_CARBON VM_MEMORY_CORESERVICES
+#define VM_MEMORY_JAVA 44
+#define VM_MEMORY_COREDATA 45
+#define VM_MEMORY_COREDATA_OBJECTIDS 46
+#define VM_MEMORY_ATS 50
+#define VM_MEMORY_LAYERKIT 51
+#define VM_MEMORY_CGIMAGE 52
+#define VM_MEMORY_TCMALLOC 53
+
+/* private raster data (i.e. layers, some images, QGL allocator) */
+#define VM_MEMORY_COREGRAPHICS_DATA 54
+
+/* shared image and font caches */
+#define VM_MEMORY_COREGRAPHICS_SHARED 55
+
+/* Memory used for virtual framebuffers, shadowing buffers, etc... */
+#define VM_MEMORY_COREGRAPHICS_FRAMEBUFFERS 56
+
+/* Window backing stores, custom shadow data, and compressed backing stores */
+#define VM_MEMORY_COREGRAPHICS_BACKINGSTORES 57
+
+/* x-alloc'd memory */
+#define VM_MEMORY_COREGRAPHICS_XALLOC 58
+
+/* catch-all for other uses, such as the read-only shared data page */
+#define VM_MEMORY_COREGRAPHICS_MISC VM_MEMORY_COREGRAPHICS
+
+/* memory allocated by the dynamic loader for itself */
+#define VM_MEMORY_DYLD 60
+/* malloc'd memory created by dyld */
+#define VM_MEMORY_DYLD_MALLOC 61
+
+/* Used for sqlite page cache */
+#define VM_MEMORY_SQLITE 62
+
+/* JavaScriptCore heaps */
+#define VM_MEMORY_JAVASCRIPT_CORE 63
+#define VM_MEMORY_WEBASSEMBLY VM_MEMORY_JAVASCRIPT_CORE
+/* memory allocated for the JIT */
+#define VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR 64
+#define VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE 65
+
+/* memory allocated for GLSL */
+#define VM_MEMORY_GLSL 66
+
+/* memory allocated for OpenCL.framework */
+#define VM_MEMORY_OPENCL 67
+
+/* memory allocated for QuartzCore.framework */
+#define VM_MEMORY_COREIMAGE 68
+
+/* memory allocated for WebCore Purgeable Buffers */
+#define VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS 69
+
+/* ImageIO memory */
+#define VM_MEMORY_IMAGEIO 70
+
+/* CoreProfile memory */
+#define VM_MEMORY_COREPROFILE 71
+
+/* assetsd / MobileSlideShow memory */
+#define VM_MEMORY_ASSETSD 72
+
+/* libsystem_kernel os_once_alloc */
+#define VM_MEMORY_OS_ALLOC_ONCE 73
+
+/* libdispatch internal allocator */
+#define VM_MEMORY_LIBDISPATCH 74
+
+/* Accelerate.framework image backing stores */
+#define VM_MEMORY_ACCELERATE 75
+
+/* CoreUI image block data */
+#define VM_MEMORY_COREUI 76
+
+/* CoreUI image file */
+#define VM_MEMORY_COREUIFILE 77
+
+/* Genealogy buffers */
+#define VM_MEMORY_GENEALOGY 78
+
+/* RawCamera VM allocated memory */
+#define VM_MEMORY_RAWCAMERA 79
+
+/* corpse info for dead process */
+#define VM_MEMORY_CORPSEINFO 80
+
+/* Apple System Logger (ASL) messages */
+#define VM_MEMORY_ASL 81
+
+/* Swift runtime */
+#define VM_MEMORY_SWIFT_RUNTIME 82
+
+/* Swift metadata */
+#define VM_MEMORY_SWIFT_METADATA 83
+
+/* DHMM data */
+#define VM_MEMORY_DHMM 84
+
+
+/* memory allocated by SceneKit.framework */
+#define VM_MEMORY_SCENEKIT 86
+
+/* memory allocated by skywalk networking */
+#define VM_MEMORY_SKYWALK 87
+
+#define VM_MEMORY_IOSURFACE 88
+
+#define VM_MEMORY_LIBNETWORK 89
+
+#define VM_MEMORY_AUDIO 90
+
+#define VM_MEMORY_VIDEOBITSTREAM 91
+
+/* memory allocated by CoreMedia */
+#define VM_MEMORY_CM_XPC 92
+
+#define VM_MEMORY_CM_RPC 93
+
+#define VM_MEMORY_CM_MEMORYPOOL 94
+
+#define VM_MEMORY_CM_READCACHE 95
+
+#define VM_MEMORY_CM_CRABS 96
+
+/* memory allocated for QuickLookThumbnailing */
+#define VM_MEMORY_QUICKLOOK_THUMBNAILS 97
+
+/* memory allocated by Accounts framework */
+#define VM_MEMORY_ACCOUNTS 98
+
+/* memory allocated by Sanitizer runtime libraries */
+#define VM_MEMORY_SANITIZER 99
+
+/* Differentiate memory needed by GPU drivers and frameworks from generic IOKit allocations */
+#define VM_MEMORY_IOACCELERATOR 100
+
+/* memory allocated by CoreMedia for global image registration of frames */
+#define VM_MEMORY_CM_REGWARP 101
+
+/* Reserve 240-255 for application */
+#define VM_MEMORY_APPLICATION_SPECIFIC_1 240
+#define VM_MEMORY_APPLICATION_SPECIFIC_16 255
+
+#define VM_MAKE_TAG(tag) ((tag) << 24)
+
+
+
+#endif /* _MACH_VM_STATISTICS_H_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_sync.h
@@ -0,0 +1,80 @@
+/*
+ * 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,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/vm_sync.h
+ *
+ * Virtual memory synchronisation definitions.
+ *
+ */
+
+#ifndef _MACH_VM_SYNC_H_
+#define _MACH_VM_SYNC_H_
+
+typedef unsigned vm_sync_t;
+
+/*
+ * Synchronization flags, defined as bits within the vm_sync_t type
+ */
+
+#define VM_SYNC_ASYNCHRONOUS ((vm_sync_t) 0x01)
+#define VM_SYNC_SYNCHRONOUS ((vm_sync_t) 0x02)
+#define VM_SYNC_INVALIDATE ((vm_sync_t) 0x04)
+#define VM_SYNC_KILLPAGES ((vm_sync_t) 0x08)
+#define VM_SYNC_DEACTIVATE ((vm_sync_t) 0x10)
+#define VM_SYNC_CONTIGUOUS ((vm_sync_t) 0x20)
+#define VM_SYNC_REUSABLEPAGES ((vm_sync_t) 0x40)
+
+#endif /* _MACH_VM_SYNC_H_ */
lib/libc/include/x86_64-macos-gnu/mach/vm_types.h
@@ -0,0 +1,95 @@
+/*
+ * 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@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ *
+ */
+#ifndef _MACH_VM_TYPES_H_
+#define _MACH_VM_TYPES_H_
+
+#include <mach/port.h>
+#include <mach/machine/vm_types.h>
+
+#include <stdint.h>
+
+typedef vm_offset_t pointer_t;
+typedef vm_offset_t vm_address_t;
+
+/*
+ * We use addr64_t for 64-bit addresses that are used on both
+ * 32 and 64-bit machines. On PPC, they are passed and returned as
+ * two adjacent 32-bit GPRs. We use addr64_t in places where
+ * common code must be useable both on 32 and 64-bit machines.
+ */
+typedef uint64_t addr64_t; /* Basic effective address */
+
+/*
+ * We use reg64_t for addresses that are 32 bits on a 32-bit
+ * machine, and 64 bits on a 64-bit machine, but are always
+ * passed and returned in a single GPR on PPC. This type
+ * cannot be used in generic 32-bit c, since on a 64-bit
+ * machine the upper half of the register will be ignored
+ * by the c compiler in 32-bit mode. In c, we can only use the
+ * type in prototypes of functions that are written in and called
+ * from assembly language. This type is basically a comment.
+ */
+typedef uint32_t reg64_t;
+
+/*
+ * To minimize the use of 64-bit fields, we keep some physical
+ * addresses (that are page aligned) as 32-bit page numbers.
+ * This limits the physical address space to 16TB of RAM.
+ */
+typedef uint32_t ppnum_t; /* Physical page number */
+#define PPNUM_MAX UINT32_MAX
+
+
+
+typedef mach_port_t vm_map_t;
+
+
+#define VM_MAP_NULL ((vm_map_t) 0)
+
+/*
+ * Evolving definitions, likely to change.
+ */
+
+typedef uint64_t vm_object_offset_t;
+typedef uint64_t vm_object_size_t;
+
+
+
+
+typedef mach_port_t upl_t;
+typedef mach_port_t vm_named_entry_t;
+
+
+#define UPL_NULL ((upl_t) 0)
+#define VM_NAMED_ENTRY_NULL ((vm_named_entry_t) 0)
+
+#endif /* _MACH_VM_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach_debug/hash_info.h
@@ -0,0 +1,75 @@
+/*
+ * 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 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_DEBUG_HASH_INFO_H_
+#define _MACH_DEBUG_HASH_INFO_H_
+
+#include <mach/machine/vm_types.h> /* natural_t */
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+typedef struct hash_info_bucket {
+ natural_t hib_count; /* number of records in bucket */
+} hash_info_bucket_t;
+
+typedef hash_info_bucket_t *hash_info_bucket_array_t;
+
+#endif /* _MACH_DEBUG_HASH_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach_debug/ipc_info.h
@@ -0,0 +1,116 @@
+/*
+ * 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 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_debug/ipc_info.h
+ * Author: Rich Draves
+ * Date: March, 1990
+ *
+ * Definitions for the IPC debugging interface.
+ */
+
+#ifndef _MACH_DEBUG_IPC_INFO_H_
+#define _MACH_DEBUG_IPC_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/port.h>
+#include <mach/machine/vm_types.h>
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+typedef struct ipc_info_space {
+ natural_t iis_genno_mask; /* generation number mask */
+ natural_t iis_table_size; /* size of table */
+ natural_t iis_table_next; /* next possible size of table */
+ natural_t iis_tree_size; /* size of tree (UNUSED) */
+ natural_t iis_tree_small; /* # of small entries in tree (UNUSED) */
+ natural_t iis_tree_hash; /* # of hashed entries in tree (UNUSED) */
+} ipc_info_space_t;
+
+typedef struct ipc_info_space_basic {
+ natural_t iisb_genno_mask; /* generation number mask */
+ natural_t iisb_table_size; /* size of table */
+ natural_t iisb_table_next; /* next possible size of table */
+ natural_t iisb_table_inuse; /* number of entries in use */
+ natural_t iisb_reserved[2]; /* future expansion */
+} ipc_info_space_basic_t;
+
+typedef struct ipc_info_name {
+ mach_port_name_t iin_name; /* port name, including gen number */
+/*boolean_t*/ integer_t iin_collision; /* collision at this entry? */
+ mach_port_type_t iin_type; /* straight port type */
+ mach_port_urefs_t iin_urefs; /* user-references */
+ natural_t iin_object; /* object pointer/identifier */
+ natural_t iin_next; /* marequest/next in free list */
+ natural_t iin_hash; /* hash index */
+} ipc_info_name_t;
+
+typedef ipc_info_name_t *ipc_info_name_array_t;
+
+/* UNUSED */
+typedef struct ipc_info_tree_name {
+ ipc_info_name_t iitn_name;
+ mach_port_name_t iitn_lchild; /* name of left child */
+ mach_port_name_t iitn_rchild; /* name of right child */
+} ipc_info_tree_name_t;
+
+typedef ipc_info_tree_name_t *ipc_info_tree_name_array_t;
+
+#endif /* _MACH_DEBUG_IPC_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach_debug/lockgroup_info.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2004 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@
+ */
+/*
+ * File: mach/lockgroup_info.h
+ *
+ * Definitions for host_lockgroup_info call.
+ */
+
+#ifndef _MACH_DEBUG_LOCKGROUP_INFO_H_
+#define _MACH_DEBUG_LOCKGROUP_INFO_H_
+
+#include <mach/mach_types.h>
+
+#define LOCKGROUP_MAX_NAME 64
+
+#define LOCKGROUP_ATTR_STAT 0x01ULL
+
+typedef struct lockgroup_info {
+ char lockgroup_name[LOCKGROUP_MAX_NAME];
+ uint64_t lockgroup_attr;
+ uint64_t lock_spin_cnt;
+ uint64_t lock_spin_util_cnt;
+ uint64_t lock_spin_held_cnt;
+ uint64_t lock_spin_miss_cnt;
+ uint64_t lock_spin_held_max;
+ uint64_t lock_spin_held_cum;
+ uint64_t lock_mtx_cnt;
+ uint64_t lock_mtx_util_cnt;
+ uint64_t lock_mtx_held_cnt;
+ uint64_t lock_mtx_miss_cnt;
+ uint64_t lock_mtx_wait_cnt;
+ uint64_t lock_mtx_held_max;
+ uint64_t lock_mtx_held_cum;
+ uint64_t lock_mtx_wait_max;
+ uint64_t lock_mtx_wait_cum;
+ uint64_t lock_rw_cnt;
+ uint64_t lock_rw_util_cnt;
+ uint64_t lock_rw_held_cnt;
+ uint64_t lock_rw_miss_cnt;
+ uint64_t lock_rw_wait_cnt;
+ uint64_t lock_rw_held_max;
+ uint64_t lock_rw_held_cum;
+ uint64_t lock_rw_wait_max;
+ uint64_t lock_rw_wait_cum;
+} lockgroup_info_t;
+
+typedef lockgroup_info_t *lockgroup_info_array_t;
+
+#endif /* _MACH_DEBUG_LOCKGROUP_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach_debug/mach_debug_types.h
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+/*
+ */
+/*
+ * Mach kernel debugging interface type declarations
+ */
+
+#ifndef _MACH_DEBUG_MACH_DEBUG_TYPES_H_
+#define _MACH_DEBUG_MACH_DEBUG_TYPES_H_
+
+#include <mach_debug/ipc_info.h>
+#include <mach_debug/vm_info.h>
+#include <mach_debug/zone_info.h>
+#include <mach_debug/page_info.h>
+#include <mach_debug/hash_info.h>
+#include <mach_debug/lockgroup_info.h>
+
+#define MACH_CORE_FILEHEADER_SIGNATURE 0x0063614d20646152ULL
+#define MACH_CORE_FILEHEADER_MAXFILES 16
+#define MACH_CORE_FILEHEADER_NAMELEN 16
+
+typedef char symtab_name_t[32];
+
+struct mach_core_details {
+ uint64_t gzip_offset;
+ uint64_t gzip_length;
+ char core_name[MACH_CORE_FILEHEADER_NAMELEN];
+};
+
+struct mach_core_fileheader {
+ uint64_t signature;
+ uint64_t log_offset;
+ uint64_t log_length;
+ uint64_t num_files;
+ struct mach_core_details files[MACH_CORE_FILEHEADER_MAXFILES];
+};
+
+#define KOBJECT_DESCRIPTION_LENGTH 512
+typedef char kobject_description_t[KOBJECT_DESCRIPTION_LENGTH];
+
+#endif /* _MACH_DEBUG_MACH_DEBUG_TYPES_H_ */
lib/libc/include/x86_64-macos-gnu/mach_debug/page_info.h
@@ -0,0 +1,64 @@
+/*
+ * 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 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_DEBUG_PAGE_INFO_H
+#define MACH_DEBUG_PAGE_INFO_H
+
+#include <mach/machine/vm_types.h>
+
+typedef vm_offset_t *page_address_array_t;
+#endif /* MACH_DEBUG_PAGE_INFO_H */
lib/libc/include/x86_64-macos-gnu/mach_debug/vm_info.h
@@ -0,0 +1,149 @@
+/*
+ * 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 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_debug/vm_info.h
+ * Author: Rich Draves
+ * Date: March, 1990
+ *
+ * Definitions for the VM debugging interface.
+ */
+
+#ifndef _MACH_DEBUG_VM_INFO_H_
+#define _MACH_DEBUG_VM_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/machine/vm_types.h>
+#include <mach/vm_inherit.h>
+#include <mach/vm_prot.h>
+#include <mach/memory_object_types.h>
+
+#pragma pack(4)
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+typedef struct mach_vm_info_region {
+ mach_vm_offset_t vir_start; /* start of region */
+ mach_vm_offset_t vir_end; /* end of region */
+ mach_vm_offset_t vir_object; /* the mapped object(kernal addr) */
+ memory_object_offset_t vir_offset; /* offset into object */
+ boolean_t vir_needs_copy; /* does object need to be copied? */
+ vm_prot_t vir_protection; /* protection code */
+ vm_prot_t vir_max_protection; /* maximum protection */
+ vm_inherit_t vir_inheritance; /* inheritance */
+ natural_t vir_wired_count; /* number of times wired */
+ natural_t vir_user_wired_count; /* number of times user has wired */
+} mach_vm_info_region_t;
+
+typedef struct vm_info_region_64 {
+ natural_t vir_start; /* start of region */
+ natural_t vir_end; /* end of region */
+ natural_t vir_object; /* the mapped object */
+ memory_object_offset_t vir_offset; /* offset into object */
+ boolean_t vir_needs_copy; /* does object need to be copied? */
+ vm_prot_t vir_protection; /* protection code */
+ vm_prot_t vir_max_protection; /* maximum protection */
+ vm_inherit_t vir_inheritance; /* inheritance */
+ natural_t vir_wired_count; /* number of times wired */
+ natural_t vir_user_wired_count; /* number of times user has wired */
+} vm_info_region_64_t;
+
+typedef struct vm_info_region {
+ natural_t vir_start; /* start of region */
+ natural_t vir_end; /* end of region */
+ natural_t vir_object; /* the mapped object */
+ natural_t vir_offset; /* offset into object */
+ boolean_t vir_needs_copy; /* does object need to be copied? */
+ vm_prot_t vir_protection; /* protection code */
+ vm_prot_t vir_max_protection; /* maximum protection */
+ vm_inherit_t vir_inheritance; /* inheritance */
+ natural_t vir_wired_count; /* number of times wired */
+ natural_t vir_user_wired_count; /* number of times user has wired */
+} vm_info_region_t;
+
+
+typedef struct vm_info_object {
+ natural_t vio_object; /* this object */
+ natural_t vio_size; /* object size (valid if internal - but too small) */
+ unsigned int vio_ref_count; /* number of references */
+ unsigned int vio_resident_page_count; /* number of resident pages */
+ unsigned int vio_absent_count; /* number requested but not filled */
+ natural_t vio_copy; /* copy object */
+ natural_t vio_shadow; /* shadow object */
+ natural_t vio_shadow_offset; /* offset into shadow object */
+ natural_t vio_paging_offset; /* offset into memory object */
+ memory_object_copy_strategy_t vio_copy_strategy;
+ /* how to handle data copy */
+ vm_offset_t vio_last_alloc; /* offset of last allocation */
+ /* many random attributes */
+ unsigned int vio_paging_in_progress;
+ boolean_t vio_pager_created;
+ boolean_t vio_pager_initialized;
+ boolean_t vio_pager_ready;
+ boolean_t vio_can_persist;
+ boolean_t vio_internal;
+ boolean_t vio_temporary;
+ boolean_t vio_alive;
+ boolean_t vio_purgable;
+ boolean_t vio_purgable_volatile;
+} vm_info_object_t;
+
+typedef vm_info_object_t *vm_info_object_array_t;
+
+#pragma pack()
+
+#endif /* _MACH_DEBUG_VM_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/mach_debug/zone_info.h
@@ -0,0 +1,201 @@
+/*
+ * 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 _MACH_DEBUG_ZONE_INFO_H_
+#define _MACH_DEBUG_ZONE_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/machine/vm_types.h>
+
+/*
+ * Legacy definitions for host_zone_info(). This interface, and
+ * these definitions have been deprecated in favor of the new
+ * mach_zone_info() inteface and types below.
+ */
+
+#define ZONE_NAME_MAX_LEN 80
+
+typedef struct zone_name {
+ char zn_name[ZONE_NAME_MAX_LEN];
+} zone_name_t;
+
+typedef zone_name_t *zone_name_array_t;
+
+
+typedef struct zone_info {
+ integer_t zi_count; /* Number of elements used now */
+ vm_size_t zi_cur_size; /* current memory utilization */
+ vm_size_t zi_max_size; /* how large can this zone grow */
+ vm_size_t zi_elem_size; /* size of an element */
+ vm_size_t zi_alloc_size; /* size used for more memory */
+ integer_t zi_pageable; /* zone pageable? */
+ integer_t zi_sleepable; /* sleep if empty? */
+ integer_t zi_exhaustible; /* merely return if empty? */
+ integer_t zi_collectable; /* garbage collect elements? */
+} zone_info_t;
+
+typedef zone_info_t *zone_info_array_t;
+
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+#define MACH_ZONE_NAME_MAX_LEN 80
+
+typedef struct mach_zone_name {
+ char mzn_name[ZONE_NAME_MAX_LEN];
+} mach_zone_name_t;
+
+typedef mach_zone_name_t *mach_zone_name_array_t;
+
+typedef struct mach_zone_info_data {
+ uint64_t mzi_count; /* count of elements in use */
+ uint64_t mzi_cur_size; /* current memory utilization */
+ uint64_t mzi_max_size; /* how large can this zone grow */
+ uint64_t mzi_elem_size; /* size of an element */
+ uint64_t mzi_alloc_size; /* size used for more memory */
+ uint64_t mzi_sum_size; /* sum of all allocs (life of zone) */
+ uint64_t mzi_exhaustible; /* merely return if empty? */
+ uint64_t mzi_collectable; /* garbage collect elements? and how much? */
+} mach_zone_info_t;
+
+typedef mach_zone_info_t *mach_zone_info_array_t;
+
+/*
+ * The lowest bit of mzi_collectable indicates whether or not the zone
+ * is collectable by zone_gc(). The higher bits contain the size in bytes
+ * that can be collected.
+ */
+#define GET_MZI_COLLECTABLE_BYTES(val) ((val) >> 1)
+#define GET_MZI_COLLECTABLE_FLAG(val) ((val) & 1)
+
+#define SET_MZI_COLLECTABLE_BYTES(val, size) \
+ (val) = ((val) & 1) | ((size) << 1)
+#define SET_MZI_COLLECTABLE_FLAG(val, flag) \
+ (val) = (flag) ? ((val) | 1) : (val)
+
+typedef struct task_zone_info_data {
+ uint64_t tzi_count; /* count of elements in use */
+ uint64_t tzi_cur_size; /* current memory utilization */
+ uint64_t tzi_max_size; /* how large can this zone grow */
+ uint64_t tzi_elem_size; /* size of an element */
+ uint64_t tzi_alloc_size; /* size used for more memory */
+ uint64_t tzi_sum_size; /* sum of all allocs (life of zone) */
+ uint64_t tzi_exhaustible; /* merely return if empty? */
+ uint64_t tzi_collectable; /* garbage collect elements? */
+ uint64_t tzi_caller_acct; /* charged to caller (or kernel) */
+ uint64_t tzi_task_alloc; /* sum of all allocs by this task */
+ uint64_t tzi_task_free; /* sum of all frees by this task */
+} task_zone_info_t;
+
+typedef task_zone_info_t *task_zone_info_array_t;
+
+#define MACH_MEMORY_INFO_NAME_MAX_LEN 80
+
+typedef struct mach_memory_info {
+ uint64_t flags;
+ uint64_t site;
+ uint64_t size;
+ uint64_t free;
+ uint64_t largest;
+ uint64_t collectable_bytes;
+ uint64_t mapped;
+ uint64_t peak;
+ uint16_t tag;
+ uint16_t zone;
+ uint16_t _resvA[2];
+ uint64_t _resv[3];
+ char name[MACH_MEMORY_INFO_NAME_MAX_LEN];
+} mach_memory_info_t;
+
+typedef mach_memory_info_t *mach_memory_info_array_t;
+
+/*
+ * MAX_ZTRACE_DEPTH configures how deep of a stack trace is taken on each zalloc in the zone of interest. 15
+ * levels is usually enough to get past all the layers of code in kalloc and IOKit and see who the actual
+ * caller is up above these lower levels.
+ *
+ * This is used both for the zone leak detector and the zone corruption log. Make sure this isn't greater than
+ * BTLOG_MAX_DEPTH defined in btlog.h. Also make sure to update the definition of zone_btrecord_t in
+ * mach_debug_types.defs if this changes.
+ */
+
+#define MAX_ZTRACE_DEPTH 15
+
+/*
+ * Opcodes for the btlog operation field:
+ */
+
+#define ZOP_ALLOC 1
+#define ZOP_FREE 0
+
+/*
+ * Structure used to copy out btlog records to userspace, via the MIG call
+ * mach_zone_get_btlog_records().
+ */
+typedef struct zone_btrecord {
+ uint32_t ref_count; /* no. of active references on the record */
+ uint32_t operation_type; /* operation type (alloc/free) */
+ uint64_t bt[MAX_ZTRACE_DEPTH]; /* backtrace */
+} zone_btrecord_t;
+
+typedef zone_btrecord_t *zone_btrecord_array_t;
+
+#endif /* _MACH_DEBUG_ZONE_INFO_H_ */
lib/libc/include/x86_64-macos-gnu/os/availability.h
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2008-2017 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_AVAILABILITY__
+#define __OS_AVAILABILITY__
+
+/*
+ * API_TO_BE_DEPRECATED is used as a version number in API that will be deprecated
+ * in an upcoming release. This soft deprecation is an intermediate step before formal
+ * deprecation to notify developers about the API before compiler warnings are generated.
+ * You can find all places in your code that use soft deprecated API by redefining the
+ * value of this macro to your current minimum deployment target, for example:
+ * (macOS)
+ * clang -DAPI_TO_BE_DEPRECATED=10.12 <other compiler flags>
+ * (iOS)
+ * clang -DAPI_TO_BE_DEPRECATED=11.0 <other compiler flags>
+ */
+
+#ifndef API_TO_BE_DEPRECATED
+#define API_TO_BE_DEPRECATED 100000
+#endif
+
+#include <AvailabilityInternal.h>
+
+
+
+#if defined(__has_feature) && defined(__has_attribute)
+ #if __has_attribute(availability)
+
+ /*
+ * API Introductions
+ *
+ * Use to specify the release that a particular API became available.
+ *
+ * Platform names:
+ * macos, ios, tvos, watchos
+ *
+ * Examples:
+ * API_AVAILABLE(macos(10.10))
+ * API_AVAILABLE(macos(10.9), ios(10.0))
+ * API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0))
+ */
+
+ #define API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE7, __API_AVAILABLE6, __API_AVAILABLE5, __API_AVAILABLE4, __API_AVAILABLE3, __API_AVAILABLE2, __API_AVAILABLE1, 0)(__VA_ARGS__)
+
+ #define API_AVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_AVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_AVAILABLE_BEGIN7,__API_AVAILABLE_BEGIN6, __API_AVAILABLE_BEGIN5, __API_AVAILABLE_BEGIN4, __API_AVAILABLE_BEGIN3, __API_AVAILABLE_BEGIN2, __API_AVAILABLE_BEGIN1, 0)(__VA_ARGS__)
+ #define API_AVAILABLE_END _Pragma("clang attribute pop")
+
+ /*
+ * API Deprecations
+ *
+ * Use to specify the release that a particular API became unavailable.
+ *
+ * Platform names:
+ * macos, ios, tvos, watchos
+ *
+ * Examples:
+ *
+ * API_DEPRECATED("No longer supported", macos(10.4, 10.8))
+ * API_DEPRECATED("No longer supported", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
+ *
+ * API_DEPRECATED_WITH_REPLACEMENT("-setName:", tvos(10.0, 10.4), ios(9.0, 10.0))
+ * API_DEPRECATED_WITH_REPLACEMENT("SomeClassName", macos(10.4, 10.6), watchos(2.0, 3.0))
+ */
+
+ #define API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG8,__API_DEPRECATED_MSG7, __API_DEPRECATED_MSG6,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1, 0)(__VA_ARGS__)
+ #define API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP8,__API_DEPRECATED_REP7, __API_DEPRECATED_REP6,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1, 0)(__VA_ARGS__)
+
+ #define API_DEPRECATED_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_MSG8,__API_DEPRECATED_BEGIN_MSG7, __API_DEPRECATED_BEGIN_MSG6, __API_DEPRECATED_BEGIN_MSG5, __API_DEPRECATED_BEGIN_MSG4, __API_DEPRECATED_BEGIN_MSG3, __API_DEPRECATED_BEGIN_MSG2, __API_DEPRECATED_BEGIN_MSG1, 0)(__VA_ARGS__)
+ #define API_DEPRECATED_END _Pragma("clang attribute pop")
+
+ #define API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_REP8,__API_DEPRECATED_BEGIN_REP7, __API_DEPRECATED_BEGIN_REP6, __API_DEPRECATED_BEGIN_REP5, __API_DEPRECATED_BEGIN_REP4, __API_DEPRECATED_BEGIN_REP3, __API_DEPRECATED_BEGIN_REP2, __API_DEPRECATED_BEGIN_REP1, 0)(__VA_ARGS__)
+ #define API_DEPRECATED_WITH_REPLACEMENT_END _Pragma("clang attribute pop")
+
+
+ /*
+ * API Unavailability
+ * Use to specify that an API is unavailable for a particular platform.
+ *
+ * Example:
+ * API_UNAVAILABLE(macos)
+ * API_UNAVAILABLE(watchos, tvos)
+ */
+
+ #define API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE7,__API_UNAVAILABLE6, __API_UNAVAILABLE5, __API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1, 0)(__VA_ARGS__)
+
+ #define API_UNAVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_UNAVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE_BEGIN7,__API_UNAVAILABLE_BEGIN6, __API_UNAVAILABLE_BEGIN5, __API_UNAVAILABLE_BEGIN4, __API_UNAVAILABLE_BEGIN3, __API_UNAVAILABLE_BEGIN2, __API_UNAVAILABLE_BEGIN1, 0)(__VA_ARGS__)
+ #define API_UNAVAILABLE_END _Pragma("clang attribute pop")
+ #else
+
+ /*
+ * Evaluate to nothing for compilers that don't support availability.
+ */
+
+ #define API_AVAILABLE(...)
+ #define API_AVAILABLE_BEGIN(...)
+ #define API_AVAILABLE_END
+ #define API_DEPRECATED(...)
+ #define API_DEPRECATED_WITH_REPLACEMENT(...)
+ #define API_DEPRECATED_BEGIN(...)
+ #define API_DEPRECATED_END
+ #define API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...)
+ #define API_DEPRECATED_WITH_REPLACEMENT_END
+ #define API_UNAVAILABLE(...)
+ #define API_UNAVAILABLE_BEGIN(...)
+ #define API_UNAVAILABLE_END
+ #endif /* __has_attribute(availability) */
+#else
+
+ /*
+ * Evaluate to nothing for compilers that don't support clang language extensions.
+ */
+
+ #define API_AVAILABLE(...)
+ #define API_AVAILABLE_BEGIN(...)
+ #define API_AVAILABLE_END
+ #define API_DEPRECATED(...)
+ #define API_DEPRECATED_WITH_REPLACEMENT(...)
+ #define API_DEPRECATED_BEGIN(...)
+ #define API_DEPRECATED_END
+ #define API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...)
+ #define API_DEPRECATED_WITH_REPLACEMENT_END
+ #define API_UNAVAILABLE(...)
+ #define API_UNAVAILABLE_BEGIN(...)
+ #define API_UNAVAILABLE_END
+#endif /* #if defined(__has_feature) && defined(__has_attribute) */
+
+#if __has_include(<AvailabilityProhibitedInternal.h>)
+ #include <AvailabilityProhibitedInternal.h>
+#endif
+
+/*
+ * If SPI decorations have not been defined elsewhere, disable them.
+ */
+
+#ifndef SPI_AVAILABLE
+ #define SPI_AVAILABLE(...)
+#endif
+
+#ifndef SPI_DEPRECATED
+ #define SPI_DEPRECATED(...)
+#endif
+
+#ifndef SPI_DEPRECATED_WITH_REPLACEMENT
+ #define SPI_DEPRECATED_WITH_REPLACEMENT(...)
+#endif
+
+#endif /* __OS_AVAILABILITY__ */
lib/libc/include/x86_64-macos-gnu/os/base.h
@@ -0,0 +1,325 @@
+/*
+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_BASE__
+#define __OS_BASE__
+
+#include <sys/cdefs.h>
+
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+#ifndef __has_include
+#define __has_include(x) 0
+#endif
+#ifndef __has_feature
+#define __has_feature(x) 0
+#endif
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+#ifndef __has_extension
+#define __has_extension(x) 0
+#endif
+
+#undef OS_INLINE // <sys/_types/_os_inline.h>
+#if __GNUC__
+#define OS_NORETURN __attribute__((__noreturn__))
+#define OS_NOTHROW __attribute__((__nothrow__))
+#define OS_NONNULL1 __attribute__((__nonnull__(1)))
+#define OS_NONNULL2 __attribute__((__nonnull__(2)))
+#define OS_NONNULL3 __attribute__((__nonnull__(3)))
+#define OS_NONNULL4 __attribute__((__nonnull__(4)))
+#define OS_NONNULL5 __attribute__((__nonnull__(5)))
+#define OS_NONNULL6 __attribute__((__nonnull__(6)))
+#define OS_NONNULL7 __attribute__((__nonnull__(7)))
+#define OS_NONNULL8 __attribute__((__nonnull__(8)))
+#define OS_NONNULL9 __attribute__((__nonnull__(9)))
+#define OS_NONNULL10 __attribute__((__nonnull__(10)))
+#define OS_NONNULL11 __attribute__((__nonnull__(11)))
+#define OS_NONNULL12 __attribute__((__nonnull__(12)))
+#define OS_NONNULL13 __attribute__((__nonnull__(13)))
+#define OS_NONNULL14 __attribute__((__nonnull__(14)))
+#define OS_NONNULL15 __attribute__((__nonnull__(15)))
+#define OS_NONNULL_ALL __attribute__((__nonnull__))
+#define OS_SENTINEL __attribute__((__sentinel__))
+#define OS_PURE __attribute__((__pure__))
+#define OS_CONST __attribute__((__const__))
+#define OS_WARN_RESULT __attribute__((__warn_unused_result__))
+#define OS_MALLOC __attribute__((__malloc__))
+#define OS_USED __attribute__((__used__))
+#define OS_UNUSED __attribute__((__unused__))
+#define OS_COLD __attribute__((__cold__))
+#define OS_WEAK __attribute__((__weak__))
+#define OS_WEAK_IMPORT __attribute__((__weak_import__))
+#define OS_NOINLINE __attribute__((__noinline__))
+#define OS_ALWAYS_INLINE __attribute__((__always_inline__))
+#define OS_TRANSPARENT_UNION __attribute__((__transparent_union__))
+#define OS_ALIGNED(n) __attribute__((__aligned__((n))))
+#define OS_FORMAT_PRINTF(x,y) __attribute__((__format__(printf,x,y)))
+#define OS_EXPORT extern __attribute__((__visibility__("default")))
+#define OS_INLINE static __inline__
+#define OS_EXPECT(x, v) __builtin_expect((x), (v))
+#else
+#define OS_NORETURN
+#define OS_NOTHROW
+#define OS_NONNULL1
+#define OS_NONNULL2
+#define OS_NONNULL3
+#define OS_NONNULL4
+#define OS_NONNULL5
+#define OS_NONNULL6
+#define OS_NONNULL7
+#define OS_NONNULL8
+#define OS_NONNULL9
+#define OS_NONNULL10
+#define OS_NONNULL11
+#define OS_NONNULL12
+#define OS_NONNULL13
+#define OS_NONNULL14
+#define OS_NONNULL15
+#define OS_NONNULL_ALL
+#define OS_SENTINEL
+#define OS_PURE
+#define OS_CONST
+#define OS_WARN_RESULT
+#define OS_MALLOC
+#define OS_USED
+#define OS_UNUSED
+#define OS_COLD
+#define OS_WEAK
+#define OS_WEAK_IMPORT
+#define OS_NOINLINE
+#define OS_ALWAYS_INLINE
+#define OS_TRANSPARENT_UNION
+#define OS_ALIGNED(n)
+#define OS_FORMAT_PRINTF(x,y)
+#define OS_EXPORT extern
+#define OS_INLINE static inline
+#define OS_EXPECT(x, v) (x)
+#endif
+
+#if __has_attribute(noescape)
+#define OS_NOESCAPE __attribute__((__noescape__))
+#else
+#define OS_NOESCAPE
+#endif
+
+#if defined(__cplusplus) && defined(__clang__)
+#define OS_FALLTHROUGH [[clang::fallthrough]]
+#else
+#define OS_FALLTHROUGH
+#endif
+
+#if __has_feature(assume_nonnull)
+#define OS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+#define OS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
+#else
+#define OS_ASSUME_NONNULL_BEGIN
+#define OS_ASSUME_NONNULL_END
+#endif
+
+#if __has_builtin(__builtin_assume)
+#define OS_COMPILER_CAN_ASSUME(expr) __builtin_assume(expr)
+#else
+#define OS_COMPILER_CAN_ASSUME(expr) ((void)(expr))
+#endif
+
+#if __has_extension(attribute_overloadable)
+#define OS_OVERLOADABLE __attribute__((__overloadable__))
+#else
+#define OS_OVERLOADABLE
+#endif
+
+#if __has_attribute(enum_extensibility)
+#define __OS_ENUM_ATTR __attribute__((enum_extensibility(open)))
+#define __OS_ENUM_ATTR_CLOSED __attribute__((enum_extensibility(closed)))
+#else
+#define __OS_ENUM_ATTR
+#define __OS_ENUM_ATTR_CLOSED
+#endif // __has_attribute(enum_extensibility)
+
+#if __has_attribute(flag_enum)
+/*!
+ * Compile with -Wflag-enum and -Wassign-enum to enforce at definition and
+ * assignment, respectively, i.e. -Wflag-enum prevents you from creating new
+ * enumeration values from illegal values within the enum definition, and
+ * -Wassign-enum prevents you from assigning illegal values to a variable of the
+ * enum type.
+ */
+#ifndef __OPEN_SOURCE__
+/*!
+ * @internal
+ * <rdar://problem/37799789>
+ */
+#endif // __OPEN_SOURCE__
+#define __OS_OPTIONS_ATTR __attribute__((flag_enum))
+#else
+#define __OS_OPTIONS_ATTR
+#endif // __has_attribute(flag_enum)
+
+#if __has_feature(objc_fixed_enum) || __has_extension(cxx_fixed_enum) || \
+ __has_extension(cxx_strong_enums)
+#define OS_ENUM(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } _name##_t
+#define OS_CLOSED_ENUM(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } \
+ __OS_ENUM_ATTR_CLOSED _name##_t
+#define OS_OPTIONS(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } \
+ __OS_ENUM_ATTR __OS_OPTIONS_ATTR _name##_t
+#define OS_CLOSED_OPTIONS(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } \
+ __OS_ENUM_ATTR_CLOSED __OS_OPTIONS_ATTR _name##_t
+#else
+/*!
+ * There is unfortunately no good way in plain C to have both fixed-type enums
+ * and enforcement for clang's enum_extensibility extensions. The primary goal
+ * of these macros is to allow you to define an enum and specify its width in a
+ * single statement, and for plain C that is accomplished by defining an
+ * anonymous enum and then separately typedef'ing the requested type name to the
+ * requested underlying integer type. So the type emitted actually has no
+ * relationship at all to the enum, and therefore while the compiler could
+ * enforce enum extensibility if you used the enum type, it cannot do so if you
+ * use the "_t" type resulting from this expression.
+ *
+ * But we still define a named enum type and decorate it appropriately for you,
+ * so if you really want the enum extensibility enforcement, you can use the
+ * enum type yourself, i.e. when compiling with a C compiler:
+ *
+ * OS_CLOSED_ENUM(my_type, uint64_t,
+ * FOO,
+ * BAR,
+ * BAZ,
+ * );
+ *
+ * my_type_t mt = 98; // legal
+ * enum my_type emt = 98; // illegal
+ *
+ * But be aware that the underlying enum type's width is subject only to the C
+ * language's guarantees -- namely that it will be compatible with int, char,
+ * and unsigned char. It is not safe to rely on the size of this type.
+ *
+ * When compiling in ObjC or C++, both of the above assignments are illegal.
+ */
+#define __OS_ENUM_C_FALLBACK(_name, _type, ...) \
+ typedef _type _name##_t; enum _name { __VA_ARGS__ }
+
+#define OS_ENUM(_name, _type, ...) \
+ typedef _type _name##_t; enum { __VA_ARGS__ }
+#define OS_CLOSED_ENUM(_name, _type, ...) \
+ __OS_ENUM_C_FALLBACK(_name, _type, ## __VA_ARGS__) \
+ __OS_ENUM_ATTR_CLOSED
+#define OS_OPTIONS(_name, _type, ...) \
+ __OS_ENUM_C_FALLBACK(_name, _type, ## __VA_ARGS__) \
+ __OS_ENUM_ATTR __OS_OPTIONS_ATTR
+#define OS_CLOSED_OPTIONS(_name, _type, ...) \
+ __OS_ENUM_C_FALLBACK(_name, _type, ## __VA_ARGS__) \
+ __OS_ENUM_ATTR_CLOSED __OS_OPTIONS_ATTR
+#endif // __has_feature(objc_fixed_enum) || __has_extension(cxx_strong_enums)
+
+#if __has_feature(attribute_availability_swift)
+// equivalent to __SWIFT_UNAVAILABLE from Availability.h
+#define OS_SWIFT_UNAVAILABLE(_msg) \
+ __attribute__((__availability__(swift, unavailable, message=_msg)))
+#else
+#define OS_SWIFT_UNAVAILABLE(_msg)
+#endif
+
+#if __has_attribute(swift_private)
+# define OS_REFINED_FOR_SWIFT __attribute__((__swift_private__))
+#else
+# define OS_REFINED_FOR_SWIFT
+#endif
+
+#if __has_attribute(swift_name)
+# define OS_SWIFT_NAME(_name) __attribute__((__swift_name__(#_name)))
+#else
+# define OS_SWIFT_NAME(_name)
+#endif
+
+#define __OS_STRINGIFY(s) #s
+#define OS_STRINGIFY(s) __OS_STRINGIFY(s)
+#define __OS_CONCAT(x, y) x ## y
+#define OS_CONCAT(x, y) __OS_CONCAT(x, y)
+
+#ifdef __GNUC__
+#define os_prevent_tail_call_optimization() __asm__("")
+#define os_is_compile_time_constant(expr) __builtin_constant_p(expr)
+#define os_compiler_barrier() __asm__ __volatile__("" ::: "memory")
+#else
+#define os_prevent_tail_call_optimization() do { } while (0)
+#define os_is_compile_time_constant(expr) 0
+#define os_compiler_barrier() do { } while (0)
+#endif
+
+#if __has_attribute(not_tail_called)
+#define OS_NOT_TAIL_CALLED __attribute__((__not_tail_called__))
+#else
+#define OS_NOT_TAIL_CALLED
+#endif
+
+typedef void (*os_function_t)(void *_Nullable);
+
+#ifdef __BLOCKS__
+/*!
+ * @typedef os_block_t
+ *
+ * @abstract
+ * Generic type for a block taking no arguments and returning no value.
+ *
+ * @discussion
+ * When not building with Objective-C ARC, a block object allocated on or
+ * copied to the heap must be released with a -[release] message or the
+ * Block_release() function.
+ *
+ * The declaration of a block literal allocates storage on the stack.
+ * Therefore, this is an invalid construct:
+ * <code>
+ * os_block_t block;
+ * if (x) {
+ * block = ^{ printf("true\n"); };
+ * } else {
+ * block = ^{ printf("false\n"); };
+ * }
+ * block(); // unsafe!!!
+ * </code>
+ *
+ * What is happening behind the scenes:
+ * <code>
+ * if (x) {
+ * struct Block __tmp_1 = ...; // setup details
+ * block = &__tmp_1;
+ * } else {
+ * struct Block __tmp_2 = ...; // setup details
+ * block = &__tmp_2;
+ * }
+ * </code>
+ *
+ * As the example demonstrates, the address of a stack variable is escaping the
+ * scope in which it is allocated. That is a classic C bug.
+ *
+ * Instead, the block literal must be copied to the heap with the Block_copy()
+ * function or by sending it a -[copy] message.
+ */
+typedef void (^os_block_t)(void);
+#endif
+
+#endif // __OS_BASE__
lib/libc/include/x86_64-macos-gnu/sys/_types/_fsid_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2014 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 _FSID_T
+#define _FSID_T
+#include <sys/_types/_int32_t.h> /* int32_t */
+typedef struct fsid { int32_t val[2]; } fsid_t; /* file system id type */
+#endif /* _FSID_T */
lib/libc/include/x86_64-macos-gnu/sys/_types/_fsobj_id_t.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2016 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 _FSOBJ_ID_T
+#define _FSOBJ_ID_T
+
+#include <sys/_types/_u_int32_t.h> /* u_int32_t */
+
+typedef struct fsobj_id {
+ u_int32_t fid_objno;
+ u_int32_t fid_generation;
+} fsobj_id_t;
+
+#endif /* _FSOBJ_ID_T */
lib/libc/include/x86_64-macos-gnu/sys/attr.h
@@ -0,0 +1,579 @@
+/*
+ * Copyright (c) 2000-2018 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@
+ */
+
+/*
+ * attr.h - attribute data structures and interfaces
+ *
+ * Copyright (c) 1998, Apple Computer, Inc. All Rights Reserved.
+ */
+
+#ifndef _SYS_ATTR_H_
+#define _SYS_ATTR_H_
+
+#include <sys/appleapiopts.h>
+
+#ifdef __APPLE_API_UNSTABLE
+#include <sys/types.h>
+#include <sys/ucred.h>
+#include <sys/time.h>
+#include <sys/cdefs.h>
+
+#define FSOPT_NOFOLLOW 0x00000001
+#define FSOPT_NOINMEMUPDATE 0x00000002
+#define FSOPT_REPORT_FULLSIZE 0x00000004
+/* The following option only valid when requesting ATTR_CMN_RETURNED_ATTRS */
+#define FSOPT_PACK_INVAL_ATTRS 0x00000008
+
+
+#define FSOPT_ATTR_CMN_EXTENDED 0x00000020
+
+/* we currently aren't anywhere near this amount for a valid
+ * fssearchblock.sizeofsearchparams1 or fssearchblock.sizeofsearchparams2
+ * but we put a sanity check in to avoid abuse of the value passed in from
+ * user land.
+ */
+#define SEARCHFS_MAX_SEARCHPARMS 4096
+
+typedef u_int32_t text_encoding_t;
+
+typedef u_int32_t fsobj_type_t;
+
+typedef u_int32_t fsobj_tag_t;
+
+typedef u_int32_t fsfile_type_t;
+
+typedef u_int32_t fsvolid_t;
+
+#include <sys/_types/_fsobj_id_t.h> /* file object id type */
+
+typedef u_int32_t attrgroup_t;
+
+struct attrlist {
+ u_short bitmapcount; /* number of attr. bit sets in list (should be 5) */
+ u_int16_t reserved; /* (to maintain 4-byte alignment) */
+ attrgroup_t commonattr; /* common attribute group */
+ attrgroup_t volattr; /* Volume attribute group */
+ attrgroup_t dirattr; /* directory attribute group */
+ attrgroup_t fileattr; /* file attribute group */
+ attrgroup_t forkattr; /* fork attribute group */
+};
+#define ATTR_BIT_MAP_COUNT 5
+
+typedef struct attribute_set {
+ attrgroup_t commonattr; /* common attribute group */
+ attrgroup_t volattr; /* Volume attribute group */
+ attrgroup_t dirattr; /* directory attribute group */
+ attrgroup_t fileattr; /* file attribute group */
+ attrgroup_t forkattr; /* fork attribute group */
+} attribute_set_t;
+
+typedef struct attrreference {
+ int32_t attr_dataoffset;
+ u_int32_t attr_length;
+} attrreference_t;
+
+/* XXX PPD This is derived from HFSVolumePriv.h and should perhaps be referenced from there? */
+
+struct diskextent {
+ u_int32_t startblock; /* first block allocated */
+ u_int32_t blockcount; /* number of blocks allocated */
+};
+
+typedef struct diskextent extentrecord[8];
+
+typedef u_int32_t vol_capabilities_set_t[4];
+
+#define VOL_CAPABILITIES_FORMAT 0
+#define VOL_CAPABILITIES_INTERFACES 1
+#define VOL_CAPABILITIES_RESERVED1 2
+#define VOL_CAPABILITIES_RESERVED2 3
+
+typedef struct vol_capabilities_attr {
+ vol_capabilities_set_t capabilities;
+ vol_capabilities_set_t valid;
+} vol_capabilities_attr_t;
+
+/*
+ * XXX this value needs to be raised - 3893388
+ */
+#define ATTR_MAX_BUFFER 8192
+
+/*
+ * VOL_CAP_FMT_PERSISTENTOBJECTIDS: When set, the volume has object IDs
+ * that are persistent (retain their values even when the volume is
+ * unmounted and remounted), and a file or directory can be looked up
+ * by ID. Volumes that support VolFS and can support Carbon File ID
+ * references should set this bit.
+ *
+ * VOL_CAP_FMT_SYMBOLICLINKS: When set, the volume supports symbolic
+ * links. The symlink(), readlink(), and lstat() calls all use this
+ * symbolic link.
+ *
+ * VOL_CAP_FMT_HARDLINKS: When set, the volume supports hard links.
+ * The link() call creates hard links.
+ *
+ * VOL_CAP_FMT_JOURNAL: When set, the volume is capable of supporting
+ * a journal used to speed recovery in case of unplanned shutdown
+ * (such as a power outage or crash). This bit does not necessarily
+ * mean the volume is actively using a journal for recovery.
+ *
+ * VOL_CAP_FMT_JOURNAL_ACTIVE: When set, the volume is currently using
+ * a journal for use in speeding recovery after an unplanned shutdown.
+ * This bit can be set only if VOL_CAP_FMT_JOURNAL is also set.
+ *
+ * VOL_CAP_FMT_NO_ROOT_TIMES: When set, the volume format does not
+ * store reliable times for the root directory, so you should not
+ * depend on them to detect changes, etc.
+ *
+ * VOL_CAP_FMT_SPARSE_FILES: When set, the volume supports sparse files.
+ * That is, files which can have "holes" that have never been written
+ * to, and are not allocated on disk. Sparse files may have an
+ * allocated size that is less than the file's logical length.
+ *
+ * VOL_CAP_FMT_ZERO_RUNS: For security reasons, parts of a file (runs)
+ * that have never been written to must appear to contain zeroes. When
+ * this bit is set, the volume keeps track of allocated but unwritten
+ * runs of a file so that it can substitute zeroes without actually
+ * writing zeroes to the media. This provides performance similar to
+ * sparse files, but not the space savings.
+ *
+ * VOL_CAP_FMT_CASE_SENSITIVE: When set, file and directory names are
+ * case sensitive (upper and lower case are different). When clear,
+ * an upper case character is equivalent to a lower case character,
+ * and you can't have two names that differ solely in the case of
+ * the characters.
+ *
+ * VOL_CAP_FMT_CASE_PRESERVING: When set, file and directory names
+ * preserve the difference between upper and lower case. If clear,
+ * the volume may change the case of some characters (typically
+ * making them all upper or all lower case). A volume that sets
+ * VOL_CAP_FMT_CASE_SENSITIVE should also set VOL_CAP_FMT_CASE_PRESERVING.
+ *
+ * VOL_CAP_FMT_FAST_STATFS: This bit is used as a hint to upper layers
+ * (especially Carbon) that statfs() is fast enough that its results
+ * need not be cached by those upper layers. A volume that caches
+ * the statfs information in its in-memory structures should set this bit.
+ * A volume that must always read from disk or always perform a network
+ * transaction should not set this bit.
+ *
+ * VOL_CAP_FMT_2TB_FILESIZE: If this bit is set the volume format supports
+ * file sizes larger than 4GB, and potentially up to 2TB; it does not
+ * indicate whether the filesystem supports files larger than that.
+ *
+ * VOL_CAP_FMT_OPENDENYMODES: When set, the volume supports open deny
+ * modes (e.g. "open for read write, deny write"; effectively, mandatory
+ * file locking based on open modes).
+ *
+ * VOL_CAP_FMT_HIDDEN_FILES: When set, the volume supports the UF_HIDDEN
+ * file flag, and the UF_HIDDEN flag is mapped to that volume's native
+ * "hidden" or "invisible" bit (which may be the invisible bit from the
+ * Finder Info extended attribute).
+ *
+ * VOL_CAP_FMT_PATH_FROM_ID: When set, the volume supports the ability
+ * to derive a pathname to the root of the file system given only the
+ * id of an object. This also implies that object ids on this file
+ * system are persistent and not recycled. This is a very specialized
+ * capability and it is assumed that most file systems will not support
+ * it. Its use is for legacy non-posix APIs like ResolveFileIDRef.
+ *
+ * VOL_CAP_FMT_NO_VOLUME_SIZES: When set, the volume does not support
+ * returning values for total data blocks, available blocks, or free blocks
+ * (as in f_blocks, f_bavail, or f_bfree in "struct statfs"). Historically,
+ * those values were set to 0xFFFFFFFF for volumes that did not support them.
+ *
+ * VOL_CAP_FMT_DECMPFS_COMPRESSION: When set, the volume supports transparent
+ * decompression of compressed files using decmpfs.
+ *
+ * VOL_CAP_FMT_64BIT_OBJECT_IDS: When set, the volume uses object IDs that
+ * are 64-bit. This means that ATTR_CMN_FILEID and ATTR_CMN_PARENTID are the
+ * only legitimate attributes for obtaining object IDs from this volume and the
+ * 32-bit fid_objno fields of the fsobj_id_t returned by ATTR_CMN_OBJID,
+ * ATTR_CMN_OBJPERMID, and ATTR_CMN_PAROBJID are undefined.
+ *
+ * VOL_CAP_FMT_DIR_HARDLINKS: When set, the volume supports directory
+ * hard links.
+ *
+ * VOL_CAP_FMT_DOCUMENT_ID: When set, the volume supports document IDs
+ * (an ID which persists across object ID changes) for document revisions.
+ *
+ * VOL_CAP_FMT_WRITE_GENERATION_COUNT: When set, the volume supports write
+ * generation counts (a count of how many times an object has been modified)
+ *
+ * VOL_CAP_FMT_NO_IMMUTABLE_FILES: When set, the volume does not support
+ * setting the UF_IMMUTABLE flag.
+ *
+ * VOL_CAP_FMT_NO_PERMISSIONS: When set, the volume does not support setting
+ * permissions.
+ *
+ * VOL_CAP_FMT_SHARED_SPACE: When set, the volume supports sharing space with
+ * other filesystems i.e. multiple logical filesystems can exist in the same
+ * "partition". An implication of this is that the filesystem which sets
+ * this capability treats waitfor arguments to VFS_SYNC as bit flags.
+ *
+ * VOL_CAP_FMT_VOL_GROUPS: When set, this volume is part of a volume-group
+ * that implies multiple volumes must be mounted in order to boot and root the
+ * operating system. Typically, this means a read-only system volume and a
+ * writable data volume.
+ */
+#define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001
+#define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002
+#define VOL_CAP_FMT_HARDLINKS 0x00000004
+#define VOL_CAP_FMT_JOURNAL 0x00000008
+#define VOL_CAP_FMT_JOURNAL_ACTIVE 0x00000010
+#define VOL_CAP_FMT_NO_ROOT_TIMES 0x00000020
+#define VOL_CAP_FMT_SPARSE_FILES 0x00000040
+#define VOL_CAP_FMT_ZERO_RUNS 0x00000080
+#define VOL_CAP_FMT_CASE_SENSITIVE 0x00000100
+#define VOL_CAP_FMT_CASE_PRESERVING 0x00000200
+#define VOL_CAP_FMT_FAST_STATFS 0x00000400
+#define VOL_CAP_FMT_2TB_FILESIZE 0x00000800
+#define VOL_CAP_FMT_OPENDENYMODES 0x00001000
+#define VOL_CAP_FMT_HIDDEN_FILES 0x00002000
+#define VOL_CAP_FMT_PATH_FROM_ID 0x00004000
+#define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000
+#define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000
+#define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000
+#define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000
+#define VOL_CAP_FMT_DOCUMENT_ID 0x00080000
+#define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000
+#define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000
+#define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000
+#define VOL_CAP_FMT_SHARED_SPACE 0x00800000
+#define VOL_CAP_FMT_VOL_GROUPS 0x01000000
+
+/*
+ * VOL_CAP_INT_SEARCHFS: When set, the volume implements the
+ * searchfs() system call (the vnop_searchfs vnode operation).
+ *
+ * VOL_CAP_INT_ATTRLIST: When set, the volume implements the
+ * getattrlist() and setattrlist() system calls (vnop_getattrlist
+ * and vnop_setattrlist vnode operations) for the volume, files,
+ * and directories. The volume may or may not implement the
+ * readdirattr() system call. XXX Is there any minimum set
+ * of attributes that should be supported? To determine the
+ * set of supported attributes, get the ATTR_VOL_ATTRIBUTES
+ * attribute of the volume.
+ *
+ * VOL_CAP_INT_NFSEXPORT: When set, the volume implements exporting
+ * of NFS volumes.
+ *
+ * VOL_CAP_INT_READDIRATTR: When set, the volume implements the
+ * readdirattr() system call (vnop_readdirattr vnode operation).
+ *
+ * VOL_CAP_INT_EXCHANGEDATA: When set, the volume implements the
+ * exchangedata() system call (VNOP_EXCHANGE vnode operation).
+ *
+ * VOL_CAP_INT_COPYFILE: When set, the volume implements the
+ * VOP_COPYFILE vnode operation. (XXX There should be a copyfile()
+ * system call in <unistd.h>.)
+ *
+ * VOL_CAP_INT_ALLOCATE: When set, the volume implements the
+ * VNOP_ALLOCATE vnode operation, which means it implements the
+ * F_PREALLOCATE selector of fcntl(2).
+ *
+ * VOL_CAP_INT_VOL_RENAME: When set, the volume implements the
+ * ATTR_VOL_NAME attribute for both getattrlist() and setattrlist().
+ * The volume can be renamed by setting ATTR_VOL_NAME with setattrlist().
+ *
+ * VOL_CAP_INT_ADVLOCK: When set, the volume implements POSIX style
+ * byte range locks via vnop_advlock (accessible from fcntl(2)).
+ *
+ * VOL_CAP_INT_FLOCK: When set, the volume implements whole-file flock(2)
+ * style locks via vnop_advlock. This includes the O_EXLOCK and O_SHLOCK
+ * flags of the open(2) call.
+ *
+ * VOL_CAP_INT_EXTENDED_SECURITY: When set, the volume implements
+ * extended security (ACLs).
+ *
+ * VOL_CAP_INT_USERACCESS: When set, the volume supports the
+ * ATTR_CMN_USERACCESS attribute (used to get the user's access
+ * mode to the file).
+ *
+ * VOL_CAP_INT_MANLOCK: When set, the volume supports AFP-style
+ * mandatory byte range locks via an ioctl().
+ *
+ * VOL_CAP_INT_EXTENDED_ATTR: When set, the volume implements
+ * native extended attribues.
+ *
+ * VOL_CAP_INT_NAMEDSTREAMS: When set, the volume supports
+ * native named streams.
+ *
+ * VOL_CAP_INT_CLONE: When set, the volume supports clones.
+ *
+ * VOL_CAP_INT_SNAPSHOT: When set, the volume supports snapshots.
+ *
+ * VOL_CAP_INT_RENAME_SWAP: When set, the volume supports swapping
+ * file system objects.
+ *
+ * VOL_CAP_INT_RENAME_EXCL: When set, the volume supports an
+ * exclusive rename operation.
+ *
+ * VOL_CAP_INT_RENAME_OPENFAIL: When set, the volume may fail rename
+ * operations on files that are open.
+ */
+#define VOL_CAP_INT_SEARCHFS 0x00000001
+#define VOL_CAP_INT_ATTRLIST 0x00000002
+#define VOL_CAP_INT_NFSEXPORT 0x00000004
+#define VOL_CAP_INT_READDIRATTR 0x00000008
+#define VOL_CAP_INT_EXCHANGEDATA 0x00000010
+#define VOL_CAP_INT_COPYFILE 0x00000020
+#define VOL_CAP_INT_ALLOCATE 0x00000040
+#define VOL_CAP_INT_VOL_RENAME 0x00000080
+#define VOL_CAP_INT_ADVLOCK 0x00000100
+#define VOL_CAP_INT_FLOCK 0x00000200
+#define VOL_CAP_INT_EXTENDED_SECURITY 0x00000400
+#define VOL_CAP_INT_USERACCESS 0x00000800
+#define VOL_CAP_INT_MANLOCK 0x00001000
+#define VOL_CAP_INT_NAMEDSTREAMS 0x00002000
+#define VOL_CAP_INT_EXTENDED_ATTR 0x00004000
+#define VOL_CAP_INT_CLONE 0x00010000
+#define VOL_CAP_INT_SNAPSHOT 0x00020000
+#define VOL_CAP_INT_RENAME_SWAP 0x00040000
+#define VOL_CAP_INT_RENAME_EXCL 0x00080000
+#define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000
+
+typedef struct vol_attributes_attr {
+ attribute_set_t validattr;
+ attribute_set_t nativeattr;
+} vol_attributes_attr_t;
+
+#define ATTR_CMN_NAME 0x00000001
+#define ATTR_CMN_DEVID 0x00000002
+#define ATTR_CMN_FSID 0x00000004
+#define ATTR_CMN_OBJTYPE 0x00000008
+#define ATTR_CMN_OBJTAG 0x00000010
+#define ATTR_CMN_OBJID 0x00000020
+#define ATTR_CMN_OBJPERMANENTID 0x00000040
+#define ATTR_CMN_PAROBJID 0x00000080
+#define ATTR_CMN_SCRIPT 0x00000100
+#define ATTR_CMN_CRTIME 0x00000200
+#define ATTR_CMN_MODTIME 0x00000400
+#define ATTR_CMN_CHGTIME 0x00000800
+#define ATTR_CMN_ACCTIME 0x00001000
+#define ATTR_CMN_BKUPTIME 0x00002000
+#define ATTR_CMN_FNDRINFO 0x00004000
+#define ATTR_CMN_OWNERID 0x00008000
+#define ATTR_CMN_GRPID 0x00010000
+#define ATTR_CMN_ACCESSMASK 0x00020000
+#define ATTR_CMN_FLAGS 0x00040000
+
+/* The following were defined as: */
+/* #define ATTR_CMN_NAMEDATTRCOUNT 0x00080000 */
+/* #define ATTR_CMN_NAMEDATTRLIST 0x00100000 */
+/* These bits have been salvaged for use as: */
+/* #define ATTR_CMN_GEN_COUNT 0x00080000 */
+/* #define ATTR_CMN_DOCUMENT_ID 0x00100000 */
+/* They can only be used with the FSOPT_ATTR_CMN_EXTENDED */
+/* option flag. */
+
+#define ATTR_CMN_GEN_COUNT 0x00080000
+#define ATTR_CMN_DOCUMENT_ID 0x00100000
+
+#define ATTR_CMN_USERACCESS 0x00200000
+#define ATTR_CMN_EXTENDED_SECURITY 0x00400000
+#define ATTR_CMN_UUID 0x00800000
+#define ATTR_CMN_GRPUUID 0x01000000
+#define ATTR_CMN_FILEID 0x02000000
+#define ATTR_CMN_PARENTID 0x04000000
+#define ATTR_CMN_FULLPATH 0x08000000
+#define ATTR_CMN_ADDEDTIME 0x10000000
+#define ATTR_CMN_ERROR 0x20000000
+#define ATTR_CMN_DATA_PROTECT_FLAGS 0x40000000
+
+/*
+ * ATTR_CMN_RETURNED_ATTRS is only valid with getattrlist(2) and
+ * getattrlistbulk(2). It is always the first attribute in the return buffer.
+ */
+#define ATTR_CMN_RETURNED_ATTRS 0x80000000
+
+#define ATTR_CMN_VALIDMASK 0xFFFFFFFF
+/*
+ * The settable ATTR_CMN_* attributes include the following:
+ * ATTR_CMN_SCRIPT
+ * ATTR_CMN_CRTIME
+ * ATTR_CMN_MODTIME
+ * ATTR_CMN_CHGTIME
+ *
+ * ATTR_CMN_ACCTIME
+ * ATTR_CMN_BKUPTIME
+ * ATTR_CMN_FNDRINFO
+ * ATTR_CMN_OWNERID
+ *
+ * ATTR_CMN_GRPID
+ * ATTR_CMN_ACCESSMASK
+ * ATTR_CMN_FLAGS
+ *
+ * ATTR_CMN_EXTENDED_SECURITY
+ * ATTR_CMN_UUID
+ *
+ * ATTR_CMN_GRPUUID
+ *
+ * ATTR_CMN_DATA_PROTECT_FLAGS
+ */
+#define ATTR_CMN_SETMASK 0x51C7FF00
+#define ATTR_CMN_VOLSETMASK 0x00006700
+
+#define ATTR_VOL_FSTYPE 0x00000001
+#define ATTR_VOL_SIGNATURE 0x00000002
+#define ATTR_VOL_SIZE 0x00000004
+#define ATTR_VOL_SPACEFREE 0x00000008
+#define ATTR_VOL_SPACEAVAIL 0x00000010
+#define ATTR_VOL_MINALLOCATION 0x00000020
+#define ATTR_VOL_ALLOCATIONCLUMP 0x00000040
+#define ATTR_VOL_IOBLOCKSIZE 0x00000080
+#define ATTR_VOL_OBJCOUNT 0x00000100
+#define ATTR_VOL_FILECOUNT 0x00000200
+#define ATTR_VOL_DIRCOUNT 0x00000400
+#define ATTR_VOL_MAXOBJCOUNT 0x00000800
+#define ATTR_VOL_MOUNTPOINT 0x00001000
+#define ATTR_VOL_NAME 0x00002000
+#define ATTR_VOL_MOUNTFLAGS 0x00004000
+#define ATTR_VOL_MOUNTEDDEVICE 0x00008000
+#define ATTR_VOL_ENCODINGSUSED 0x00010000
+#define ATTR_VOL_CAPABILITIES 0x00020000
+#define ATTR_VOL_UUID 0x00040000
+#define ATTR_VOL_QUOTA_SIZE 0x10000000
+#define ATTR_VOL_RESERVED_SIZE 0x20000000
+#define ATTR_VOL_ATTRIBUTES 0x40000000
+#define ATTR_VOL_INFO 0x80000000
+
+#define ATTR_VOL_VALIDMASK 0xF007FFFF
+
+/*
+ * The list of settable ATTR_VOL_* attributes include the following:
+ * ATTR_VOL_NAME
+ * ATTR_VOL_INFO
+ */
+#define ATTR_VOL_SETMASK 0x80002000
+
+
+/* File/directory attributes: */
+#define ATTR_DIR_LINKCOUNT 0x00000001
+#define ATTR_DIR_ENTRYCOUNT 0x00000002
+#define ATTR_DIR_MOUNTSTATUS 0x00000004
+#define ATTR_DIR_ALLOCSIZE 0x00000008
+#define ATTR_DIR_IOBLOCKSIZE 0x00000010
+#define ATTR_DIR_DATALENGTH 0x00000020
+
+/* ATTR_DIR_MOUNTSTATUS Flags: */
+#define DIR_MNTSTATUS_MNTPOINT 0x00000001
+#define DIR_MNTSTATUS_TRIGGER 0x00000002
+
+#define ATTR_DIR_VALIDMASK 0x0000003f
+#define ATTR_DIR_SETMASK 0x00000000
+
+#define ATTR_FILE_LINKCOUNT 0x00000001
+#define ATTR_FILE_TOTALSIZE 0x00000002
+#define ATTR_FILE_ALLOCSIZE 0x00000004
+#define ATTR_FILE_IOBLOCKSIZE 0x00000008
+#define ATTR_FILE_DEVTYPE 0x00000020
+#define ATTR_FILE_FORKCOUNT 0x00000080
+#define ATTR_FILE_FORKLIST 0x00000100
+#define ATTR_FILE_DATALENGTH 0x00000200
+#define ATTR_FILE_DATAALLOCSIZE 0x00000400
+#define ATTR_FILE_RSRCLENGTH 0x00001000
+#define ATTR_FILE_RSRCALLOCSIZE 0x00002000
+
+#define ATTR_FILE_VALIDMASK 0x000037FF
+/*
+ * Settable ATTR_FILE_* attributes include:
+ * ATTR_FILE_DEVTYPE
+ */
+#define ATTR_FILE_SETMASK 0x00000020
+
+/* CMNEXT attributes extend the common attributes, but in the forkattr field */
+#define ATTR_CMNEXT_RELPATH 0x00000004
+#define ATTR_CMNEXT_PRIVATESIZE 0x00000008
+#define ATTR_CMNEXT_LINKID 0x00000010
+#define ATTR_CMNEXT_NOFIRMLINKPATH 0x00000020
+#define ATTR_CMNEXT_REALDEVID 0x00000040
+#define ATTR_CMNEXT_REALFSID 0x00000080
+#define ATTR_CMNEXT_CLONEID 0x00000100
+#define ATTR_CMNEXT_EXT_FLAGS 0x00000200
+
+#define ATTR_CMNEXT_VALIDMASK 0x000003fc
+#define ATTR_CMNEXT_SETMASK 0x00000000
+
+/* Deprecated fork attributes */
+#define ATTR_FORK_TOTALSIZE 0x00000001
+#define ATTR_FORK_ALLOCSIZE 0x00000002
+#define ATTR_FORK_RESERVED 0xffffffff
+
+#define ATTR_FORK_VALIDMASK 0x00000003
+#define ATTR_FORK_SETMASK 0x00000000
+
+/* Obsolete, implemented, not supported */
+#define ATTR_CMN_NAMEDATTRCOUNT 0x00080000
+#define ATTR_CMN_NAMEDATTRLIST 0x00100000
+#define ATTR_FILE_CLUMPSIZE 0x00000010 /* obsolete */
+#define ATTR_FILE_FILETYPE 0x00000040 /* always zero */
+#define ATTR_FILE_DATAEXTENTS 0x00000800 /* obsolete, HFS-specific */
+#define ATTR_FILE_RSRCEXTENTS 0x00004000 /* obsolete, HFS-specific */
+
+/* Required attributes for getattrlistbulk(2) */
+#define ATTR_BULK_REQUIRED (ATTR_CMN_NAME | ATTR_CMN_RETURNED_ATTRS)
+
+/*
+ * Searchfs
+ */
+#define SRCHFS_START 0x00000001
+#define SRCHFS_MATCHPARTIALNAMES 0x00000002
+#define SRCHFS_MATCHDIRS 0x00000004
+#define SRCHFS_MATCHFILES 0x00000008
+#define SRCHFS_SKIPLINKS 0x00000010
+#define SRCHFS_SKIPINVISIBLE 0x00000020
+#define SRCHFS_SKIPPACKAGES 0x00000040
+#define SRCHFS_SKIPINAPPROPRIATE 0x00000080
+
+#define SRCHFS_NEGATEPARAMS 0x80000000
+#define SRCHFS_VALIDOPTIONSMASK 0x800000FF
+
+struct fssearchblock {
+ struct attrlist *returnattrs;
+ void *returnbuffer;
+ size_t returnbuffersize;
+ u_long maxmatches;
+ struct timeval timelimit;
+ void *searchparams1;
+ size_t sizeofsearchparams1;
+ void *searchparams2;
+ size_t sizeofsearchparams2;
+ struct attrlist searchattrs;
+};
+
+
+struct searchstate {
+ uint32_t ss_union_flags; // for SRCHFS_START
+ uint32_t ss_union_layer; // 0 = top
+ u_char ss_fsstate[548]; // fs private
+} __attribute__((packed));
+
+#define FST_EOF (-1) /* end-of-file offset */
+
+#endif /* __APPLE_API_UNSTABLE */
+#endif /* !_SYS_ATTR_H_ */
lib/libc/include/x86_64-macos-gnu/sys/mount.h
@@ -0,0 +1,423 @@
+/*
+ * 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) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*
+ * Copyright (c) 1989, 1991, 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.
+ *
+ * @(#)mount.h 8.21 (Berkeley) 5/20/95
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 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.
+ */
+
+
+#ifndef _SYS_MOUNT_H_
+#define _SYS_MOUNT_H_
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+#include <sys/attr.h> /* needed for vol_capabilities_attr_t */
+#include <os/base.h>
+
+#include <stdint.h>
+#include <sys/ucred.h>
+#include <sys/queue.h> /* XXX needed for user builds */
+#include <Availability.h>
+
+#include <sys/_types/_fsid_t.h> /* file system id type */
+
+/*
+ * file system statistics
+ */
+
+#define MFSNAMELEN 15 /* length of fs type name, not inc. null */
+#define MFSTYPENAMELEN 16 /* length of fs type name including null */
+
+#if __DARWIN_64_BIT_INO_T
+#define MNAMELEN MAXPATHLEN /* length of buffer for returned name */
+#else /* ! __DARWIN_64_BIT_INO_T */
+#define MNAMELEN 90 /* length of buffer for returned name */
+#endif /* __DARWIN_64_BIT_INO_T */
+
+#define MNT_EXT_ROOT_DATA_VOL 0x00000001 /* Data volume of root volume group */
+
+#define __DARWIN_STRUCT_STATFS64 { \
+ uint32_t f_bsize; /* fundamental file system block size */ \
+ int32_t f_iosize; /* optimal transfer block size */ \
+ uint64_t f_blocks; /* total data blocks in file system */ \
+ uint64_t f_bfree; /* free blocks in fs */ \
+ uint64_t f_bavail; /* free blocks avail to non-superuser */ \
+ uint64_t f_files; /* total file nodes in file system */ \
+ uint64_t f_ffree; /* free file nodes in fs */ \
+ fsid_t f_fsid; /* file system id */ \
+ uid_t f_owner; /* user that mounted the filesystem */ \
+ uint32_t f_type; /* type of filesystem */ \
+ uint32_t f_flags; /* copy of mount exported flags */ \
+ uint32_t f_fssubtype; /* fs sub-type (flavor) */ \
+ char f_fstypename[MFSTYPENAMELEN]; /* fs type name */ \
+ char f_mntonname[MAXPATHLEN]; /* directory on which mounted */ \
+ char f_mntfromname[MAXPATHLEN]; /* mounted filesystem */ \
+ uint32_t f_flags_ext; /* extended flags */ \
+ uint32_t f_reserved[7]; /* For future use */ \
+}
+
+#if !__DARWIN_ONLY_64_BIT_INO_T
+
+struct statfs64 __DARWIN_STRUCT_STATFS64;
+
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+
+#if __DARWIN_64_BIT_INO_T
+
+struct statfs __DARWIN_STRUCT_STATFS64;
+
+#else /* !__DARWIN_64_BIT_INO_T */
+
+/*
+ * LP64 - WARNING - must be kept in sync with struct user_statfs in mount_internal.h.
+ */
+struct statfs {
+ short f_otype; /* TEMPORARY SHADOW COPY OF f_type */
+ short f_oflags; /* TEMPORARY SHADOW COPY OF f_flags */
+ long f_bsize; /* fundamental file system block size */
+ long f_iosize; /* optimal transfer block size */
+ long f_blocks; /* total data blocks in file system */
+ long f_bfree; /* free blocks in fs */
+ long f_bavail; /* free blocks avail to non-superuser */
+ long f_files; /* total file nodes in file system */
+ long f_ffree; /* free file nodes in fs */
+ fsid_t f_fsid; /* file system id */
+ uid_t f_owner; /* user that mounted the filesystem */
+ short f_reserved1; /* spare for later */
+ short f_type; /* type of filesystem */
+ long f_flags; /* copy of mount exported flags */
+ long f_reserved2[2]; /* reserved for future use */
+ char f_fstypename[MFSNAMELEN]; /* fs type name */
+ char f_mntonname[MNAMELEN]; /* directory on which mounted */
+ char f_mntfromname[MNAMELEN];/* mounted filesystem */
+ char f_reserved3; /* For alignment */
+ long f_reserved4[4]; /* For future use */
+};
+
+#endif /* __DARWIN_64_BIT_INO_T */
+
+#pragma pack(4)
+
+struct vfsstatfs {
+ uint32_t f_bsize; /* fundamental file system block size */
+ size_t f_iosize; /* optimal transfer block size */
+ uint64_t f_blocks; /* total data blocks in file system */
+ uint64_t f_bfree; /* free blocks in fs */
+ uint64_t f_bavail; /* free blocks avail to non-superuser */
+ uint64_t f_bused; /* free blocks avail to non-superuser */
+ uint64_t f_files; /* total file nodes in file system */
+ uint64_t f_ffree; /* free file nodes in fs */
+ fsid_t f_fsid; /* file system id */
+ uid_t f_owner; /* user that mounted the filesystem */
+ uint64_t f_flags; /* copy of mount exported flags */
+ char f_fstypename[MFSTYPENAMELEN];/* fs type name inclus */
+ char f_mntonname[MAXPATHLEN];/* directory on which mounted */
+ char f_mntfromname[MAXPATHLEN];/* mounted filesystem */
+ uint32_t f_fssubtype; /* fs sub-type (flavor) */
+ void *f_reserved[2]; /* For future use == 0 */
+};
+
+#pragma pack()
+
+
+/*
+ * User specifiable flags.
+ *
+ * Unmount uses MNT_FORCE flag.
+ */
+#define MNT_RDONLY 0x00000001 /* read only filesystem */
+#define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */
+#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */
+#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */
+#define MNT_NODEV 0x00000010 /* don't interpret special files */
+#define MNT_UNION 0x00000020 /* union with underlying filesystem */
+#define MNT_ASYNC 0x00000040 /* file system written asynchronously */
+#define MNT_CPROTECT 0x00000080 /* file system supports content protection */
+
+/*
+ * NFS export related mount flags.
+ */
+#define MNT_EXPORTED 0x00000100 /* file system is exported */
+
+/*
+ * Denotes storage which can be removed from the system by the user.
+ */
+
+#define MNT_REMOVABLE 0x00000200
+
+/*
+ * MAC labeled / "quarantined" flag
+ */
+#define MNT_QUARANTINE 0x00000400 /* file system is quarantined */
+
+/*
+ * Flags set by internal operations.
+ */
+#define MNT_LOCAL 0x00001000 /* filesystem is stored locally */
+#define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */
+#define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */
+#define MNT_DOVOLFS 0x00008000 /* FS supports volfs (deprecated flag in Mac OS X 10.5) */
+
+
+#define MNT_DONTBROWSE 0x00100000 /* file system is not appropriate path to user data */
+#define MNT_IGNORE_OWNERSHIP 0x00200000 /* VFS will ignore ownership information on filesystem objects */
+#define MNT_AUTOMOUNTED 0x00400000 /* filesystem was mounted by automounter */
+#define MNT_JOURNALED 0x00800000 /* filesystem is journaled */
+#define MNT_NOUSERXATTR 0x01000000 /* Don't allow user extended attributes */
+#define MNT_DEFWRITE 0x02000000 /* filesystem should defer writes */
+#define MNT_MULTILABEL 0x04000000 /* MAC support for individual labels */
+#define MNT_NOATIME 0x10000000 /* disable update of file access time */
+#define MNT_SNAPSHOT 0x40000000 /* The mount is a snapshot */
+#define MNT_STRICTATIME 0x80000000 /* enable strict update of file access time */
+
+/* backwards compatibility only */
+#define MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP
+
+
+/*
+ * XXX I think that this could now become (~(MNT_CMDFLAGS))
+ * but the 'mount' program may need changing to handle this.
+ */
+#define MNT_VISFLAGMASK (MNT_RDONLY | MNT_SYNCHRONOUS | MNT_NOEXEC | \
+ MNT_NOSUID | MNT_NODEV | MNT_UNION | \
+ MNT_ASYNC | MNT_EXPORTED | MNT_QUARANTINE | \
+ MNT_LOCAL | MNT_QUOTA | MNT_REMOVABLE | \
+ MNT_ROOTFS | MNT_DOVOLFS | MNT_DONTBROWSE | \
+ MNT_IGNORE_OWNERSHIP | MNT_AUTOMOUNTED | MNT_JOURNALED | \
+ MNT_NOUSERXATTR | MNT_DEFWRITE | MNT_MULTILABEL | \
+ MNT_NOATIME | MNT_STRICTATIME | MNT_SNAPSHOT | MNT_CPROTECT)
+/*
+ * External filesystem command modifier flags.
+ * Unmount can use the MNT_FORCE flag.
+ * XXX These are not STATES and really should be somewhere else.
+ * External filesystem control flags.
+ */
+#define MNT_UPDATE 0x00010000 /* not a real mount, just an update */
+#define MNT_NOBLOCK 0x00020000 /* don't block unmount if not responding */
+#define MNT_RELOAD 0x00040000 /* reload filesystem data */
+#define MNT_FORCE 0x00080000 /* force unmount or readonly change */
+#define MNT_CMDFLAGS (MNT_UPDATE|MNT_NOBLOCK|MNT_RELOAD|MNT_FORCE)
+
+
+
+/*
+ * Sysctl CTL_VFS definitions.
+ *
+ * Second level identifier specifies which filesystem. Second level
+ * identifier VFS_GENERIC returns information about all filesystems.
+ */
+#define VFS_GENERIC 0 /* generic filesystem information */
+#define VFS_NUMMNTOPS 1 /* int: total num of vfs mount/unmount operations */
+/*
+ * Third level identifiers for VFS_GENERIC are given below; third
+ * level identifiers for specific filesystems are given in their
+ * mount specific header files.
+ */
+#define VFS_MAXTYPENUM 1 /* int: highest defined filesystem type */
+#define VFS_CONF 2 /* struct: vfsconf for filesystem given
+ * as next argument */
+
+/*
+ * Flags for various system call interfaces.
+ *
+ * waitfor flags to vfs_sync() and getfsstat()
+ */
+#define MNT_WAIT 1 /* synchronized I/O file integrity completion */
+#define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */
+#define MNT_DWAIT 4 /* synchronized I/O data integrity completion */
+
+
+#if !defined(KERNEL) && !defined(_KERN_SYS_KERNELTYPES_H_) /* also defined in kernel_types.h */
+struct mount;
+typedef struct mount * mount_t;
+struct vnode;
+typedef struct vnode * vnode_t;
+#endif
+
+/* Reserved fields preserve binary compatibility */
+struct vfsconf {
+ uint32_t vfc_reserved1; /* opaque */
+ char vfc_name[MFSNAMELEN]; /* filesystem type name */
+ int vfc_typenum; /* historic filesystem type number */
+ int vfc_refcount; /* number mounted of this type */
+ int vfc_flags; /* permanent flags */
+ uint32_t vfc_reserved2; /* opaque */
+ uint32_t vfc_reserved3; /* opaque */
+};
+
+struct vfsidctl {
+ int vc_vers; /* should be VFSIDCTL_VERS1 (below) */
+ fsid_t vc_fsid; /* fsid to operate on. */
+ void *vc_ptr; /* pointer to data structure. */
+ size_t vc_len; /* sizeof said structure. */
+ u_int32_t vc_spare[12]; /* spare (must be zero). */
+};
+
+
+/* vfsidctl API version. */
+#define VFS_CTL_VERS1 0x01
+
+
+/*
+ * New style VFS sysctls, do not reuse/conflict with the namespace for
+ * private sysctls.
+ */
+#define VFS_CTL_STATFS 0x00010001 /* statfs */
+#define VFS_CTL_UMOUNT 0x00010002 /* unmount */
+#define VFS_CTL_QUERY 0x00010003 /* anything wrong? (vfsquery) */
+#define VFS_CTL_NEWADDR 0x00010004 /* reconnect to new address */
+#define VFS_CTL_TIMEO 0x00010005 /* set timeout for vfs notification */
+#define VFS_CTL_NOLOCKS 0x00010006 /* disable file locking */
+#define VFS_CTL_SADDR 0x00010007 /* get server address */
+#define VFS_CTL_DISC 0x00010008 /* server disconnected */
+#define VFS_CTL_SERVERINFO 0x00010009 /* information about fs server */
+#define VFS_CTL_NSTATUS 0x0001000A /* netfs mount status */
+
+struct vfsquery {
+ u_int32_t vq_flags;
+ u_int32_t vq_spare[31];
+};
+
+struct vfs_server {
+ int32_t vs_minutes; /* minutes until server goes down. */
+ u_int8_t vs_server_name[MAXHOSTNAMELEN * 3]; /* UTF8 server name to display (null terminated) */
+};
+
+/*
+ * NetFS mount status - returned by VFS_CTL_NSTATUS
+ */
+struct netfs_status {
+ u_int32_t ns_status; // Current status of mount (vfsquery flags)
+ char ns_mountopts[512]; // Significant mount options
+ uint32_t ns_waittime; // Time waiting for reply (sec)
+ uint32_t ns_threadcount; // Number of threads blocked on network calls
+ uint64_t ns_threadids[0]; // Thread IDs of those blocked threads
+};
+
+/* vfsquery flags */
+#define VQ_NOTRESP 0x0001 /* server down */
+#define VQ_NEEDAUTH 0x0002 /* server bad auth */
+#define VQ_LOWDISK 0x0004 /* we're low on space */
+#define VQ_MOUNT 0x0008 /* new filesystem arrived */
+#define VQ_UNMOUNT 0x0010 /* filesystem has left */
+#define VQ_DEAD 0x0020 /* filesystem is dead, needs force unmount */
+#define VQ_ASSIST 0x0040 /* filesystem needs assistance from external program */
+#define VQ_NOTRESPLOCK 0x0080 /* server lockd down */
+#define VQ_UPDATE 0x0100 /* filesystem information has changed */
+#define VQ_VERYLOWDISK 0x0200 /* file system has *very* little disk space left */
+#define VQ_SYNCEVENT 0x0400 /* a sync just happened (not set by kernel starting Mac OS X 10.9) */
+#define VQ_SERVEREVENT 0x0800 /* server issued notification/warning */
+#define VQ_QUOTA 0x1000 /* a user quota has been hit */
+#define VQ_NEARLOWDISK 0x2000 /* Above lowdisk and below desired disk space */
+#define VQ_DESIRED_DISK 0x4000 /* the desired disk space */
+#define VQ_FREE_SPACE_CHANGE 0x8000 /* free disk space has significantly changed */
+#define VQ_FLAG10000 0x10000 /* placeholder */
+
+
+
+
+/*
+ * Generic file handle
+ */
+#define NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE
+#define NFSV4_MAX_FH_SIZE 128
+#define NFSV3_MAX_FH_SIZE 64
+#define NFSV2_MAX_FH_SIZE 32
+struct fhandle {
+ unsigned int fh_len; /* length of file handle */
+ unsigned char fh_data[NFS_MAX_FH_SIZE]; /* file handle value */
+};
+typedef struct fhandle fhandle_t;
+
+
+__BEGIN_DECLS
+int fhopen(const struct fhandle *, int);
+int fstatfs(int, struct statfs *) __DARWIN_INODE64(fstatfs);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int fstatfs64(int, struct statfs64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int getfh(const char *, fhandle_t *);
+int getfsstat(struct statfs *, int, int) __DARWIN_INODE64(getfsstat);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int getfsstat64(struct statfs64 *, int, int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int getmntinfo(struct statfs **, int) __DARWIN_INODE64(getmntinfo);
+int getmntinfo_r_np(struct statfs **, int) __DARWIN_INODE64(getmntinfo_r_np)
+__OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+__TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int getmntinfo64(struct statfs64 **, int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int mount(const char *, const char *, int, void *);
+int fmount(const char *, int, int, void *) __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0) __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int statfs(const char *, struct statfs *) __DARWIN_INODE64(statfs);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int statfs64(const char *, struct statfs64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int unmount(const char *, int);
+int getvfsbyname(const char *, struct vfsconf *);
+__END_DECLS
+
+#endif /* !_SYS_MOUNT_H_ */
lib/libc/include/x86_64-macos-gnu/crt_externs.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 1999 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) 1995 NeXT Computer, Inc. All Rights Reserved
+ */
+
+/*
+** Prototypes for the functions to get environment information in
+** the world of dynamic libraries. Lifted from .c file of same name.
+** Fri Jun 23 12:56:47 PDT 1995
+** AOF (afreier@next.com)
+*/
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+extern char ***_NSGetArgv(void);
+extern int *_NSGetArgc(void);
+extern char ***_NSGetEnviron(void);
+extern char **_NSGetProgname(void);
+#ifdef __LP64__
+extern struct mach_header_64 *
+#else /* !__LP64__ */
+extern struct mach_header *
+#endif /* __LP64__ */
+ _NSGetMachExecuteHeader(void);
+__END_DECLS
lib/libc/include/x86_64-macos-gnu/execinfo.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2007 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 _EXECINFO_H_
+#define _EXECINFO_H_ 1
+
+#include <sys/cdefs.h>
+#include <Availability.h>
+#include <os/base.h>
+#include <os/availability.h>
+#include <stdint.h>
+#include <uuid/uuid.h>
+
+__BEGIN_DECLS
+
+int backtrace(void**,int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+
+API_AVAILABLE(macosx(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+OS_EXPORT
+int backtrace_from_fp(void *startfp, void **array, int size);
+
+char** backtrace_symbols(void* const*,int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+void backtrace_symbols_fd(void* const*,int,int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+
+struct image_offset {
+ /*
+ * The UUID of the image.
+ */
+ uuid_t uuid;
+
+ /*
+ * The offset is relative to the __TEXT section of the image.
+ */
+ uint32_t offset;
+};
+
+API_AVAILABLE(macosx(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+OS_EXPORT
+void backtrace_image_offsets(void* const* array,
+ struct image_offset *image_offsets, int size);
+
+__END_DECLS
+
+#endif /* !_EXECINFO_H_ */
lib/libc/include/x86_64-macos-gnu/sysexits.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 1987, 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.
+ *
+ * @(#)sysexits.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSEXITS_H_
+#define _SYSEXITS_H_
+
+/*
+ * SYSEXITS.H -- Exit status codes for system programs.
+ *
+ * This include file attempts to categorize possible error
+ * exit statuses for system programs, notably delivermail
+ * and the Berkeley network.
+ *
+ * Error numbers begin at EX__BASE to reduce the possibility of
+ * clashing with other exit statuses that random programs may
+ * already return. The meaning of the codes is approximately
+ * as follows:
+ *
+ * EX_USAGE -- The command was used incorrectly, e.g., with
+ * the wrong number of arguments, a bad flag, a bad
+ * syntax in a parameter, or whatever.
+ * EX_DATAERR -- The input data was incorrect in some way.
+ * This should only be used for user's data & not
+ * system files.
+ * EX_NOINPUT -- An input file (not a system file) did not
+ * exist or was not readable. This could also include
+ * errors like "No message" to a mailer (if it cared
+ * to catch it).
+ * EX_NOUSER -- The user specified did not exist. This might
+ * be used for mail addresses or remote logins.
+ * EX_NOHOST -- The host specified did not exist. This is used
+ * in mail addresses or network requests.
+ * EX_UNAVAILABLE -- A service is unavailable. This can occur
+ * if a support program or file does not exist. This
+ * can also be used as a catchall message when something
+ * you wanted to do doesn't work, but you don't know
+ * why.
+ * EX_SOFTWARE -- An internal software error has been detected.
+ * This should be limited to non-operating system related
+ * errors as possible.
+ * EX_OSERR -- An operating system error has been detected.
+ * This is intended to be used for such things as "cannot
+ * fork", "cannot create pipe", or the like. It includes
+ * things like getuid returning a user that does not
+ * exist in the passwd file.
+ * EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp,
+ * etc.) does not exist, cannot be opened, or has some
+ * sort of error (e.g., syntax error).
+ * EX_CANTCREAT -- A (user specified) output file cannot be
+ * created.
+ * EX_IOERR -- An error occurred while doing I/O on some file.
+ * EX_TEMPFAIL -- temporary failure, indicating something that
+ * is not really an error. In sendmail, this means
+ * that a mailer (e.g.) could not create a connection,
+ * and the request should be reattempted later.
+ * EX_PROTOCOL -- the remote system returned something that
+ * was "not possible" during a protocol exchange.
+ * EX_NOPERM -- You did not have sufficient permission to
+ * perform the operation. This is not intended for
+ * file system problems, which should use NOINPUT or
+ * CANTCREAT, but rather for higher level permissions.
+ */
+
+#define EX_OK 0 /* successful termination */
+
+#define EX__BASE 64 /* base value for error messages */
+
+#define EX_USAGE 64 /* command line usage error */
+#define EX_DATAERR 65 /* data format error */
+#define EX_NOINPUT 66 /* cannot open input */
+#define EX_NOUSER 67 /* addressee unknown */
+#define EX_NOHOST 68 /* host name unknown */
+#define EX_UNAVAILABLE 69 /* service unavailable */
+#define EX_SOFTWARE 70 /* internal software error */
+#define EX_OSERR 71 /* system error (e.g., can't fork) */
+#define EX_OSFILE 72 /* critical OS file missing */
+#define EX_CANTCREAT 73 /* can't create (user) output file */
+#define EX_IOERR 74 /* input/output error */
+#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
+#define EX_PROTOCOL 76 /* remote error in protocol */
+#define EX_NOPERM 77 /* permission denied */
+#define EX_CONFIG 78 /* configuration error */
+
+#define EX__MAX 78 /* maximum listed value */
+
+#endif /* !_SYSEXITS_H_ */