another attempt at a thread-safe array
This commit is contained in:
@@ -1,9 +1,20 @@
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include "iarray.h"
|
||||
|
||||
static void freechain(iarray_page* p,size_t pagesize) {
|
||||
while (p) {
|
||||
iarray_page* n=p->next;
|
||||
munmap(p,pagesize);
|
||||
p=n;
|
||||
}
|
||||
}
|
||||
|
||||
void iarray_free(iarray* ia) {
|
||||
size_t i;
|
||||
for (i=0; i<ia->pagefence; ++i)
|
||||
if (ia->pages[i]) free(ia->pages[i]);
|
||||
free(ia->pages);
|
||||
for (i=0; i<sizeof(ia->pages)/sizeof(ia->pages[0]); ++i) {
|
||||
freechain(ia->pages[i],ia->bytesperpage);
|
||||
ia->pages[i]=0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user