+/*!
+ @defined KEV_NETWORK_CLASS
+ @discussion Network kernel event class.
+*/
+#define KEV_NETWORK_CLASS 1
+
+/*!
+ @defined KEV_IOKIT_CLASS
+ @discussion IOKit kernel event class.
+*/
+#define KEV_IOKIT_CLASS 2
+
+/*!
+ @defined KEV_IOKIT_CLASS
+ @discussion System kernel event class.
+*/
+#define KEV_SYSTEM_CLASS 3
+
+/*!
+ @defined KEV_APPLESHARE_CLASS
+ @discussion AppleShare kernel event class.
+*/
+#define KEV_APPLESHARE_CLASS 4
+
+/*!
+ @defined KEV_FIREWALL_CLASS
+ @discussion Firewall kernel event class.
+*/
+#define KEV_FIREWALL_CLASS 5
+
+/*!
+ @struct kern_event_msg
+ @discussion This structure is prepended to all kernel events. This structure
+ is used to determine the format of the remainder of the kernel event.
+ This structure will appear on all messages received on a kernel event
+ socket. To post a kernel event, a slightly different structure is used.
+ @field total_size Total size of the kernel event message including the
+ header.
+ @field vendor_code The vendor code indicates which vendor generated the
+ kernel event. This gives every vendor a unique set of classes and
+ subclasses to use. Use the SIOCGKEVVENDOR ioctl to look up vendor codes
+ for vendors other than Apple. Apple uses KEV_VENDOR_APPLE.
+ @field kev_class The class of the kernel event.
+ @field kev_subclass The subclass of the kernel event.
+ @field id Monotonically increasing value.
+ @field event_code The event code.
+ @field event_data Any additional data about this event. Format will depend
+ on the vendor_code, kev_class, kev_subclass, and event_code. The length
+ of the event_data can be determined using total_size -
+ KEV_MSG_HEADER_SIZE.
+*/