tag | line | file | source code |
bdesc | 99 | lib/malloc.c | struct bucket_desc *bdesc, *first; |
bdesc | 102 | lib/malloc.c | first = bdesc = (struct bucket_desc *) get_free_page(GFP_KERNEL); |
bdesc | 103 | lib/malloc.c | if (!bdesc) |
bdesc | 106 | lib/malloc.c | bdesc->next = bdesc+1; |
bdesc | 107 | lib/malloc.c | bdesc++; |
bdesc | 113 | lib/malloc.c | bdesc->next = free_bucket_desc; |
bdesc | 120 | lib/malloc.c | struct bucket_desc *bdesc; |
bdesc | 139 | lib/malloc.c | for (bdesc = bdir->chain; bdesc; bdesc = bdesc->next) |
bdesc | 140 | lib/malloc.c | if (bdesc->freeptr) |
bdesc | 146 | lib/malloc.c | if (!bdesc) { |
bdesc | 152 | lib/malloc.c | bdesc = free_bucket_desc; |
bdesc | 153 | lib/malloc.c | free_bucket_desc = bdesc->next; |
bdesc | 154 | lib/malloc.c | bdesc->refcnt = 0; |
bdesc | 155 | lib/malloc.c | bdesc->bucket_size = bdir->size; |
bdesc | 156 | lib/malloc.c | bdesc->page = bdesc->freeptr = (void *) cp = get_free_page(GFP_KERNEL); |
bdesc | 165 | lib/malloc.c | bdesc->next = bdir->chain; /* OK, link it in! */ |
bdesc | 166 | lib/malloc.c | bdir->chain = bdesc; |
bdesc | 168 | lib/malloc.c | retval = (void *) bdesc->freeptr; |
bdesc | 169 | lib/malloc.c | bdesc->freeptr = *((void **) retval); |
bdesc | 170 | lib/malloc.c | bdesc->refcnt++; |
bdesc | 186 | lib/malloc.c | struct bucket_desc *bdesc, *prev; |
bdesc | 196 | lib/malloc.c | for (bdesc = bdir->chain; bdesc; bdesc = bdesc->next) { |
bdesc | 197 | lib/malloc.c | if (bdesc->page == page) |
bdesc | 199 | lib/malloc.c | prev = bdesc; |
bdesc | 205 | lib/malloc.c | *((void **)obj) = bdesc->freeptr; |
bdesc | 206 | lib/malloc.c | bdesc->freeptr = obj; |
bdesc | 207 | lib/malloc.c | bdesc->refcnt--; |
bdesc | 208 | lib/malloc.c | if (bdesc->refcnt == 0) { |
bdesc | 213 | lib/malloc.c | if ((prev && (prev->next != bdesc)) || |
bdesc | 214 | lib/malloc.c | (!prev && (bdir->chain != bdesc))) |
bdesc | 216 | lib/malloc.c | if (prev->next == bdesc) |
bdesc | 219 | lib/malloc.c | prev->next = bdesc->next; |
bdesc | 221 | lib/malloc.c | if (bdir->chain != bdesc) |
bdesc | 223 | lib/malloc.c | bdir->chain = bdesc->next; |
bdesc | 225 | lib/malloc.c | free_page((unsigned long) bdesc->page); |
bdesc | 226 | lib/malloc.c | bdesc->next = free_bucket_desc; |
bdesc | 227 | lib/malloc.c | free_bucket_desc = bdesc; |