66 |
static int |
static int |
67 |
lock_preset(snd_sf_list_t *sflist, int nonblock) |
lock_preset(snd_sf_list_t *sflist, int nonblock) |
68 |
{ |
{ |
69 |
unsigned long flags; |
if (nonblock) { |
70 |
spin_lock_irqsave(&sflist->lock, flags); |
if (down_trylock(&sflist->presets_mutex)) |
71 |
if (sflist->sf_locked && nonblock) { |
return -EBUSY; |
72 |
spin_unlock_irqrestore(&sflist->lock, flags); |
} else |
73 |
return -EBUSY; |
down(&sflist->presets_mutex); |
|
} |
|
|
spin_unlock_irqrestore(&sflist->lock, flags); |
|
|
down(&sflist->presets_mutex); |
|
|
sflist->sf_locked = 1; |
|
74 |
return 0; |
return 0; |
75 |
} |
} |
76 |
|
|
82 |
unlock_preset(snd_sf_list_t *sflist) |
unlock_preset(snd_sf_list_t *sflist) |
83 |
{ |
{ |
84 |
up(&sflist->presets_mutex); |
up(&sflist->presets_mutex); |
|
sflist->sf_locked = 0; |
|
85 |
} |
} |
86 |
|
|
87 |
|
|
1351 |
|
|
1352 |
init_MUTEX(&sflist->presets_mutex); |
init_MUTEX(&sflist->presets_mutex); |
1353 |
spin_lock_init(&sflist->lock); |
spin_lock_init(&sflist->lock); |
|
sflist->sf_locked = 0; |
|
1354 |
sflist->memhdr = hdr; |
sflist->memhdr = hdr; |
1355 |
|
|
1356 |
if (callback) |
if (callback) |
1397 |
|
|
1398 |
/* |
/* |
1399 |
* Remove unlocked samples. |
* Remove unlocked samples. |
1400 |
* The soundcard should be silet before calling this function. |
* The soundcard should be silent before calling this function. |
1401 |
*/ |
*/ |
1402 |
int |
int |
1403 |
snd_soundfont_remove_unlocked(snd_sf_list_t *sflist) |
snd_soundfont_remove_unlocked(snd_sf_list_t *sflist) |