All pastes #915403 Raw Edit

Miscellany

public text v1 · immutable
#915403 ·published 2008-02-23 19:47 UTC
rendered paste body
/*
 * Allocate 'size' bytes of memory in host kernel address space (size
 * is a multiple of 4 KB) and return the address or NULL if error.
 * The allocated memory must be marked as executable by the host kernel
 * and must be page aligned. On i386 with PAE (but not on x86_64),
 * it must be allocated in the first 4 GB of physical memory.
 */
void * CDECL
kqemu_vmalloc(unsigned int size)
{
        caddr_t kaddr;
        int r;

        r = i_ddi_mem_alloc(NULL, &kqemu_mem_attr, P2ROUNDUP(size, X86_PGSZ),
            1, 0, NULL, &kaddr, NULL, NULL);
        if (r != DDI_SUCCESS) {
                kqemu_log("kqemu_vmalloc: alloc failed");
                return (NULL);
        }
        bzero(kaddr, P2ROUNDUP(size, X86_PGSZ));
        if (kaddr)
                addtag(kaddr, size);
        return (kaddr);
}