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()
28 snd_gf1_mem_xalloc(struct snd_gf1_mem *alloc, struct snd_gf1_mem_block *block, in snd_gf1_mem_xalloc() argument
43 pblock = alloc->first; in snd_gf1_mem_xalloc()
49 if (pblock == alloc->first) in snd_gf1_mem_xalloc()
50 alloc->first = nblock; in snd_gf1_mem_xalloc()
53 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_xalloc()
59 if (alloc->last == NULL) { in snd_gf1_mem_xalloc()
61 alloc->first = alloc->last = nblock; in snd_gf1_mem_xalloc()
63 nblock->prev = alloc->last; in snd_gf1_mem_xalloc()
64 alloc->last->next = nblock; in snd_gf1_mem_xalloc()
65 alloc->last = nblock; in snd_gf1_mem_xalloc()
70 int snd_gf1_mem_xfree(struct snd_gf1_mem * alloc, struct snd_gf1_mem_block * block) in snd_gf1_mem_xfree() argument
74 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_xfree()
77 if (alloc->first == block) { in snd_gf1_mem_xfree()
78 alloc->first = block->next; in snd_gf1_mem_xfree()
86 if (alloc->last == block) { in snd_gf1_mem_xfree()
87 alloc->last = block->prev; in snd_gf1_mem_xfree()
100 static struct snd_gf1_mem_block *snd_gf1_mem_look(struct snd_gf1_mem * alloc, in snd_gf1_mem_look() argument
105 for (block = alloc->first; block; block = block->next) { in snd_gf1_mem_look()
113 static struct snd_gf1_mem_block *snd_gf1_mem_share(struct snd_gf1_mem * alloc, in snd_gf1_mem_share() argument
121 for (block = alloc->first; block; block = block->next) in snd_gf1_mem_share()
128 static int snd_gf1_mem_find(struct snd_gf1_mem * alloc, in snd_gf1_mem_find() argument
132 struct snd_gf1_bank_info *info = w_16 ? alloc->banks_16 : alloc->banks_8; in snd_gf1_mem_find()
147 for (pblock = alloc->first, idx = 0; pblock; pblock = pblock->next) { in snd_gf1_mem_find()
180 struct snd_gf1_mem_block *snd_gf1_mem_alloc(struct snd_gf1_mem * alloc, int owner, in snd_gf1_mem_alloc() argument
186 snd_gf1_mem_lock(alloc, 0); in snd_gf1_mem_alloc()
188 nblock = snd_gf1_mem_share(alloc, share_id); in snd_gf1_mem_alloc()
196 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_alloc()
201 if (snd_gf1_mem_find(alloc, &block, size, w_16, align) < 0) { in snd_gf1_mem_alloc()
202 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_alloc()
208 nblock = snd_gf1_mem_xalloc(alloc, &block, name); in snd_gf1_mem_alloc()
209 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_alloc()
213 int snd_gf1_mem_free(struct snd_gf1_mem * alloc, unsigned int address) in snd_gf1_mem_free() argument
218 snd_gf1_mem_lock(alloc, 0); in snd_gf1_mem_free()
219 block = snd_gf1_mem_look(alloc, address); in snd_gf1_mem_free()
221 result = snd_gf1_mem_xfree(alloc, block); in snd_gf1_mem_free()
222 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_free()
225 snd_gf1_mem_lock(alloc, 1); in snd_gf1_mem_free()
231 struct snd_gf1_mem *alloc; in snd_gf1_mem_init() local
234 alloc = &gus->gf1.mem_alloc; in snd_gf1_mem_init()
235 mutex_init(&alloc->memory_mutex); in snd_gf1_mem_init()
236 alloc->first = alloc->last = NULL; in snd_gf1_mem_init()
245 if (!snd_gf1_mem_xalloc(alloc, &block, "InterWave LFOs")) in snd_gf1_mem_init()
250 if (!snd_gf1_mem_xalloc(alloc, &block, "Voice default (NULL's)")) in snd_gf1_mem_init()
260 struct snd_gf1_mem *alloc; in snd_gf1_mem_done() local
263 alloc = &gus->gf1.mem_alloc; in snd_gf1_mem_done()
264 block = alloc->first; in snd_gf1_mem_done()
267 snd_gf1_mem_xfree(alloc, block); in snd_gf1_mem_done()
278 struct snd_gf1_mem *alloc; in snd_gf1_mem_info_read() local
284 alloc = &gus->gf1.mem_alloc; in snd_gf1_mem_info_read()
285 mutex_lock(&alloc->memory_mutex); in snd_gf1_mem_info_read()
288 …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()
292 …snd_iprintf(buffer, "0x%06x (%04ik)%s", alloc->banks_16[i].address, alloc->banks_16[i].size >> 10,… in snd_gf1_mem_info_read()
293 total += alloc->banks_16[i].size; in snd_gf1_mem_info_read()
297 for (block = alloc->first, i = 0; block; block = block->next, i++) { in snd_gf1_mem_info_read()
329 mutex_unlock(&alloc->memory_mutex); in snd_gf1_mem_info_read()