Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03b76123 authored by Matthias Kaehlcke's avatar Matthias Kaehlcke Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (5946): Use mutex instead of semaphore in the DVB frontend tuning interface



The DVB frontend tuning interface uses a semaphore as mutex. Use the
mutex API instead of the (binary) semaphore.

Signed-off-by: default avatarMatthias Kaehlcke <matthias.kaehlcke@gmail.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 667c7bc0
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ static void dvb_frontend_add_event(struct dvb_frontend *fe, fe_status_t status)

	dprintk ("%s\n", __FUNCTION__);

	if (down_interruptible (&events->sem))
	if (mutex_lock_interruptible (&events->mtx))
		return;

	wp = (events->eventw + 1) % MAX_EVENT;
@@ -159,7 +159,7 @@ static void dvb_frontend_add_event(struct dvb_frontend *fe, fe_status_t status)

	events->eventw = wp;

	up (&events->sem);
	mutex_unlock(&events->mtx);

	e->status = status;

@@ -197,7 +197,7 @@ static int dvb_frontend_get_event(struct dvb_frontend *fe,
			return ret;
	}

	if (down_interruptible (&events->sem))
	if (mutex_lock_interruptible (&events->mtx))
		return -ERESTARTSYS;

	memcpy (event, &events->events[events->eventr],
@@ -205,7 +205,7 @@ static int dvb_frontend_get_event(struct dvb_frontend *fe,

	events->eventr = (events->eventr + 1) % MAX_EVENT;

	up (&events->sem);
	mutex_unlock(&events->mtx);

	return 0;
}
@@ -1126,7 +1126,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb,
	init_MUTEX (&fepriv->sem);
	init_waitqueue_head (&fepriv->wait_queue);
	init_waitqueue_head (&fepriv->events.wait_queue);
	init_MUTEX (&fepriv->events.sem);
	mutex_init(&fepriv->events.mtx);
	fe->dvb = dvb;
	fepriv->inversion = INVERSION_OFF;

+2 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/delay.h>
#include <linux/mutex.h>

#include <linux/dvb/frontend.h>

@@ -142,7 +143,7 @@ struct dvb_fe_events {
	int			  eventr;
	int			  overflow;
	wait_queue_head_t	  wait_queue;
	struct semaphore	  sem;
	struct mutex		  mtx;
};

struct dvb_frontend {