pcm: direct: returning semop error code for semaphore up/down failures

Signed-off-by: Mounesh Sutar <sutar.mounesh@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Mounesh Sutar 2017-01-10 12:03:17 +05:30 committed by Takashi Iwai
parent 1eddf1f918
commit 3f0dc404f1

View file

@ -263,7 +263,10 @@ static inline int snd_pcm_direct_semaphore_down(snd_pcm_direct_t *dmix, int sem_
{ {
struct sembuf op[2] = { { sem_num, 0, 0 }, { sem_num, 1, SEM_UNDO } }; struct sembuf op[2] = { { sem_num, 0, 0 }, { sem_num, 1, SEM_UNDO } };
int err = semop(dmix->semid, op, 2); int err = semop(dmix->semid, op, 2);
if (err == 0) dmix->locked[sem_num]++; if (err == 0)
dmix->locked[sem_num]++;
else if (err == -1)
err = -errno;
return err; return err;
} }
@ -271,7 +274,10 @@ static inline int snd_pcm_direct_semaphore_up(snd_pcm_direct_t *dmix, int sem_nu
{ {
struct sembuf op = { sem_num, -1, SEM_UNDO | IPC_NOWAIT }; struct sembuf op = { sem_num, -1, SEM_UNDO | IPC_NOWAIT };
int err = semop(dmix->semid, &op, 1); int err = semop(dmix->semid, &op, 1);
if (err == 0) dmix->locked[sem_num]--; if (err == 0)
dmix->locked[sem_num]--;
else if (err == -1)
err = -errno;
return err; return err;
} }