|
|
|
1992/0625/sys/src/9/port/alloc.c:3,8 –
1992/0707/sys/src/9/port/alloc.c:3,9
(short | long | prev | next)
|
|
1992/0618
| |
#include "mem.h"
#include "dat.h"
#include "fns.h"
|
|
1992/0707
| |
#include "error.h"
|
|
1992/0618
| |
|
|
1992/0621
| |
/*
* Plan 9 has two kernel allocators, the x... routines provide a first
|
|
1992/0625/sys/src/9/port/alloc.c:19,25 –
1992/0707/sys/src/9/port/alloc.c:20,26
|
|
1992/0619
| |
|
|
1992/0618
| |
enum
{
|
|
1992/0619
| |
Maxpow = 16,
|
|
1992/0707
| |
Maxpow = 18,
|
|
1992/0619
| |
Nhole = 128,
Magichole = 0xDeadBabe,
|
|
1992/0620
| |
Magic2n = 0xFeedBeef,
|
|
1992/0625/sys/src/9/port/alloc.c:260,266 –
1992/0707/sys/src/9/port/alloc.c:261,267
|
|
1992/0619
| |
int pow;
Bucket *bp;
|
|
1992/0620
| |
for(pow = 3; pow < Maxpow; pow++)
|
|
1992/0707
| |
for(pow = 3; pow <= Maxpow; pow++)
|
|
1992/0619
| |
if(size <= (1<<pow))
goto good;
|
|
1992/0625/sys/src/9/port/alloc.c:298,305 –
1992/0707/sys/src/9/port/alloc.c:299,307
|
|
1992/0619
| |
{
|
|
1992/0625
| |
char *s;
|
|
1992/0619
| |
void *p;
|
|
1992/0707
| |
int attempt;
|
|
1992/0619
| |
|
|
1992/0625
| |
for(;;) {
|
|
1992/0707
| |
for(attempt = 0; attempt < 1000; attempt++) {
|
|
1992/0625
| |
p = malloc(size);
if(p != nil)
return p;
|
|
1992/0625/sys/src/9/port/alloc.c:313,319 –
1992/0707/sys/src/9/port/alloc.c:315,322
|
|
1992/0625
| |
qunlock(&arena.rq);
u->p->psstate = s;
|
|
1992/0622
| |
}
|
|
1992/0619
| |
return p;
|
|
1992/0707
| |
pexit(Enomem, 1);
return 0;
|
|
1992/0623
| |
}
int
|