 |
My Project
debian-1:4.1.1-p2+ds-4build2
|
#include <limits.h>
#include "omalloc.h"
#include "omDefaultConfig.h"
#include "omDebug.h"
Go to the source code of this file.
|
static void * | omTakeOutConsecutivePages (omBinPageRegion region, int how_many) |
|
static omBinPageRegion | omAllocNewBinPagesRegion (int min_pages) |
|
static void | omFreeBinPagesRegion (omBinPageRegion region) |
|
static void | omBinPageIndexFault (unsigned long low_index, unsigned long high_index) |
|
static void | omRegisterBinPages (void *low_addr, int pages) |
|
static void | omUnregisterBinPages (void *low_addr, int pages) |
|
OM_INLINE_LOCAL void | omTakeOutRegion (omBinPageRegion region) |
|
OM_INLINE_LOCAL void | omInsertRegionAfter (omBinPageRegion insert, omBinPageRegion after) |
|
OM_INLINE_LOCAL void | omInsertRegionBefore (omBinPageRegion insert, omBinPageRegion before) |
|
omBinPage | omAllocBinPage () |
|
omBinPage | omAllocBinPages (int how_many) |
|
void | omFreeBinPages (omBinPage bin_page, int how_many) |
|
int | omIsKnownMemoryRegion (omBinPageRegion region) |
|
omError_t | omCheckBinPageRegion (omBinPageRegion region, int level, omError_t report, OM_FLR_DECL) |
|
omError_t | omCheckBinPageRegions (int level, omError_t report, OM_FLR_DECL) |
|
omBinPageRegion | omFindRegionOfAddr (void *addr) |
|
int | omIsAddrOnFreeBinPage (void *addr) |
|
◆ omBinPageRegion_s
◆ NEXT_PAGE
#define NEXT_PAGE |
( |
|
page | ) |
*((void**) page) |
◆ OM_IS_EMPTY_REGION
#define OM_IS_EMPTY_REGION |
( |
|
region | ) |
((region)->current == NULL && (region->init_addr == NULL)) |
◆ OM_KEEP_REGIONS_ORDER
#define OM_KEEP_REGIONS_ORDER |
◆ omAllocBinPage()
Definition at line 96 of file omBinPage.c.
143 OM_ALLOC_BINPAGE_HOOK;
◆ omAllocBinPages()
Definition at line 147 of file omBinPage.c.
158 if (region->init_pages >= how_many)
161 region->init_pages -= how_many;
162 if (region->init_pages)
163 region->init_addr += how_many*SIZEOF_SYSTEM_PAGE;
165 region->init_addr =
NULL;
172 if (region->next !=
NULL)
174 region = region->next;
179 region->next = new_region;
180 new_region->prev = region;
187 bin_page->region = region;
188 region->used_pages += how_many;
196 om_Info.AvailPages -= how_many;
200 OM_ALLOC_BINPAGE_HOOK;
◆ omAllocNewBinPagesRegion()
Definition at line 292 of file omBinPage.c.
295 om_Info.InternalUsedBytesMalloc+=
sizeof(omBinPageRegion_t);
297 int pages = (min_pages>
om_Opts.PagesPerRegion ? min_pages :
om_Opts.PagesPerRegion);
298 size_t size = pages*SIZEOF_SYSTEM_PAGE;
304 size = min_pages*SIZEOF_SYSTEM_PAGE;
310 region->pages = pages;
311 region->used_pages = 0;
312 region->init_addr = addr;
313 region->init_pages = pages;
314 region->current =
NULL;
◆ omBinPageIndexFault()
static void omBinPageIndexFault |
( |
unsigned long |
low_index, |
|
|
unsigned long |
high_index |
|
) |
| |
|
static |
Definition at line 347 of file omBinPage.c.
349 unsigned long index_diff = high_index - low_index;
357 om_Info.InternalUsedBytesMalloc+=(index_diff + 1)*SIZEOF_LONG;
369 new_length*SIZEOF_LONG);
370 om_Info.InternalUsedBytesMalloc+= (new_length-old_length)*SIZEOF_LONG;
374 unsigned long offset = new_length - old_length;
◆ omCheckBinPageRegion()
Definition at line 503 of file omBinPage.c.
513 if (region->init_pages)
517 && region->init_addr <= region->addr + (region->pages -1)*SIZEOF_SYSTEM_PAGE));
519 region->addr + (region->pages - region->init_pages)*SIZEOF_SYSTEM_PAGE);
525 omListLength(region->current)+region->used_pages+region->init_pages != region->pages);
◆ omCheckBinPageRegions()
◆ omFindRegionOfAddr()
Definition at line 576 of file omBinPage.c.
580 if (region ==
NULL)
return 0;
584 if ((
char *)addr >= region->addr
585 && (
char *)addr < region->addr + (region->pages)*SIZEOF_SYSTEM_PAGE)
587 region = region->next;
589 while (region !=
NULL);
◆ omFreeBinPages()
void omFreeBinPages |
( |
omBinPage |
bin_page, |
|
|
int |
how_many |
|
) |
| |
Definition at line 204 of file omBinPage.c.
208 region->used_pages -= how_many;
209 if (region->used_pages == 0)
213 if (region->next !=
NULL)
231 char* page = (
char *)bin_page;
235 NEXT_PAGE(page) = page + SIZEOF_SYSTEM_PAGE;
245 region->current = (
void*) bin_page;
247 om_Info.AvailPages += how_many;
249 OM_FREE_BINPAGE_HOOK;
◆ omFreeBinPagesRegion()
Definition at line 328 of file omBinPage.c.
332 om_Info.AvailPages -= region->pages;
338 om_Info.InternalUsedBytesMalloc-=
sizeof(omBinPageRegion_t);
◆ omInsertRegionAfter()
◆ omInsertRegionBefore()
◆ omIsAddrOnFreeBinPage()
int omIsAddrOnFreeBinPage |
( |
void * |
addr | ) |
|
Definition at line 593 of file omBinPage.c.
595 char *c_addr=(
char *)addr;
598 if (region ==
NULL)
return 0;
601 if (c_addr > region->addr && c_addr < region->addr + (region->pages)*SIZEOF_SYSTEM_PAGE)
606 region = region->next;
608 while (region !=
NULL);
◆ omIsKnownMemoryRegion()
◆ omRegisterBinPages()
static void omRegisterBinPages |
( |
void * |
low_addr, |
|
|
int |
pages |
|
) |
| |
|
static |
Definition at line 388 of file omBinPage.c.
391 char* high_addr = (
char *)low_addr + (pages-1)*SIZEOF_SYSTEM_PAGE;
399 if (low_index < high_index)
409 for (shift = low_index+1; shift < high_index; shift++)
426 while (high_index > shift)
◆ omTakeOutConsecutivePages()
static void * omTakeOutConsecutivePages |
( |
omBinPageRegion |
region, |
|
|
int |
how_many |
|
) |
| |
|
static |
Definition at line 252 of file omBinPage.c.
259 current = region->current;
260 while (current !=
NULL)
273 if (current == region->current)
◆ omTakeOutRegion()
Definition at line 47 of file omBinPage.c.
51 if (region->prev !=
NULL)
53 omAssume(region->prev != region && region->prev != region->next);
54 region->prev->next = region->next;
57 if (region->next !=
NULL)
59 omAssume(region->next != region && region->prev != region->next);
60 region->next->prev = region->prev;
◆ omUnregisterBinPages()
static void omUnregisterBinPages |
( |
void * |
low_addr, |
|
|
int |
pages |
|
) |
| |
|
static |
Definition at line 435 of file omBinPage.c.
438 char* high_addr = (
char *)low_addr + (pages-1)*SIZEOF_SYSTEM_PAGE;
443 if (low_index < high_index)
453 for (shift = low_index+1; shift < high_index; shift++)
470 while (high_index > shift)
◆ om_BinPageIndicies
unsigned long* om_BinPageIndicies = NULL |
◆ om_CurrentBinPageRegion
◆ om_MaxBinPageIndex
unsigned long om_MaxBinPageIndex = 0 |
◆ om_MinBinPageIndex
unsigned long om_MinBinPageIndex = ULONG_MAX |
void * omAllocFromSystem(size_t size)
#define omIsOnList(ptr, addr)
#define omCheckGList(ptr, next, level, report, OM_FLR_VAL)
void * omReallocSizeFromSystem(void *addr, size_t oldsize, size_t newsize)
#define omGetPageShiftOfAddr(addr)
unsigned long om_MinBinPageIndex
static omBinPageRegion omAllocNewBinPagesRegion(int min_pages)
#define omCheckReturnError(cond, error)
#define omCheckReturnCorrupted(cond)
static omBinPageRegion om_CurrentBinPageRegion
static void omUnregisterBinPages(void *low_addr, int pages)
static void omFreeBinPagesRegion(omBinPageRegion region)
#define omCheckReturn(cond)
#define OM_IS_EMPTY_REGION(region)
OM_INLINE_LOCAL void omInsertRegionBefore(omBinPageRegion insert, omBinPageRegion before)
void * _omVallocFromSystem(size_t size, int fail)
#define omVallocFromSystem(size)
static void omRegisterBinPages(void *low_addr, int pages)
#define omGListLength(ptr, next)
omError_t omCheckPtr(const void *ptr, omError_t report, OM_FLR_DECL)
void omVfreeToSystem(void *page, size_t size)
void omFreeSizeToSystem(void *addr, size_t size)
static void * omTakeOutConsecutivePages(omBinPageRegion region, int how_many)
#define omCheckList(ptr, level, report, OM_FLR_VAL)
#define omGListLast(ptr, next)
#define omGetPageOfAddr(addr)
OM_INLINE_LOCAL void omInsertRegionAfter(omBinPageRegion insert, omBinPageRegion after)
omError_t omCheckBinPageRegion(omBinPageRegion region, int level, omError_t report, OM_FLR_DECL)
unsigned long om_MaxBinPageIndex
result insert(CFAFactor(LcF, 1, 1))
int omIsKnownMemoryRegion(omBinPageRegion region)
OM_INLINE_LOCAL void omTakeOutRegion(omBinPageRegion region)
omBinPageRegion_t * omBinPageRegion
unsigned long * om_BinPageIndicies
static void omBinPageIndexFault(unsigned long low_index, unsigned long high_index)
#define omListLength(ptr)
#define omIsAddrPageAligned(addr)
#define omGetPageIndexOfAddr(addr)