Lines Matching refs:hole
41 struct hole { struct
50 static struct hole initholes[64]; argument
89 struct hole *hole; in print_holes() local
93 hole = list_entry(cur, struct hole, list); in print_holes()
95 if((hole->start == 0) && (hole->end == 0) && (hole->size == 0)) in print_holes()
98 printk("hole: start %08lx end %08lx size %08lx\n", hole->start, hole->end, hole->size); in print_holes()
109 struct hole *hole; in refill() local
110 struct hole *prev = NULL; in refill()
115 hole = list_entry(cur, struct hole, list); in refill()
118 prev = hole; in refill()
122 if(hole->end == prev->start) { in refill()
123 hole->size += prev->size; in refill()
124 hole->end = prev->end; in refill()
134 static inline struct hole *rmcache(void) in rmcache()
136 struct hole *ret; in rmcache()
145 ret = list_entry(hole_cache.next, struct hole, list); in rmcache()
156 struct hole *hole; in get_baddr() local
170 hole = list_entry(cur, struct hole, list); in get_baddr()
173 newlen = len + ((hole->end - len) & (align-1)); in get_baddr()
177 if(hole->size > newlen) { in get_baddr()
178 hole->end -= newlen; in get_baddr()
179 hole->size -= newlen; in get_baddr()
180 dvma_entry_use(hole->end) = newlen; in get_baddr()
185 return hole->end; in get_baddr()
186 } else if(hole->size == newlen) { in get_baddr()
187 list_move(&(hole->list), &hole_cache); in get_baddr()
188 dvma_entry_use(hole->start) = newlen; in get_baddr()
193 return hole->start; in get_baddr()
207 struct hole *hole; in free_baddr() local
223 hole = list_entry(cur, struct hole, list); in free_baddr()
225 if(hole->end == baddr) { in free_baddr()
226 hole->end += len; in free_baddr()
227 hole->size += len; in free_baddr()
229 } else if(hole->start == (baddr + len)) { in free_baddr()
230 hole->start = baddr; in free_baddr()
231 hole->size += len; in free_baddr()
237 hole = rmcache(); in free_baddr()
239 hole->start = baddr; in free_baddr()
240 hole->end = baddr + len; in free_baddr()
241 hole->size = len; in free_baddr()
244 list_add(&(hole->list), cur); in free_baddr()
253 struct hole *hole; in dvma_init() local
263 hole = rmcache(); in dvma_init()
264 hole->start = DVMA_START; in dvma_init()
265 hole->end = DVMA_END; in dvma_init()
266 hole->size = DVMA_SIZE; in dvma_init()
268 list_add(&(hole->list), &hole_list); in dvma_init()