pr 114 kern/vm/kmalloc.c #define PR_PAGEADDR(pr) ((pr)->pageaddr_and_blocktype & PAGE_FRAME)
pr 115 kern/vm/kmalloc.c #define PR_BLOCKTYPE(pr) ((pr)->pageaddr_and_blocktype & ~PAGE_FRAME)
pr 212 kern/vm/kmalloc.c checksubpage(struct pageref *pr)
pr 221 kern/vm/kmalloc.c if (pr->freelist_offset == INVALID_OFFSET) {
pr 222 kern/vm/kmalloc.c KASSERT(pr->nfree==0);
pr 226 kern/vm/kmalloc.c prpage = PR_PAGEADDR(pr);
pr 227 kern/vm/kmalloc.c blktype = PR_BLOCKTYPE(pr);
pr 229 kern/vm/kmalloc.c KASSERT(pr->freelist_offset < PAGE_SIZE);
pr 230 kern/vm/kmalloc.c KASSERT(pr->freelist_offset % sizes[blktype] == 0);
pr 232 kern/vm/kmalloc.c fla = prpage + pr->freelist_offset;
pr 243 kern/vm/kmalloc.c KASSERT(nfree==pr->nfree);
pr 246 kern/vm/kmalloc.c #define checksubpage(pr) ((void)(pr))
pr 254 kern/vm/kmalloc.c struct pageref *pr;
pr 261 kern/vm/kmalloc.c for (pr = sizebases[i]; pr != NULL; pr = pr->next_samesize) {
pr 262 kern/vm/kmalloc.c checksubpage(pr);
pr 268 kern/vm/kmalloc.c for (pr = allbase; pr != NULL; pr = pr->next_all) {
pr 269 kern/vm/kmalloc.c checksubpage(pr);
pr 284 kern/vm/kmalloc.c dumpsubpage(struct pageref *pr)
pr 292 kern/vm/kmalloc.c checksubpage(pr);
pr 300 kern/vm/kmalloc.c prpage = PR_PAGEADDR(pr);
pr 301 kern/vm/kmalloc.c blktype = PR_BLOCKTYPE(pr);
pr 307 kern/vm/kmalloc.c if (pr->freelist_offset != INVALID_OFFSET) {
pr 308 kern/vm/kmalloc.c fla = prpage + pr->freelist_offset;
pr 321 kern/vm/kmalloc.c (unsigned) pr->nfree, n);
pr 336 kern/vm/kmalloc.c struct pageref *pr;
pr 343 kern/vm/kmalloc.c for (pr = allbase; pr != NULL; pr = pr->next_all) {
pr 344 kern/vm/kmalloc.c dumpsubpage(pr);
pr 354 kern/vm/kmalloc.c remove_lists(struct pageref *pr, int blktype)
pr 362 kern/vm/kmalloc.c if (*guy == pr) {
pr 363 kern/vm/kmalloc.c *guy = pr->next_samesize;
pr 370 kern/vm/kmalloc.c if (*guy == pr) {
pr 371 kern/vm/kmalloc.c *guy = pr->next_all;
pr 400 kern/vm/kmalloc.c struct pageref *pr; // pageref for page we're allocating from
pr 416 kern/vm/kmalloc.c for (pr = sizebases[blktype]; pr != NULL; pr = pr->next_samesize) {
pr 419 kern/vm/kmalloc.c KASSERT(PR_BLOCKTYPE(pr) == blktype);
pr 420 kern/vm/kmalloc.c checksubpage(pr);
pr 422 kern/vm/kmalloc.c if (pr->nfree > 0) {
pr 426 kern/vm/kmalloc.c KASSERT(pr->freelist_offset < PAGE_SIZE);
pr 427 kern/vm/kmalloc.c prpage = PR_PAGEADDR(pr);
pr 428 kern/vm/kmalloc.c fla = prpage + pr->freelist_offset;
pr 433 kern/vm/kmalloc.c pr->nfree--;
pr 436 kern/vm/kmalloc.c KASSERT(pr->nfree > 0);
pr 439 kern/vm/kmalloc.c pr->freelist_offset = fla - prpage;
pr 442 kern/vm/kmalloc.c KASSERT(pr->nfree == 0);
pr 443 kern/vm/kmalloc.c pr->freelist_offset = INVALID_OFFSET;
pr 471 kern/vm/kmalloc.c pr = allocpageref();
pr 472 kern/vm/kmalloc.c if (pr==NULL) {
pr 480 kern/vm/kmalloc.c pr->pageaddr_and_blocktype = MKPAB(prpage, blktype);
pr 481 kern/vm/kmalloc.c pr->nfree = PAGE_SIZE / sizes[blktype];
pr 492 kern/vm/kmalloc.c for (i=1; i<pr->nfree; i++) {
pr 498 kern/vm/kmalloc.c pr->freelist_offset = fla - prpage;
pr 499 kern/vm/kmalloc.c KASSERT(pr->freelist_offset == (pr->nfree-1)*sizes[blktype]);
pr 501 kern/vm/kmalloc.c pr->next_samesize = sizebases[blktype];
pr 502 kern/vm/kmalloc.c sizebases[blktype] = pr;
pr 504 kern/vm/kmalloc.c pr->next_all = allbase;
pr 505 kern/vm/kmalloc.c allbase = pr;
pr 517 kern/vm/kmalloc.c struct pageref *pr; // pageref for page we're freeing in
pr 529 kern/vm/kmalloc.c for (pr = allbase; pr; pr = pr->next_all) {
pr 530 kern/vm/kmalloc.c prpage = PR_PAGEADDR(pr);
pr 531 kern/vm/kmalloc.c blktype = PR_BLOCKTYPE(pr);
pr 535 kern/vm/kmalloc.c checksubpage(pr);
pr 542 kern/vm/kmalloc.c if (pr==NULL) {
pr 568 kern/vm/kmalloc.c if (pr->freelist_offset == INVALID_OFFSET) {
pr 571 kern/vm/kmalloc.c fl->next = (struct freelist *)(prpage + pr->freelist_offset);
pr 573 kern/vm/kmalloc.c pr->freelist_offset = offset;
pr 574 kern/vm/kmalloc.c pr->nfree++;
pr 576 kern/vm/kmalloc.c KASSERT(pr->nfree <= PAGE_SIZE / sizes[blktype]);
pr 577 kern/vm/kmalloc.c if (pr->nfree == PAGE_SIZE / sizes[blktype]) {
pr 579 kern/vm/kmalloc.c remove_lists(pr, blktype);
pr 580 kern/vm/kmalloc.c freepageref(pr);