libc: add poolisoverlap() and definitions for Pool *secrmem
This commit is contained in:
parent
a1e96ae4b5
commit
8a73650874
3 changed files with 26 additions and 1 deletions
|
@ -35,6 +35,7 @@ extern void* poolalloc(Pool*, ulong);
|
||||||
extern void* poolallocalign(Pool*, ulong, ulong, long, ulong);
|
extern void* poolallocalign(Pool*, ulong, ulong, long, ulong);
|
||||||
extern void poolfree(Pool*, void*);
|
extern void poolfree(Pool*, void*);
|
||||||
extern ulong poolmsize(Pool*, void*);
|
extern ulong poolmsize(Pool*, void*);
|
||||||
|
extern int poolisoverlap(Pool*, void*, ulong);
|
||||||
extern void* poolrealloc(Pool*, void*, ulong);
|
extern void* poolrealloc(Pool*, void*, ulong);
|
||||||
extern void poolcheck(Pool*);
|
extern void poolcheck(Pool*);
|
||||||
extern int poolcompact(Pool*);
|
extern int poolcompact(Pool*);
|
||||||
|
@ -43,6 +44,7 @@ extern void pooldump(Pool*);
|
||||||
|
|
||||||
extern Pool* mainmem;
|
extern Pool* mainmem;
|
||||||
extern Pool* imagmem;
|
extern Pool* imagmem;
|
||||||
|
extern Pool* secrmem;
|
||||||
|
|
||||||
enum { /* flags */
|
enum { /* flags */
|
||||||
POOL_ANTAGONISM = 1<<0,
|
POOL_ANTAGONISM = 1<<0,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.TH POOL 2
|
.TH POOL 2
|
||||||
.SH NAME
|
.SH NAME
|
||||||
poolalloc, poolallocalign, poolfree, poolmsize, poolrealloc, poolcompact, poolcheck, poolblockcheck,
|
poolalloc, poolallocalign, poolfree, poolmsize, poolisoverlap, poolrealloc, poolcompact, poolcheck, poolblockcheck,
|
||||||
pooldump \- general memory management routines
|
pooldump \- general memory management routines
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B #include <u.h>
|
.B #include <u.h>
|
||||||
|
@ -25,6 +25,9 @@ void poolfree(Pool* pool, void* ptr)
|
||||||
ulong poolmsize(Pool* pool, void* ptr)
|
ulong poolmsize(Pool* pool, void* ptr)
|
||||||
.PP
|
.PP
|
||||||
.B
|
.B
|
||||||
|
int poolisoverlap(Pool* pool, void* ptr, ulong len)
|
||||||
|
.PP
|
||||||
|
.B
|
||||||
void* poolrealloc(Pool* pool, void* ptr, ulong size)
|
void* poolrealloc(Pool* pool, void* ptr, ulong size)
|
||||||
.PP
|
.PP
|
||||||
.B
|
.B
|
||||||
|
@ -109,6 +112,13 @@ that would usually go unused.
|
||||||
.IR Poolmsize
|
.IR Poolmsize
|
||||||
grows the block to encompass this extra space and returns the new size.
|
grows the block to encompass this extra space and returns the new size.
|
||||||
.PP
|
.PP
|
||||||
|
.I Poolisoverlap
|
||||||
|
checks if the byte span
|
||||||
|
.BR [ptr , ptr + len)
|
||||||
|
overlaps the arenas of the specified
|
||||||
|
.BR pool ,
|
||||||
|
returning non-zero when there is overlap or zero if none.
|
||||||
|
.PP
|
||||||
The
|
The
|
||||||
.I poolblockcheck
|
.I poolblockcheck
|
||||||
and
|
and
|
||||||
|
|
|
@ -1332,6 +1332,19 @@ poolmsize(Pool *p, void *v)
|
||||||
return dsize;
|
return dsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
poolisoverlap(Pool *p, void *v, ulong n)
|
||||||
|
{
|
||||||
|
Arena *a;
|
||||||
|
|
||||||
|
p->lock(p);
|
||||||
|
for(a = p->arenalist; a != nil; a = a->down)
|
||||||
|
if((uchar*)v+n > (uchar*)a && (uchar*)v < (uchar*)a+a->asize)
|
||||||
|
break;
|
||||||
|
p->unlock(p);
|
||||||
|
return a != nil;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Debugging
|
* Debugging
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue