#ifndef __KEXTD_H_ #define __KEXTD_H_ #include #if defined(__cplusplus) extern "C" { #endif typedef struct __KEXTD * KEXTDRef; typedef enum { kKEXTBootlevelNormal = 0x00, kKEXTBootlevelExempt = 0x01, kKEXTBootlevelRecovery = 0x02, kKEXTBootlevelSingleUser = 0x04, kKEXTBootlevelFlexible = 0x08, kKEXTBootlevelRequired = 0x10, } KEXTBootlevel; typedef enum { kKEXTEventReset, kKEXTEventModuleRequest, kKEXTEventPersonalityRequest, kKEXTEventBundleAuthenticationFailed, } KEXTEvent; typedef struct { CFIndex version; void * (*HelperInitialize)(KEXTDRef kextd); void (*HelperFinalize)(void * context); void (*DaemonDidFinishLaunching)(void * context); void (*DaemonWillTerminate)(void * context); Boolean (*BundleAdd)(KEXTBundleRef bundle, void * context); Boolean (*BundleRemove)(KEXTBundleRef bundle, void * context); void (*EventOccurred)(KEXTEvent event, CFTypeRef data, void * context); Boolean (*ModuleWillLoad)(KEXTModuleRef module, void * context); void (*ModuleWasLoaded)(KEXTModuleRef module, void * context); KEXTReturn (*ModuleLoadError)(KEXTModuleRef module, KEXTReturn error, void * context); } KEXTDHelperCallbacks; KEXTDRef KEXTDCreate(CFArrayRef scanPaths, KEXTReturn * error); void KEXTDFree(KEXTDRef kextd); void KEXTDHangup(KEXTDRef kextd); void KEXTDReset(KEXTDRef kextd); #if TIMERSOURCE KEXTReturn KEXTDStartMain(KEXTDRef kextd, Boolean beVerbose, Boolean safeBoot, Boolean debug, Boolean poll, CFIndex period, KEXTBootlevel bootlevel); #else KEXTReturn KEXTDStartMain(KEXTDRef kextd, Boolean beVerbose, Boolean safeBoot, Boolean debug, KEXTBootlevel bootlevel); #endif void KEXTDScanPaths(KEXTDRef kextd); void KEXTDAddScanPath(KEXTDRef kextd, CFURLRef path); void KEXTDRegisterHelperCallbacks(KEXTDRef kextd, KEXTDHelperCallbacks * callbacks); KEXTReturn KEXTDKernelRequest(KEXTDRef kextd, CFStringRef moduleName); KEXTReturn KEXTDLoadModule(KEXTDRef kextd, CFStringRef moduleName); #if defined(__cplusplus) } /* "C" */ #endif #endif __KEXTD_H_