+
+#ifdef MACH_KERNEL_PRIVATE
+/* The options that the kernel honors when passed from user space */
+#define MACH_SEND_USER (MACH_SEND_MSG | \
+ MACH_SEND_TIMEOUT | MACH_SEND_NOTIFY | \
+ MACH_SEND_TRAILER | MACH_SEND_NOIMPORTANCE )
+
+#define MACH_RCV_USER (MACH_RCV_MSG | \
+ MACH_RCV_TIMEOUT | MACH_RCV_OVERWRITE | \
+ MACH_RCV_LARGE | MACH_RCV_LARGE_IDENTITY | \
+ MACH_RCV_VOUCHER | MACH_RCV_TRAILER_MASK)
+
+#define MACH_MSG_OPTION_USER (MACH_SEND_USER | MACH_RCV_USER)
+
+/* The options implemented by the library interface to mach_msg et. al. */
+#define MACH_MSG_OPTION_LIB (MACH_SEND_INTERRUPT | MACH_RCV_INTERRUPT)
+
+/* Default options to use when sending from the kernel */
+#if 11938665
+ /*
+ * Until we are sure of its effects, we are disabling
+ * importance donation from the kernel-side of user
+ * threads in importance-donating tasks.
+ */
+#define MACH_SEND_KERNEL_DEFAULT (MACH_SEND_MSG | \
+ MACH_SEND_ALWAYS | MACH_SEND_NOIMPORTANCE)
+#else
+#define MACH_SEND_KERNEL_DEFAULT (MACH_SEND_MSG | MACH_SEND_ALWAYS)
+#endif
+
+#endif /* MACH_KERNEL_PRIVATE */
+
+/*
+ * XXXMAC: note that in the case of MACH_RCV_TRAILER_LABELS,
+ * we just fall through to mach_msg_max_trailer_t.
+ * This is correct behavior since mach_msg_max_trailer_t is defined as
+ * mac_msg_mac_trailer_t which is used for the LABELS trailer.
+ * It also makes things work properly if MACH_RCV_TRAILER_LABELS is ORed
+ * with one of the other options.
+ */
+
+#define REQUESTED_TRAILER_SIZE_NATIVE(y) \