|
|
DataMuseum.dkPresents historical artifacts from the history of: Bogika Butler |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Bogika Butler Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1280 (0x500)
Types: TextFile
Names: »ALLOC.H«
└─⟦d3d1d07f5⟧ Bits:30009789/_.ft.Ibm2.50006621.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »ALLOC.H«
#define NULL 0 #define BLOK 16 #define BUSY 1 #define SIZEOF 2 /* size of a word */ int *allocp, *alloct, *allocs; alloc(nbytes) int nbytes; æ register int *p; int i; int nwords, t1, *p1, *cct; int *q; if(allocs == 0) æ allocs = evnbrk(4); allocsÆ0Å = (&allocsÆ1Å)øBUSY; allocsÆ1Å = (&allocsÆ0Å)øBUSY; alloct = allocp = &allocsÆ1Å; å nwords = (nbytes+(2*SIZEOF-1))/SIZEOF; for(p=allocp;;) æ do æ if((*p & BUSY) == 0) æ while((*(q=*p) & BUSY)==0) *p = *q; if(q >= &pÆnwordsÅ) æ allocp = &pÆnwordsÅ; if(q > allocp) *allocp = *p; *p = allocp ø BUSY; return p+1; å å q = p; p = *p & üBUSY; å while(q>=allocp øø p<allocp); i = (nwords+BLOK)*SIZEOF; while((cct=evnbrk(i))==-1) æ if(i<32) return NULL; i /= SIZEOF; i &= ü1;/* rounded by SIZEOF actually */ å if(cct != alloct + 1) *alloct = cctøBUSY; else *alloct = cct; /* *cct = alloct = &cctÆi/SIZEOF-1Å;*/ *cct = alloct = &cctÆ(i>>1)-1Å; *alloct = allocsøBUSY; å å evnbrk(i) int i; æ /* sbrk(ccedata&1);*/ sbrk(sbrk(0)&1); return sbrk(i); å free(p) int *p; æ allocp = p-1; *allocp &= üBUSY; å «eof»