#include <lib/kmalloc.h>#include <lib/kprintf.h>#include <ubixos/kpanic.h>#include <ubixos/sched.h>#include <ubixos/spinlock.h>#include <vmm/vmm.h>#include <string.h>#include <assert.h>Include dependency graph for kmalloc.c:

Go to the source code of this file.
Functions | |
| static void * | getEmptyDesc () |
| static int | insertFreeDesc (struct memDescriptor *freeDesc) |
| void | kfree (void *baseAddr) |
| void * | kmalloc (uInt32 len) |
| static void | mergeMemBlocks () |
Variables | |
| static spinLock_t | emptyDescSpinLock = SPIN_LOCK_INITIALIZER |
| static struct memDescriptor * | emptyKernDesc = 0x0 |
| static struct memDescriptor * | freeKernDesc = 0x0 |
| static spinLock_t | mallocSpinLock = SPIN_LOCK_INITIALIZER |
| static struct memDescriptor * | usedKernDesc = 0x0 |
| static void* getEmptyDesc | ( | ) | [static] |
Definition at line 67 of file kmalloc.c.
References emptyDescSpinLock, emptyKernDesc, kpanic(), memset(), memDescriptor::next, memDescriptor::prev, spinLock(), spinUnlock(), vmm_getFreeMallocPage(), and x1.
Referenced by kmalloc().
Here is the call graph for this function:

| static int insertFreeDesc | ( | struct memDescriptor * | freeDesc | ) | [static] |
Definition at line 124 of file kmalloc.c.
References assert, freeKernDesc, kpanic(), memDescriptor::limit, memDescriptor::next, and memDescriptor::prev.
Referenced by kfree(), and kmalloc().
Here is the call graph for this function:

| void kfree | ( | void * | baseAddr | ) |
Definition at line 351 of file kmalloc.c.
References assert, memDescriptor::baseAddr, insertFreeDesc(), kprintf(), memDescriptor::limit, mallocSpinLock, memset(), memDescriptor::next, memDescriptor::prev, spinLock(), spinUnlock(), and usedKernDesc.
Referenced by close(), device_remove(), elf_loadfile(), execFile(), fclose(), fopen(), kmod_load(), ldEnable(), mpi_destroyMbox(), mpi_fetchMessage(), ne2kFreeBuffer(), operator delete(), operator delete[](), sys_exec(), sys_write(), sysExec(), systemTask(), ubixfs_cacheDelete(), ubixFSmkDir(), ubthread_cond_destroy(), ubthread_mutex_destroy(), vfs_mount(), and writeUbixFS().
Here is the call graph for this function:

| void* kmalloc | ( | uInt32 | len | ) |
Definition at line 247 of file kmalloc.c.
References assert, memDescriptor::baseAddr, freeKernDesc, getEmptyDesc(), insertFreeDesc(), kprintf(), memDescriptor::limit, MALLOC_ALIGN, mallocSpinLock, memDescriptor::next, memDescriptor::prev, spinLock(), spinUnlock(), and usedKernDesc.
Referenced by addDirEntry(), biosCall(), devfs_initialize(), devfs_makeNode(), device_add(), elf_loadfile(), execFile(), falloc(), fdc_init(), fopen(), initHardDisk(), initLNC(), kmain(), kmod_add(), kmod_load(), ldEnable(), lncAttach(), mpi_createMbox(), mpi_postMessage(), mpi_spam(), ne2k_init(), ne2kAllocBuffer(), openFileUbixFS(), operator new(), operator new[](), sched_init(), schedNewTask(), sys_exec(), sys_write(), sysctl_add(), sysctl_init(), sysExec(), tty_init(), ubixfs_cacheNew(), ubixfs_initialize(), ubixFSLoadDir(), ubixFSmkDir(), ubixFSUnlink(), ubthread_cond_init(), ubthread_create(), ubthread_mutex_init(), ufs_openFile(), vfs_mount(), vfsRegisterFS(), vitals_init(), and writeUbixFS().
Here is the call graph for this function:

| static void mergeMemBlocks | ( | ) | [static] |
Definition at line 185 of file kmalloc.c.
References memDescriptor::baseAddr, emptyKernDesc, freeKernDesc, memDescriptor::limit, memDescriptor::next, and memDescriptor::prev.
spinLock_t emptyDescSpinLock = SPIN_LOCK_INITIALIZER [static] |
struct memDescriptor* emptyKernDesc = 0x0 [static] |
struct memDescriptor* freeKernDesc = 0x0 [static] |
Definition at line 48 of file kmalloc.c.
Referenced by insertFreeDesc(), kmalloc(), and mergeMemBlocks().
spinLock_t mallocSpinLock = SPIN_LOCK_INITIALIZER [static] |
struct memDescriptor* usedKernDesc = 0x0 [static] |
1.4.7