Lines Matching refs:alloc
18 void snd_gf1_mem_lock(struct snd_gf1_mem * alloc, int xup) in snd_gf1_mem_lock() argument
21 mutex_lock(&alloc->memory_mutex); in snd_gf1_mem_lock()
23 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_lock()
27 static struct snd_gf1_mem_block *snd_gf1_mem_xalloc(struct snd_gf1_mem * alloc, in snd_gf1_mem_xalloc() argument
36 pblock = alloc->first; in snd_gf1_mem_xalloc()
42 if (pblock == alloc->first) in snd_gf1_mem_xalloc()
43 alloc->first = nblock; in snd_gf1_mem_xalloc()
46 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_xalloc()
52 if (alloc->last == NULL) { in snd_gf1_mem_xalloc()
54 alloc->first = alloc->last = nblock; in snd_gf1_mem_xalloc()
56 nblock->prev = alloc->last; in snd_gf1_mem_xalloc()
57 alloc->last->next = nblock; in snd_gf1_mem_xalloc()
58 alloc->last = nblock; in snd_gf1_mem_xalloc()
63 int snd_gf1_mem_xfree(struct snd_gf1_mem * alloc, struct snd_gf1_mem_block * block) in snd_gf1_mem_xfree() argument
67 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_xfree()
70 if (alloc->first == block) { in snd_gf1_mem_xfree()
71 alloc->first = block->next; in snd_gf1_mem_xfree()
79 if (alloc->last == block) { in snd_gf1_mem_xfree()
80 alloc->last = block->prev; in snd_gf1_mem_xfree()
93 static struct snd_gf1_mem_block *snd_gf1_mem_look(struct snd_gf1_mem * alloc, in snd_gf1_mem_look() argument
98 for (block = alloc->first; block; block = block->next) { in snd_gf1_mem_look()
106 static struct snd_gf1_mem_block *snd_gf1_mem_share(struct snd_gf1_mem * alloc, in snd_gf1_mem_share() argument
114 for (block = alloc->first; block; block = block->next) in snd_gf1_mem_share()
121 static int snd_gf1_mem_find(struct snd_gf1_mem * alloc, in snd_gf1_mem_find() argument
125 struct snd_gf1_bank_info *info = w_16 ? alloc->banks_16 : alloc->banks_8; in snd_gf1_mem_find()
140 for (pblock = alloc->first, idx = 0; pblock; pblock = pblock->next) { in snd_gf1_mem_find()
173 struct snd_gf1_mem_block *snd_gf1_mem_alloc(struct snd_gf1_mem * alloc, int owner, in snd_gf1_mem_alloc() argument
179 snd_gf1_mem_lock(alloc, 0); in snd_gf1_mem_alloc()
181 nblock = snd_gf1_mem_share(alloc, share_id); in snd_gf1_mem_alloc()
189 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_alloc()
194 if (snd_gf1_mem_find(alloc, &block, size, w_16, align) < 0) { in snd_gf1_mem_alloc()
195 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_alloc()
202 nblock = snd_gf1_mem_xalloc(alloc, &block); in snd_gf1_mem_alloc()
203 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_alloc()
207 int snd_gf1_mem_free(struct snd_gf1_mem * alloc, unsigned int address) in snd_gf1_mem_free() argument
212 snd_gf1_mem_lock(alloc, 0); in snd_gf1_mem_free()
213 if ((block = snd_gf1_mem_look(alloc, address)) != NULL) { in snd_gf1_mem_free()
214 result = snd_gf1_mem_xfree(alloc, block); in snd_gf1_mem_free()
215 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_free()
218 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_free()
224 struct snd_gf1_mem *alloc; in snd_gf1_mem_init() local
227 alloc = &gus->gf1.mem_alloc; in snd_gf1_mem_init()
228 mutex_init(&alloc->memory_mutex); in snd_gf1_mem_init()
229 alloc->first = alloc->last = NULL; in snd_gf1_mem_init()
239 if (snd_gf1_mem_xalloc(alloc, &block) == NULL) in snd_gf1_mem_init()
245 if (snd_gf1_mem_xalloc(alloc, &block) == NULL) in snd_gf1_mem_init()
255 struct snd_gf1_mem *alloc; in snd_gf1_mem_done() local
258 alloc = &gus->gf1.mem_alloc; in snd_gf1_mem_done()
259 block = alloc->first; in snd_gf1_mem_done()
262 snd_gf1_mem_xfree(alloc, block); in snd_gf1_mem_done()
273 struct snd_gf1_mem *alloc; in snd_gf1_mem_info_read() local
279 alloc = &gus->gf1.mem_alloc; in snd_gf1_mem_info_read()
280 mutex_lock(&alloc->memory_mutex); in snd_gf1_mem_info_read()
283 …snd_iprintf(buffer, "0x%06x (%04ik)%s", alloc->banks_8[i].address, alloc->banks_8[i].size >> 10, i… in snd_gf1_mem_info_read()
287 …snd_iprintf(buffer, "0x%06x (%04ik)%s", alloc->banks_16[i].address, alloc->banks_16[i].size >> 10,… in snd_gf1_mem_info_read()
288 total += alloc->banks_16[i].size; in snd_gf1_mem_info_read()
292 for (block = alloc->first, i = 0; block; block = block->next, i++) { in snd_gf1_mem_info_read()
324 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_info_read()