kmalloc.c File Reference

#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 memDescriptoremptyKernDesc = 0x0
static struct memDescriptorfreeKernDesc = 0x0
static spinLock_t mallocSpinLock = SPIN_LOCK_INITIALIZER
static struct memDescriptorusedKernDesc = 0x0


Function Documentation

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.


Variable Documentation

spinLock_t emptyDescSpinLock = SPIN_LOCK_INITIALIZER [static]

Definition at line 55 of file kmalloc.c.

Referenced by getEmptyDesc().

struct memDescriptor* emptyKernDesc = 0x0 [static]

Definition at line 49 of file kmalloc.c.

Referenced by getEmptyDesc(), and mergeMemBlocks().

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]

Definition at line 54 of file kmalloc.c.

Referenced by kfree(), and kmalloc().

struct memDescriptor* usedKernDesc = 0x0 [static]

Definition at line 47 of file kmalloc.c.

Referenced by kfree(), and kmalloc().


Generated on Fri Dec 15 11:24:40 2006 for UbixOS V2 by  doxygen 1.4.7