diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-03-26 18:22:42 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-03-26 18:22:42 +0800 |
commit | 29c15f61e0b5b58b39d499bc3526333a0b06e373 (patch) | |
tree | fdb63e0733ab531e077e93111cff7c6bc6bf6fc2 /mbbsd | |
parent | 67278caff081fa2e2047d807023f5ebb51afa574 (diff) | |
download | pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.tar pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.tar.gz pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.tar.bz2 pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.tar.lz pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.tar.xz pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.tar.zst pttbbs-29c15f61e0b5b58b39d499bc3526333a0b06e373.zip |
CRITICAL_MEMORY
git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@712 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/stuff.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/mbbsd/stuff.c b/mbbsd/stuff.c index 41d5d93e..f79ec1ae 100644 --- a/mbbsd/stuff.c +++ b/mbbsd/stuff.c @@ -1,4 +1,4 @@ -/* $Id: stuff.c,v 1.10 2003/01/16 11:58:04 kcwu Exp $ */ +/* $Id: stuff.c,v 1.11 2003/03/26 10:22:42 in2 Exp $ */ #include "bbs.h" /* ----------------------------------------------------- */ @@ -613,3 +613,28 @@ show_help(char *helptext[]) } pressanykey(); } + +/* ----------------------------------------------------- */ +/* use mmap() to malloc large memory in CRITICAL_MEMORY */ +/* ----------------------------------------------------- */ +#ifdef CRITICAL_MEMORY +void *MALLOC(int size) +{ + int *p; + p = (int *)mmap(NULL, (size + 4), PROT_READ | PROT_WRITE, MAP_ANON, -1, 0); + p[0] = size; +#ifdef DEBUG + vmsg("critical malloc %d bytes", size); +#endif + return (void *)&p[1]; +} + +void FREE(void *ptr) +{ + int size = ((int *)ptr)[-1]; + munmap((void *)(&(((int *)ptr)[-1])), size); +#ifdef DEBUG + vmsg("critical free %d bytes", size); +#endif +} +#endif |