X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..9d749ea394c01276fa19e397e70f46858e849c76:/libkern/OSKextLib.cpp?ds=sidebyside diff --git a/libkern/OSKextLib.cpp b/libkern/OSKextLib.cpp index 9dbc988f8..5b9ee7b4a 100644 --- a/libkern/OSKextLib.cpp +++ b/libkern/OSKextLib.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008-2012 Apple Inc. All rights reserved. + * Copyright (c) 2008-2016 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -48,6 +48,7 @@ kern_return_t OSKextLoadKextWithIdentifier(const char * bundle_id) return OSKext::loadKextWithIdentifier(bundle_id); } +uint32_t OSKextGetLoadTagForIdentifier(const char * kextIdentifier); /********************************************************************* *********************************************************************/ uint32_t @@ -353,8 +354,8 @@ finish: /********************************************************************* * Gets the vm_map for the current kext *********************************************************************/ -extern vm_offset_t segPRELINKB; -extern unsigned long segSizePRELINK; +extern vm_offset_t segPRELINKTEXTB; +extern unsigned long segSizePRELINKTEXT; extern int kth_started; extern vm_map_t g_kext_map; @@ -364,8 +365,8 @@ kext_get_vm_map(kmod_info_t *info) vm_map_t kext_map = NULL; /* Set the vm map */ - if ((info->address >= segPRELINKB) && - (info->address < (segPRELINKB + segSizePRELINK))) + if ((info->address >= segPRELINKTEXTB) && + (info->address < (segPRELINKTEXTB + segSizePRELINKTEXT))) { kext_map = kernel_map; } else { @@ -438,24 +439,34 @@ void kext_dump_panic_lists(int (*printf_func)(const char * fmt, ...)) void kmod_panic_dump(vm_offset_t * addr, unsigned int cnt) { - extern int kdb_printf(const char *format, ...) __printflike(1,2); + extern int paniclog_append_noflush(const char *format, ...) __printflike(1,2); + + OSKext::printKextsInBacktrace(addr, cnt, &paniclog_append_noflush, 0); - OSKext::printKextsInBacktrace(addr, cnt, &kdb_printf, - /* takeLock? */ false); return; } /********************************************************************/ -void kmod_dump_log(vm_offset_t *addr, unsigned int cnt); +void kmod_dump_log(vm_offset_t *addr, unsigned int cnt, boolean_t doUnslide); void kmod_dump_log( vm_offset_t * addr, - unsigned int cnt) + unsigned int cnt, + boolean_t doUnslide) { - OSKext::printKextsInBacktrace(addr, cnt, &printf, /* lock? */ true); + uint32_t flags = OSKext::kPrintKextsLock; + if (doUnslide) flags |= OSKext::kPrintKextsUnslide; + OSKext::printKextsInBacktrace(addr, cnt, &printf, flags); } +void * +OSKextKextForAddress(const void *addr) +{ + return OSKext::kextForAddress(addr); +} + + /********************************************************************* * Compatibility implementation for kmod_get_info() host_priv routine. * Only supported on old 32-bit architectures.