|
|
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.