]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/btlog.c
xnu-7195.60.75.tar.gz
[apple/xnu.git] / osfmk / kern / btlog.c
index 584be02cf5532d1a6115c32522761a03cead0b64..718f5b044d7ac136ec0a6f4b4288be1ea99ef870 100644 (file)
@@ -29,6 +29,7 @@
 #include <stddef.h>
 #include <kern/btlog.h>
 #include <kern/assert.h>
+#include <kern/startup.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_map.h>
 #include <vm/pmap.h>
@@ -131,9 +132,6 @@ struct btlog {
                                                            */
 };
 
-extern boolean_t vm_kernel_ready;
-extern boolean_t kmem_alloc_ready;
-
 #define lookup_btrecord(btlog, index) \
        ((btlog_record_t *)(btlog->btrecords + index * btlog->btrecord_size))
 
@@ -157,7 +155,6 @@ lookup_btrecord_byhash(btlog_t *btlog, uint32_t md5_hash, void *bt[], size_t btc
        recindex = btlog->head;
        record = lookup_btrecord(btlog, recindex);
        while (recindex != BTLOG_RECORDINDEX_NONE) {
-               assert(record->bthash);
                assert(!TAILQ_EMPTY(&record->element_record_queue));
                if (record->bthash == md5_hash) {
                        /*
@@ -240,7 +237,8 @@ btlog_create(size_t numrecords,
        size_t btrecord_size = 0;
        uintptr_t free_elem = 0, next_free_elem = 0;
 
-       if (vm_kernel_ready && !kmem_alloc_ready) {
+       if (startup_phase >= STARTUP_SUB_VM_KERNEL &&
+           startup_phase < STARTUP_SUB_KMEM_ALLOC) {
                return NULL;
        }
 
@@ -281,7 +279,7 @@ btlog_create(size_t numrecords,
        numrecords = MIN(BTLOG_MAX_RECORDS,
            (buffersize_needed - sizeof(btlog_t)) / btrecord_size);
 
-       if (kmem_alloc_ready) {
+       if (__probable(startup_phase >= STARTUP_SUB_KMEM_ALLOC)) {
                ret = kmem_alloc(kernel_map, &buffer, buffersize_needed, VM_KERN_MEMORY_DIAG);
                if (ret != KERN_SUCCESS) {
                        return NULL;
@@ -677,8 +675,6 @@ retry:
        hashidx = calculate_hashidx_for_element((uintptr_t)element, btlog);
        hashelem = btlog_get_elem_from_freelist(btlog);
 
-       assert(record->bthash);
-
        hashelem->elem = ~((uintptr_t)element);
        hashelem->operation = record->operation;
        hashelem->recindex = recindex;