summaryrefslogtreecommitdiffstats
path: root/sys/compat/x86bios
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2010-06-23 17:20:51 +0000
committerjkim <jkim@FreeBSD.org>2010-06-23 17:20:51 +0000
commitf68d88b142dd6bd53532ee382a3c891c7df37224 (patch)
treebc66c9bd81bdcfa6beece0e966880af460899e22 /sys/compat/x86bios
parent91e46c89d10a80ec1efcf2457a87088b2a3d8da3 (diff)
downloadFreeBSD-src-f68d88b142dd6bd53532ee382a3c891c7df37224.zip
FreeBSD-src-f68d88b142dd6bd53532ee382a3c891c7df37224.tar.gz
Let x86bios_alloc() pass contigmalloc(9) flags. Use it to set M_WAITOK
from VESA BIOS initialization. All other malloc(9) uses in the function is blocking any way.
Diffstat (limited to 'sys/compat/x86bios')
-rw-r--r--sys/compat/x86bios/x86bios.c4
-rw-r--r--sys/compat/x86bios/x86bios.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/sys/compat/x86bios/x86bios.c b/sys/compat/x86bios/x86bios.c
index cb8b85e..22f1b93 100644
--- a/sys/compat/x86bios/x86bios.c
+++ b/sys/compat/x86bios/x86bios.c
@@ -353,14 +353,14 @@ x86bios_emu_get_intr(struct x86emu *emu, int intno)
}
void *
-x86bios_alloc(uint32_t *offset, size_t size)
+x86bios_alloc(uint32_t *offset, size_t size, int flags)
{
void *vaddr;
if (offset == NULL || size == 0)
return (NULL);
- vaddr = contigmalloc(size, M_DEVBUF, M_NOWAIT, X86BIOS_RAM_BASE,
+ vaddr = contigmalloc(size, M_DEVBUF, flags, X86BIOS_RAM_BASE,
x86bios_rom_phys, X86BIOS_PAGE_SIZE, 0);
if (vaddr != NULL) {
*offset = vtophys(vaddr);
diff --git a/sys/compat/x86bios/x86bios.h b/sys/compat/x86bios/x86bios.h
index 4ed15e0..682c6f5 100644
--- a/sys/compat/x86bios/x86bios.h
+++ b/sys/compat/x86bios/x86bios.h
@@ -142,7 +142,7 @@ typedef struct x86regs x86regs_t;
#define X86BIOS_PHYSTOOFF(x) ((x) & 0x000f)
__BEGIN_DECLS
-void *x86bios_alloc(uint32_t *offset, size_t size);
+void *x86bios_alloc(uint32_t *offset, size_t size, int flags);
void x86bios_call(struct x86regs *regs, uint16_t seg, uint16_t off);
void x86bios_free(void *addr, size_t size);
uint32_t x86bios_get_intr(int intno);
OpenPOWER on IntegriCloud