#endif
#include <mach/mach_types.h>
+#include <device/device_types.h>
#include <IOKit/IOReturn.h>
enum {
kIOServiceTerminatedNotificationType = 102,
kIOAsyncCompletionNotificationType = 150,
kIOServiceMessageNotificationType = 160,
- kLastIOKitNotificationType = 199
+ kLastIOKitNotificationType = 199,
+
+ // reserved bits
+ kIOKitNoticationTypeMask = 0x00000FFF,
+ kIOKitNoticationTypeSizeAdjShift = 30,
+ kIOKitNoticationMsgSizeMask = 3,
};
enum {
kIOInterestCalloutCount
};
+
+
+// --------------
+enum {
+ kOSAsyncRef64Count = 8,
+ kOSAsyncRef64Size = kOSAsyncRef64Count * ((int) sizeof(io_user_reference_t))
+};
+typedef io_user_reference_t OSAsyncReference64[kOSAsyncRef64Count];
+
+struct OSNotificationHeader64 {
+ mach_msg_size_t size; /* content size */
+ natural_t type;
+ OSAsyncReference64 reference;
+
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+ unsigned char content[];
+#else
+ unsigned char content[0];
+#endif
+};
+
+#pragma pack(4)
+struct IOServiceInterestContent64 {
+ natural_t messageType;
+ io_user_reference_t messageArgument[1];
+};
+#pragma pack()
+// --------------
+
+#if !KERNEL_USER32
+
enum {
kOSAsyncRefCount = 8,
kOSAsyncRefSize = 32
typedef natural_t OSAsyncReference[kOSAsyncRefCount];
struct OSNotificationHeader {
- vm_size_t size; /* content size */
+ mach_msg_size_t size; /* content size */
natural_t type;
OSAsyncReference reference;
#endif
};
+#pragma pack(4)
struct IOServiceInterestContent {
natural_t messageType;
void * messageArgument[1];
};
+#pragma pack()
+
+#endif /* KERNEL_USER32 */
struct IOAsyncCompletionContent {
IOReturn result;
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
- void * args[];
+ void * args[] __attribute__ ((packed));
#else
- void * args[0];
+ void * args[0] __attribute__ ((packed));
#endif
};