listalloc.c 297 B

12345678910111213141516171819
  1. #include <u.h>
  2. #include <libc.h>
  3. void* listalloc(long, long);
  4. void *
  5. listalloc(long n, long size)
  6. {
  7. char *p, *base;
  8. size = (size+sizeof(ulong)-1)/sizeof(ulong)*sizeof(ulong);
  9. p = base = malloc(n*size);
  10. while(--n > 0){
  11. *(char**)p = p+size;
  12. p += size;
  13. }
  14. *(char**)p = 0;
  15. return base;
  16. }