lkml.org 
[lkml]   [2007]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 5/5] 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: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>

    --

    diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
    index b6c7f66..e35dd17 100644
    --- a/drivers/media/dvb/dvb-core/dvb_frontend.c
    +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
    @@ -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;
    }
    @@ -1080,7 +1080,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;

    diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h
    index a770a87..f95de63 100644
    --- a/drivers/media/dvb/dvb-core/dvb_frontend.h
    +++ b/drivers/media/dvb/dvb-core/dvb_frontend.h
    @@ -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 {

    --
    Matthias Kaehlcke
    Linux Application Developer
    Barcelona

    El camino se hace al andar
    (Antonio Machado)
    .''`.
    using free software / Debian GNU/Linux | http://debian.org : :' :
    `. `'`
    gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-07-29 23:47    [W:0.025 / U:31.220 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site