|
|
1.1 ! root 1: /* mem.h - freestk, roundew, truncew */ ! 2: ! 3: #define PAGESIZE 512 ! 4: ! 5: struct mblock { ! 6: struct mblock *mnext; ! 7: unsigned int mlen; ! 8: }; ! 9: ! 10: /*---------------------------------------------------------------------- ! 11: * roundew, truncew - round or truncate address to next sizeof(mblock) ! 12: *---------------------------------------------------------------------- ! 13: */ ! 14: #define roundew(x) (int *)( ((sizeof(struct mblock)-1) + (int)(x)) \ ! 15: & (~(sizeof(struct mblock)-1)) ) ! 16: ! 17: #define truncew(x) (int *)( ((int)(x)) & (~(sizeof(struct mblock)-1)) ) ! 18: ! 19: /*---------------------------------------------------------------------- ! 20: * freestk -- free stack memory allocated by getstk ! 21: *---------------------------------------------------------------------- ! 22: */ ! 23: #define freestk(p,len) freemem((unsigned)(p) \ ! 24: - (unsigned)(roundew(len)) \ ! 25: + (unsigned)sizeof(int), \ ! 26: roundew(len) ) ! 27: ! 28: extern struct mblock memlist; /* head of free memory list */ ! 29: extern int *maxaddr; /* max memory address */ ! 30: extern int end; /* address beyond loaded memory */ ! 31: extern int etext; /* address beyond text segment */ ! 32: extern int edata; /* address beyond data segment */ ! 33: extern int end; /* address beyond loaded memory */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.