#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>
*/
};
-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))
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) {
/*
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;
}
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;
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;