1#ifndef __LOAD_H__ 2#define __LOAD_H__ 3 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#include "dgraph.h" 9 10#ifdef KERNEL 11#else 12#include "KXKext.h" 13#endif /* KERNEL */ 14 15#ifndef KERNEL 16typedef KXKextManagerError kload_error; 17enum { 18 kload_error_none = kKXKextManagerErrorNone, 19 kload_error_unspecified = kKXKextManagerErrorUnspecified, 20 kload_error_invalid_argument = kKXKextManagerErrorInvalidArgument, 21 kload_error_no_memory = kKXKextManagerErrorNoMemory, 22 23 kload_error_user_abort = kKXKextManagerErrorUserAbort, 24 kload_error_kernel_error = kKXKextManagerErrorKernelError, 25 kload_error_kernel_permission = kKXKextManagerErrorKernelPermission, 26 27 kload_error_executable_bad = kKXKextManagerErrorLoadExecutableBad, 28 kload_error_already_loaded = kKXKextManagerErrorAlreadyLoaded, 29 kload_error_loaded_version_differs = kKXKextManagerErrorLoadedVersionDiffers, 30 kload_error_dependency_loaded_version_differs = kKXKextManagerErrorDependencyLoadedVersionDiffers, 31 kload_error_link_load = kKXKextManagerErrorLinkLoad 32}; 33 34typedef KXKextManagerLogLevel kload_log_level; 35enum { 36 kload_log_level_silent = kKXKextManagerLogLevelSilent, 37 kload_log_level_errors_only = kKXKextManagerLogLevelErrorsOnly, 38 kload_log_level_default = kKXKextManagerLogLevelDefault, 39 kload_log_level_basic = kKXKextManagerLogLevelBasic, 40 kload_log_level_load_basic = kKXKextManagerLogLevelLoadBasic, 41 kload_log_level_details = kKXKextManagerLogLevelDetails, 42 kload_log_level_kexts = kKXKextManagerLogLevelKexts, 43 kload_log_level_kext_details = kKXKextManagerLogLevelKextDetails, 44 kload_log_level_load_details = kKXKextManagerLogLevelLoadDetails 45}; 46#else 47 48typedef enum { 49 kload_error_none, 50 kload_error_unspecified, 51 kload_error_invalid_argument, 52 kload_error_no_memory, 53 54 kload_error_user_abort, 55 kload_error_kernel_error, 56 kload_error_kernel_permission, 57 58 kload_error_executable_bad, 59 kload_error_already_loaded, 60 kload_error_loaded_version_differs, 61 kload_error_dependency_loaded_version_differs, 62 kload_error_link_load 63} kload_error; 64 65typedef enum { 66 kload_log_level_silent = -2, // no notices, no errors 67 kload_log_level_errors_only = -1, 68 kload_log_level_default = 0, 69 kload_log_level_basic = 1, 70 kload_log_level_load_basic = 2, 71 kload_log_level_details = 3, 72 kload_log_level_kexts = 4, 73 kload_log_level_kext_details = 5, 74 kload_log_level_load_details = 6 75} kload_log_level; 76 77#endif /* KERNEL */ 78 79 80kload_error kload_load_dgraph(dgraph_t * dgraph 81#ifndef KERNEL 82 , 83 const char * kernel_file, 84 const char * patch_file, const char * patch_dir, 85 const char * symbol_file, const char * symbol_dir, 86 int do_load, int do_start_kmod, int do_prelink, 87 int interactive_level, 88 int ask_overwrite_symbols, int overwrite_symbols 89#endif /* not KERNEL */ 90 ); 91 92#ifndef KERNEL 93kload_error kload_load_with_arglist( 94 int argc, char **argv, 95 const char * kernel_file, 96 const char * patch_file, const char * patch_dir, 97 const char * symbol_file, const char * symbol_dir, 98 int do_load, int do_start_kmod, 99 int interactive_level, 100 int ask_overwrite_symbols, int overwrite_symbols); 101#endif /* not KERNEL */ 102 103kload_error kload_map_dgraph(dgraph_t * dgraph 104#ifndef KERNEL 105 , 106 const char * kernel_file 107#endif /* not KERNEL */ 108 ); 109kload_error kload_map_entry(dgraph_entry_t * entry); 110 111#ifndef KERNEL 112int kload_file_exists(const char * path); 113kload_error kload_request_load_addresses( 114 dgraph_t * dgraph, 115 const char * kernel_file); 116kload_error kload_set_load_addresses_from_args( 117 dgraph_t * dgraph, 118 const char * kernel_file, 119 char ** addresses); 120#endif /* not KERNEL */ 121 122kload_error kload_set_load_addresses_from_kernel( 123 dgraph_t * dgraph 124#ifndef KERNEL 125 , 126 const char * kernel_file, 127 int do_load 128#endif /* not KERNEL */ 129 ); 130 131void kload_set_log_level(kload_log_level level); 132#ifndef KERNEL 133void kload_set_log_function( 134 void (*)(const char * format, ...)); 135void kload_set_error_log_function( 136 void (*)(const char * format, ...)); 137void kload_set_user_approve_function( 138 int (*)(int default_answer, const char * format, ...)); 139void kload_set_user_veto_function( 140 int (*)(int default_answer, const char * format, ...)); 141void kload_set_user_input_function( 142 const char * (*)(const char * format, ...)); 143 144void kload_log_message(const char * format, ...); 145void kload_log_error(const char * format, ...); 146#define KNL "" 147 148#else 149#define kload_log_message IOLog 150#define kload_log_error IOLog 151#define KNL "\n" 152 153#endif /* not KERNEL */ 154 155 156 157#endif /* __LOAD_H__ */ 158 159#ifdef __cplusplus 160} 161#endif 162 163