#ifndef __GLOBALS_H__
#define __GLOBALS_H__
#include <CoreFoundation/CoreFoundation.h>
#include <CoreFoundation/CFUserNotification.h>
#include <IOKit/IOKitLib.h>
#include <libc.h>
#include <IOKit/kext/KXKextManager.h>
#include "request.h"
#include "PTLock.h"
#define kKXDiskArbMaxRetries 10
void kextd_handle_signal(int);
bool is_bootroot_active(void);
#define KEXTCACHE_DELAY_STD (60)
#define KEXTCACHE_DELAY_FIRST_BOOT (60 * 5)
extern Boolean g_first_boot;
extern Boolean g_safe_boot_mode;
extern char * g_kernel_file;
extern char * _kload_optimized_kern_sym_data;
extern uint32_t _kload_optimized_kern_sym_length;
extern char * g_patch_dir;
extern char * g_symbol_dir;
extern Boolean gOverwrite_symbols;
extern Boolean gStaleBootNotificationNeeded;
extern KXKextManagerRef gKextManager;
extern CFRunLoopRef gMainRunLoop;
extern CFRunLoopSourceRef gKernelRequestRunLoopSource;
extern CFRunLoopSourceRef gRescanRunLoopSource;
extern CFRunLoopSourceRef gCurrentNotificationRunLoopSource;
extern PTLockRef gKernelRequestQueueLock;
extern PTLockRef gKernSymfileDataLock;
extern queue_head_t g_request_queue;
extern CFMutableDictionaryRef gKextloadedKextPaths;
#ifndef NO_CFUserNotification
extern CFRunLoopSourceRef gNotificationQueueRunLoopSource;
extern CFMutableArrayRef gPendedNonsecureKextPaths; extern CFMutableDictionaryRef gNotifiedNonsecureKextPaths;
extern CFUserNotificationRef gCurrentNotification;
#endif
void kextd_raise_notification(CFStringRef alertHeader, CFArrayRef messageArray);
extern uid_t logged_in_uid;
extern uid_t gClientUID;
extern CFMachPortRef _kextload_lock;
#endif __GLOBALS_H__