- if (__brk(new) != new) goto fail;
-
- w = MEM_TO_CHUNK(new);
- w->psize = n | C_INUSE;
- w->csize = 0 | C_INUSE;
-
- w = MEM_TO_CHUNK(mal.brk);
- w->csize = n | C_INUSE;
- mal.brk = new;
-
- unlock(mal.brk_lock);
-
- return w;
-fail:
- unlock(mal.brk_lock);
- return 0;
-}
-
-static int init_malloc(size_t n)
-{
- static int init, waiters;
- int state;
- struct chunk *c;
-
- if (init == 2) return 0;
-
- while ((state=a_swap(&init, 1)) == 1)
- __wait(&init, &waiters, 1, 1);
- if (state) {
- a_store(&init, 2);