45 #include <config_auto.h>
48 #include "allheaders.h"
187 PROCNAME(
"createPMS");
190 return ERROR_INT(
"numalloc not defined", procName, 1);
192 if (nchunks > 1000.0)
193 L_WARNING(
"There are %.0f chunks\n", procName, nchunks);
205 if ((
sizes = (
size_t *)LEPT_CALLOC(
nlevels,
sizeof(
size_t))) == NULL)
206 return ERROR_INT(
"sizes not made", procName, 1);
218 return ERROR_INT(
"paa not made", procName, 1);
225 if ((
baseptr = (l_uint32 *)LEPT_CALLOC(
nbytes / 4,
sizeof(l_uint32)))
227 return ERROR_INT(
"calloc fail for baseptr", procName, 1);
232 return ERROR_INT(
"calloc fail for firstptr", procName, 1);
236 for (i = 0; i <
nlevels; i++) {
238 return ERROR_INT(
"pa not made", procName, 1);
241 for (j = 0; j < alloca[i]; j++) {
243 data +=
sizes[i] / 4;
250 pms->
memmax = (l_int32 *)LEPT_CALLOC(
nlevels,
sizeof(l_int32));
273 if ((pms = CustomPMS) == NULL)
288 LEPT_FREE(pms->
sizes);
319 PROCNAME(
"pmsCustomAlloc");
321 if ((pms = CustomPMS) == NULL)
322 return (
void *)ERROR_PTR(
"pms not defined", procName, NULL);
328 return (
void *)ERROR_PTR(
"data not made", procName, NULL);
362 PROCNAME(
"pmsCustomDealloc");
364 if ((pms = CustomPMS) == NULL) {
365 L_ERROR(
"pms not defined\n", procName);
370 L_ERROR(
"level not found\n", procName);
409 PROCNAME(
"pmsGetAlloc");
411 if ((pms = CustomPMS) == NULL)
412 return (
void *)ERROR_PTR(
"pms not defined", procName, NULL);
414 if ((data = (
void *)LEPT_CALLOC(
nbytes,
sizeof(
char))) == NULL)
415 return (
void *)ERROR_PTR(
"data not made", procName, NULL);
418 fprintf(fp,
"Alloc %zu bytes at %p\n",
nbytes, data);
421 L_ERROR(
"failed to open stream for %s\n", procName, pms->
logfile);
443 PROCNAME(
"pmsGetLevelForAlloc");
446 return ERROR_INT(
"&level not defined", procName, 1);
448 if ((pms = CustomPMS) == NULL)
449 return ERROR_INT(
"pms not defined", procName, 1);
455 for (i = 0; i < pms->
nlevels; i++) {
482 PROCNAME(
"pmsGetLevelForDealloc");
485 return ERROR_INT(
"&level not defined", procName, 1);
488 return ERROR_INT(
"data not defined", procName, 1);
489 if ((pms = CustomPMS) == NULL)
490 return ERROR_INT(
"pms not defined", procName, 1);
492 if (data < (
void *)pms->
baseptr || data >= (
void *)pms->
maxptr)
495 for (i = 1; i < pms->
nlevels; i++) {
497 if (data < (
void *)first)
515 if ((pms = CustomPMS) == NULL)
518 lept_stderr(
"Total number of pix used at each level\n");
519 for (i = 0; i < pms->
nlevels; i++)
523 lept_stderr(
"Max number of pix in use at any time in each level\n");
524 for (i = 0; i < pms->
nlevels; i++)
528 lept_stderr(
"Number of pix alloc'd because none were available\n");
529 for (i = 0; i < pms->
nlevels; i++)
l_int32 numaGetCount(NUMA *na)
numaGetCount()
l_int32 * numaGetIArray(NUMA *na)
numaGetIArray()
l_ok numaGetSum(NUMA *na, l_float32 *psum)
numaGetSum()
l_ok pmsCreate(size_t minsize, size_t smallest, NUMA *numalloc, const char *logfile)
pmsCreate()
void pmsLogInfo(void)
pmsLogInfo()
l_ok pmsGetLevelForAlloc(size_t nbytes, l_int32 *plevel)
pmsGetLevelForAlloc()
void pmsDestroy(void)
pmsDestroy()
void pmsCustomDealloc(void *data)
pmsCustomDealloc()
l_ok pmsGetLevelForDealloc(void *data, l_int32 *plevel)
pmsGetLevelForDealloc()
void * pmsCustomAlloc(size_t nbytes)
pmsCustomAlloc()
void * pmsGetAlloc(size_t nbytes)
pmsGetAlloc()
L_PTRAA * ptraaCreate(l_int32 n)
ptraaCreate()
L_PTRA * ptraCreate(l_int32 n)
ptraCreate()
l_ok ptraAdd(L_PTRA *pa, void *item)
ptraAdd()
void ptraaDestroy(L_PTRAA **ppaa, l_int32 freeflag, l_int32 warnflag)
ptraaDestroy()
L_PTRA * ptraaGetPtra(L_PTRAA *paa, l_int32 index, l_int32 accessflag)
ptraaGetPtra()
l_ok ptraaInsertPtra(L_PTRAA *paa, l_int32 index, L_PTRA *pa)
ptraaInsertPtra()
void * ptraRemoveLast(L_PTRA *pa)
ptraRemoveLast()
void lept_stderr(const char *fmt,...)
lept_stderr()
char * stringNew(const char *src)
stringNew()
FILE * fopenWriteStream(const char *filename, const char *modestring)
fopenWriteStream()