You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
V4L/DVB (3318b): sem2mutex: drivers/media/, #2
Semaphore to mutex conversion. The conversion was generated via scripts, and the result was validated automatically via a script as well. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
538f9630af
commit
3593cab5d6
@@ -21,7 +21,7 @@
|
||||
#include <media/saa7146.h>
|
||||
|
||||
LIST_HEAD(saa7146_devices);
|
||||
DECLARE_MUTEX(saa7146_devices_lock);
|
||||
DEFINE_MUTEX(saa7146_devices_lock);
|
||||
|
||||
static int saa7146_num;
|
||||
|
||||
@@ -402,11 +402,11 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
|
||||
|
||||
pci_set_drvdata(pci, dev);
|
||||
|
||||
init_MUTEX(&dev->lock);
|
||||
mutex_init(&dev->lock);
|
||||
spin_lock_init(&dev->int_slock);
|
||||
spin_lock_init(&dev->slock);
|
||||
|
||||
init_MUTEX(&dev->i2c_lock);
|
||||
mutex_init(&dev->i2c_lock);
|
||||
|
||||
dev->module = THIS_MODULE;
|
||||
init_waitqueue_head(&dev->i2c_wq);
|
||||
|
||||
@@ -17,18 +17,18 @@ int saa7146_res_get(struct saa7146_fh *fh, unsigned int bit)
|
||||
}
|
||||
|
||||
/* is it free? */
|
||||
down(&dev->lock);
|
||||
mutex_lock(&dev->lock);
|
||||
if (vv->resources & bit) {
|
||||
DEB_D(("locked! vv->resources:0x%02x, we want:0x%02x\n",vv->resources,bit));
|
||||
/* no, someone else uses it */
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
return 0;
|
||||
}
|
||||
/* it's free, grab it */
|
||||
fh->resources |= bit;
|
||||
vv->resources |= bit;
|
||||
DEB_D(("res: get 0x%02x, cur:0x%02x\n",bit,vv->resources));
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -40,11 +40,11 @@ void saa7146_res_free(struct saa7146_fh *fh, unsigned int bits)
|
||||
if ((fh->resources & bits) != bits)
|
||||
BUG();
|
||||
|
||||
down(&dev->lock);
|
||||
mutex_lock(&dev->lock);
|
||||
fh->resources &= ~bits;
|
||||
vv->resources &= ~bits;
|
||||
DEB_D(("res: put 0x%02x, cur:0x%02x\n",bits,vv->resources));
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
}
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@ static int fops_open(struct inode *inode, struct file *file)
|
||||
|
||||
DEB_EE(("inode:%p, file:%p, minor:%d\n",inode,file,minor));
|
||||
|
||||
if (down_interruptible(&saa7146_devices_lock))
|
||||
if (mutex_lock_interruptible(&saa7146_devices_lock))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
list_for_each(list,&saa7146_devices) {
|
||||
@@ -276,7 +276,7 @@ out:
|
||||
kfree(fh);
|
||||
file->private_data = NULL;
|
||||
}
|
||||
up(&saa7146_devices_lock);
|
||||
mutex_unlock(&saa7146_devices_lock);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ static int fops_release(struct inode *inode, struct file *file)
|
||||
|
||||
DEB_EE(("inode:%p, file:%p\n",inode,file));
|
||||
|
||||
if (down_interruptible(&saa7146_devices_lock))
|
||||
if (mutex_lock_interruptible(&saa7146_devices_lock))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
|
||||
@@ -303,7 +303,7 @@ static int fops_release(struct inode *inode, struct file *file)
|
||||
file->private_data = NULL;
|
||||
kfree(fh);
|
||||
|
||||
up(&saa7146_devices_lock);
|
||||
mutex_unlock(&saa7146_devices_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ int saa7146_i2c_transfer(struct saa7146_dev *dev, const struct i2c_msg *msgs, in
|
||||
int address_err = 0;
|
||||
int short_delay = 0;
|
||||
|
||||
if (down_interruptible (&dev->i2c_lock))
|
||||
if (mutex_lock_interruptible(&dev->i2c_lock))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
for(i=0;i<num;i++) {
|
||||
@@ -366,7 +366,7 @@ out:
|
||||
}
|
||||
}
|
||||
|
||||
up(&dev->i2c_lock);
|
||||
mutex_unlock(&dev->i2c_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@@ -410,7 +410,7 @@ static int vbi_open(struct saa7146_dev *dev, struct file *file)
|
||||
V4L2_FIELD_SEQ_TB, // FIXME: does this really work?
|
||||
sizeof(struct saa7146_buf),
|
||||
file);
|
||||
init_MUTEX(&fh->vbi_q.lock);
|
||||
mutex_init(&fh->vbi_q.lock);
|
||||
|
||||
init_timer(&fh->vbi_read_timeout);
|
||||
fh->vbi_read_timeout.function = vbi_read_timeout;
|
||||
|
||||
@@ -378,20 +378,20 @@ static int s_fmt(struct saa7146_fh *fh, struct v4l2_format *f)
|
||||
err = try_win(dev,&f->fmt.win);
|
||||
if (0 != err)
|
||||
return err;
|
||||
down(&dev->lock);
|
||||
mutex_lock(&dev->lock);
|
||||
fh->ov.win = f->fmt.win;
|
||||
fh->ov.nclips = f->fmt.win.clipcount;
|
||||
if (fh->ov.nclips > 16)
|
||||
fh->ov.nclips = 16;
|
||||
if (copy_from_user(fh->ov.clips,f->fmt.win.clips,sizeof(struct v4l2_clip)*fh->ov.nclips)) {
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
/* fh->ov.fh is used to indicate that we have valid overlay informations, too */
|
||||
fh->ov.fh = fh;
|
||||
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
|
||||
/* check if our current overlay is active */
|
||||
if (IS_OVERLAY_ACTIVE(fh) != 0) {
|
||||
@@ -516,7 +516,7 @@ static int set_control(struct saa7146_fh *fh, struct v4l2_control *c)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
down(&dev->lock);
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
switch (ctrl->type) {
|
||||
case V4L2_CTRL_TYPE_BOOLEAN:
|
||||
@@ -560,7 +560,7 @@ static int set_control(struct saa7146_fh *fh, struct v4l2_control *c)
|
||||
/* fixme: we can support changing VFLIP and HFLIP here... */
|
||||
if (IS_CAPTURE_ACTIVE(fh) != 0) {
|
||||
DEB_D(("V4L2_CID_HFLIP while active capture.\n"));
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
return -EINVAL;
|
||||
}
|
||||
vv->hflip = c->value;
|
||||
@@ -568,7 +568,7 @@ static int set_control(struct saa7146_fh *fh, struct v4l2_control *c)
|
||||
case V4L2_CID_VFLIP:
|
||||
if (IS_CAPTURE_ACTIVE(fh) != 0) {
|
||||
DEB_D(("V4L2_CID_VFLIP while active capture.\n"));
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
return -EINVAL;
|
||||
}
|
||||
vv->vflip = c->value;
|
||||
@@ -577,7 +577,7 @@ static int set_control(struct saa7146_fh *fh, struct v4l2_control *c)
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
|
||||
if (IS_OVERLAY_ACTIVE(fh) != 0) {
|
||||
saa7146_stop_preview(fh);
|
||||
@@ -939,7 +939,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
|
||||
}
|
||||
}
|
||||
|
||||
down(&dev->lock);
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
/* ok, accept it */
|
||||
vv->ov_fb = *fb;
|
||||
@@ -948,7 +948,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
|
||||
vv->ov_fb.fmt.bytesperline =
|
||||
vv->ov_fb.fmt.width*fmt->depth/8;
|
||||
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1086,7 +1086,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
|
||||
}
|
||||
}
|
||||
|
||||
down(&dev->lock);
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
for(i = 0; i < dev->ext_vv_data->num_stds; i++)
|
||||
if (*id & dev->ext_vv_data->stds[i].id)
|
||||
@@ -1098,7 +1098,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
|
||||
found = 1;
|
||||
}
|
||||
|
||||
up(&dev->lock);
|
||||
mutex_unlock(&dev->lock);
|
||||
|
||||
if (vv->ov_suspend != NULL) {
|
||||
saa7146_start_preview(vv->ov_suspend);
|
||||
@@ -1201,11 +1201,11 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
|
||||
DEB_D(("VIDIOCGMBUF \n"));
|
||||
|
||||
q = &fh->video_q;
|
||||
down(&q->lock);
|
||||
mutex_lock(&q->lock);
|
||||
err = videobuf_mmap_setup(q,gbuffers,gbufsize,
|
||||
V4L2_MEMORY_MMAP);
|
||||
if (err < 0) {
|
||||
up(&q->lock);
|
||||
mutex_unlock(&q->lock);
|
||||
return err;
|
||||
}
|
||||
memset(mbuf,0,sizeof(*mbuf));
|
||||
@@ -1213,7 +1213,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
|
||||
mbuf->size = gbuffers * gbufsize;
|
||||
for (i = 0; i < gbuffers; i++)
|
||||
mbuf->offsets[i] = i * gbufsize;
|
||||
up(&q->lock);
|
||||
mutex_unlock(&q->lock);
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
@@ -1414,7 +1414,7 @@ static int video_open(struct saa7146_dev *dev, struct file *file)
|
||||
sizeof(struct saa7146_buf),
|
||||
file);
|
||||
|
||||
init_MUTEX(&fh->video_q.lock);
|
||||
mutex_init(&fh->video_q.lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include "flexcop-reg.h"
|
||||
|
||||
@@ -73,8 +74,7 @@ struct flexcop_device {
|
||||
int (*fe_sleep) (struct dvb_frontend *);
|
||||
|
||||
struct i2c_adapter i2c_adap;
|
||||
struct semaphore i2c_sem;
|
||||
|
||||
struct mutex i2c_mutex;
|
||||
struct module *owner;
|
||||
|
||||
/* options and status */
|
||||
|
||||
@@ -135,7 +135,7 @@ static int flexcop_master_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs
|
||||
struct flexcop_device *fc = i2c_get_adapdata(i2c_adap);
|
||||
int i, ret = 0;
|
||||
|
||||
if (down_interruptible(&fc->i2c_sem))
|
||||
if (mutex_lock_interruptible(&fc->i2c_mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
/* reading */
|
||||
@@ -161,7 +161,7 @@ static int flexcop_master_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs
|
||||
else
|
||||
ret = num;
|
||||
|
||||
up(&fc->i2c_sem);
|
||||
mutex_unlock(&fc->i2c_mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -180,7 +180,7 @@ int flexcop_i2c_init(struct flexcop_device *fc)
|
||||
{
|
||||
int ret;
|
||||
|
||||
sema_init(&fc->i2c_sem,1);
|
||||
mutex_init(&fc->i2c_mutex);
|
||||
|
||||
memset(&fc->i2c_adap, 0, sizeof(struct i2c_adapter));
|
||||
strncpy(fc->i2c_adap.name, "B2C2 FlexCop device",I2C_NAME_SIZE);
|
||||
|
||||
@@ -344,7 +344,7 @@ bt878_device_control(struct bt878 *bt, unsigned int cmd, union dst_gpio_packet *
|
||||
int retval;
|
||||
|
||||
retval = 0;
|
||||
if (down_interruptible (&bt->gpio_lock))
|
||||
if (mutex_lock_interruptible(&bt->gpio_lock))
|
||||
return -ERESTARTSYS;
|
||||
/* special gpio signal */
|
||||
switch (cmd) {
|
||||
@@ -375,7 +375,7 @@ bt878_device_control(struct bt878 *bt, unsigned int cmd, union dst_gpio_packet *
|
||||
retval = -EINVAL;
|
||||
break;
|
||||
}
|
||||
up(&bt->gpio_lock);
|
||||
mutex_unlock(&bt->gpio_lock);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include "bt848.h"
|
||||
#include "bttv.h"
|
||||
|
||||
@@ -108,7 +110,7 @@ struct cards {
|
||||
extern int bt878_num;
|
||||
|
||||
struct bt878 {
|
||||
struct semaphore gpio_lock;
|
||||
struct mutex gpio_lock;
|
||||
unsigned int nr;
|
||||
unsigned int bttv_nr;
|
||||
struct i2c_adapter *adapter;
|
||||
|
||||
@@ -910,7 +910,7 @@ static int dst_get_device_id(struct dst_state *state)
|
||||
|
||||
static int dst_probe(struct dst_state *state)
|
||||
{
|
||||
sema_init(&state->dst_mutex, 1);
|
||||
mutex_init(&state->dst_mutex);
|
||||
if ((rdc_8820_reset(state)) < 0) {
|
||||
dprintk(verbose, DST_ERROR, 1, "RDC 8820 RESET Failed.");
|
||||
return -1;
|
||||
@@ -962,7 +962,7 @@ int dst_command(struct dst_state *state, u8 *data, u8 len)
|
||||
{
|
||||
u8 reply;
|
||||
|
||||
down(&state->dst_mutex);
|
||||
mutex_lock(&state->dst_mutex);
|
||||
if ((dst_comm_init(state)) < 0) {
|
||||
dprintk(verbose, DST_NOTICE, 1, "DST Communication Initialization Failed.");
|
||||
goto error;
|
||||
@@ -1013,11 +1013,11 @@ int dst_command(struct dst_state *state, u8 *data, u8 len)
|
||||
dprintk(verbose, DST_INFO, 1, "checksum failure");
|
||||
goto error;
|
||||
}
|
||||
up(&state->dst_mutex);
|
||||
mutex_unlock(&state->dst_mutex);
|
||||
return 0;
|
||||
|
||||
error:
|
||||
up(&state->dst_mutex);
|
||||
mutex_unlock(&state->dst_mutex);
|
||||
return -EIO;
|
||||
|
||||
}
|
||||
@@ -1128,7 +1128,7 @@ static int dst_write_tuna(struct dvb_frontend *fe)
|
||||
dst_set_voltage(fe, SEC_VOLTAGE_13);
|
||||
}
|
||||
state->diseq_flags &= ~(HAS_LOCK | ATTEMPT_TUNE);
|
||||
down(&state->dst_mutex);
|
||||
mutex_lock(&state->dst_mutex);
|
||||
if ((dst_comm_init(state)) < 0) {
|
||||
dprintk(verbose, DST_DEBUG, 1, "DST Communication initialization failed.");
|
||||
goto error;
|
||||
@@ -1160,11 +1160,11 @@ static int dst_write_tuna(struct dvb_frontend *fe)
|
||||
state->diseq_flags |= ATTEMPT_TUNE;
|
||||
retval = dst_get_tuna(state);
|
||||
werr:
|
||||
up(&state->dst_mutex);
|
||||
mutex_unlock(&state->dst_mutex);
|
||||
return retval;
|
||||
|
||||
error:
|
||||
up(&state->dst_mutex);
|
||||
mutex_unlock(&state->dst_mutex);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ static int dst_ci_command(struct dst_state* state, u8 * data, u8 *ca_string, u8
|
||||
{
|
||||
u8 reply;
|
||||
|
||||
down(&state->dst_mutex);
|
||||
mutex_lock(&state->dst_mutex);
|
||||
dst_comm_init(state);
|
||||
msleep(65);
|
||||
|
||||
@@ -110,11 +110,11 @@ static int dst_ci_command(struct dst_state* state, u8 * data, u8 *ca_string, u8
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
up(&state->dst_mutex);
|
||||
mutex_unlock(&state->dst_mutex);
|
||||
return 0;
|
||||
|
||||
error:
|
||||
up(&state->dst_mutex);
|
||||
mutex_unlock(&state->dst_mutex);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <linux/smp_lock.h>
|
||||
#include <linux/dvb/frontend.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/mutex.h>
|
||||
#include "bt878.h"
|
||||
|
||||
#include "dst_ca.h"
|
||||
@@ -121,7 +122,7 @@ struct dst_state {
|
||||
u8 vendor[8];
|
||||
u8 board_info[8];
|
||||
|
||||
struct semaphore dst_mutex;
|
||||
struct mutex dst_mutex;
|
||||
};
|
||||
|
||||
struct dst_types {
|
||||
|
||||
@@ -76,13 +76,13 @@ static int dvb_bt8xx_start_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
if (!dvbdmx->dmx.frontend)
|
||||
return -EINVAL;
|
||||
|
||||
down(&card->lock);
|
||||
mutex_lock(&card->lock);
|
||||
card->nfeeds++;
|
||||
rc = card->nfeeds;
|
||||
if (card->nfeeds == 1)
|
||||
bt878_start(card->bt, card->gpio_mode,
|
||||
card->op_sync_orin, card->irq_err_ignore);
|
||||
up(&card->lock);
|
||||
mutex_unlock(&card->lock);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -96,11 +96,11 @@ static int dvb_bt8xx_stop_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
if (!dvbdmx->dmx.frontend)
|
||||
return -EINVAL;
|
||||
|
||||
down(&card->lock);
|
||||
mutex_lock(&card->lock);
|
||||
card->nfeeds--;
|
||||
if (card->nfeeds == 0)
|
||||
bt878_stop(card->bt);
|
||||
up(&card->lock);
|
||||
mutex_unlock(&card->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -788,7 +788,7 @@ static int dvb_bt8xx_probe(struct bttv_sub_device *sub)
|
||||
if (!(card = kzalloc(sizeof(struct dvb_bt8xx_card), GFP_KERNEL)))
|
||||
return -ENOMEM;
|
||||
|
||||
init_MUTEX(&card->lock);
|
||||
mutex_init(&card->lock);
|
||||
card->bttv_nr = sub->core->nr;
|
||||
strncpy(card->card_name, sub->core->name, sizeof(sub->core->name));
|
||||
card->i2c_adapter = &sub->core->i2c_adap;
|
||||
@@ -881,7 +881,7 @@ static int dvb_bt8xx_probe(struct bttv_sub_device *sub)
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
init_MUTEX(&card->bt->gpio_lock);
|
||||
mutex_init(&card->bt->gpio_lock);
|
||||
card->bt->bttv_nr = sub->core->nr;
|
||||
|
||||
if ( (ret = dvb_bt8xx_load_card(card, sub->core->type)) ) {
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#define DVB_BT8XX_H
|
||||
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/mutex.h>
|
||||
#include "dvbdev.h"
|
||||
#include "dvb_net.h"
|
||||
#include "bttv.h"
|
||||
@@ -38,7 +39,7 @@
|
||||
#include "lgdt330x.h"
|
||||
|
||||
struct dvb_bt8xx_card {
|
||||
struct semaphore lock;
|
||||
struct mutex lock;
|
||||
int nfeeds;
|
||||
char card_name[32];
|
||||
struct dvb_adapter dvb_adapter;
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/dvb/frontend.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include "dmxdev.h"
|
||||
#include "dvb_demux.h"
|
||||
@@ -116,7 +117,7 @@ static struct dvb_frontend_info cinergyt2_fe_info = {
|
||||
struct cinergyt2 {
|
||||
struct dvb_demux demux;
|
||||
struct usb_device *udev;
|
||||
struct semaphore sem;
|
||||
struct mutex sem;
|
||||
struct dvb_adapter adapter;
|
||||
struct dvb_device *fedev;
|
||||
struct dmxdev dmxdev;
|
||||
@@ -345,14 +346,14 @@ static int cinergyt2_start_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
struct dvb_demux *demux = dvbdmxfeed->demux;
|
||||
struct cinergyt2 *cinergyt2 = demux->priv;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (cinergyt2->streaming == 0)
|
||||
cinergyt2_start_stream_xfer(cinergyt2);
|
||||
|
||||
cinergyt2->streaming++;
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -361,13 +362,13 @@ static int cinergyt2_stop_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
struct dvb_demux *demux = dvbdmxfeed->demux;
|
||||
struct cinergyt2 *cinergyt2 = demux->priv;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (--cinergyt2->streaming == 0)
|
||||
cinergyt2_stop_stream_xfer(cinergyt2);
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -483,11 +484,11 @@ static int cinergyt2_open (struct inode *inode, struct file *file)
|
||||
struct cinergyt2 *cinergyt2 = dvbdev->priv;
|
||||
int err = -ERESTARTSYS;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if ((err = dvb_generic_open(inode, file))) {
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -499,7 +500,7 @@ static int cinergyt2_open (struct inode *inode, struct file *file)
|
||||
|
||||
atomic_inc(&cinergyt2->inuse);
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -517,7 +518,7 @@ static int cinergyt2_release (struct inode *inode, struct file *file)
|
||||
struct dvb_device *dvbdev = file->private_data;
|
||||
struct cinergyt2 *cinergyt2 = dvbdev->priv;
|
||||
|
||||
if (down_interruptible(&cinergyt2->sem))
|
||||
if (mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (!cinergyt2->disconnect_pending && (file->f_flags & O_ACCMODE) != O_RDONLY) {
|
||||
@@ -526,7 +527,7 @@ static int cinergyt2_release (struct inode *inode, struct file *file)
|
||||
cinergyt2_sleep(cinergyt2, 1);
|
||||
}
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
|
||||
if (atomic_dec_and_test(&cinergyt2->inuse) && cinergyt2->disconnect_pending) {
|
||||
warn("delayed unregister in release");
|
||||
@@ -541,12 +542,12 @@ static unsigned int cinergyt2_poll (struct file *file, struct poll_table_struct
|
||||
struct dvb_device *dvbdev = file->private_data;
|
||||
struct cinergyt2 *cinergyt2 = dvbdev->priv;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
poll_wait(file, &cinergyt2->poll_wq, wait);
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
|
||||
return (POLLIN | POLLRDNORM | POLLPRI);
|
||||
}
|
||||
@@ -613,7 +614,7 @@ static int cinergyt2_ioctl (struct inode *inode, struct file *file,
|
||||
if (copy_from_user(&p, (void __user*) arg, sizeof(p)))
|
||||
return -EFAULT;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
param->cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
|
||||
@@ -629,7 +630,7 @@ static int cinergyt2_ioctl (struct inode *inode, struct file *file,
|
||||
(char *) param, sizeof(*param),
|
||||
NULL, 0);
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
@@ -724,7 +725,7 @@ static void cinergyt2_query_rc (void *data)
|
||||
struct cinergyt2_rc_event rc_events[12];
|
||||
int n, len, i;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return;
|
||||
|
||||
len = cinergyt2_command(cinergyt2, buf, sizeof(buf),
|
||||
@@ -784,7 +785,7 @@ out:
|
||||
schedule_delayed_work(&cinergyt2->rc_query_work,
|
||||
msecs_to_jiffies(RC_QUERY_INTERVAL));
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
}
|
||||
|
||||
static int cinergyt2_register_rc(struct cinergyt2 *cinergyt2)
|
||||
@@ -849,7 +850,7 @@ static void cinergyt2_query (void *data)
|
||||
uint8_t lock_bits;
|
||||
uint32_t unc;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return;
|
||||
|
||||
unc = s->uncorrected_block_count;
|
||||
@@ -868,7 +869,7 @@ static void cinergyt2_query (void *data)
|
||||
schedule_delayed_work(&cinergyt2->query_work,
|
||||
msecs_to_jiffies(QUERY_INTERVAL));
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
}
|
||||
|
||||
static int cinergyt2_probe (struct usb_interface *intf,
|
||||
@@ -885,7 +886,7 @@ static int cinergyt2_probe (struct usb_interface *intf,
|
||||
memset (cinergyt2, 0, sizeof (struct cinergyt2));
|
||||
usb_set_intfdata (intf, (void *) cinergyt2);
|
||||
|
||||
init_MUTEX(&cinergyt2->sem);
|
||||
mutex_init(&cinergyt2->sem);
|
||||
init_waitqueue_head (&cinergyt2->poll_wq);
|
||||
INIT_WORK(&cinergyt2->query_work, cinergyt2_query, cinergyt2);
|
||||
|
||||
@@ -967,7 +968,7 @@ static int cinergyt2_suspend (struct usb_interface *intf, pm_message_t state)
|
||||
{
|
||||
struct cinergyt2 *cinergyt2 = usb_get_intfdata (intf);
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (state.event > PM_EVENT_ON) {
|
||||
@@ -981,7 +982,7 @@ static int cinergyt2_suspend (struct usb_interface *intf, pm_message_t state)
|
||||
cinergyt2_sleep(cinergyt2, 1);
|
||||
}
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -990,7 +991,7 @@ static int cinergyt2_resume (struct usb_interface *intf)
|
||||
struct cinergyt2 *cinergyt2 = usb_get_intfdata (intf);
|
||||
struct dvbt_set_parameters_msg *param = &cinergyt2->param;
|
||||
|
||||
if (cinergyt2->disconnect_pending || down_interruptible(&cinergyt2->sem))
|
||||
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (!cinergyt2->sleeping) {
|
||||
@@ -1003,7 +1004,7 @@ static int cinergyt2_resume (struct usb_interface *intf)
|
||||
|
||||
cinergyt2_resume_rc(cinergyt2);
|
||||
|
||||
up(&cinergyt2->sem);
|
||||
mutex_unlock(&cinergyt2->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -175,12 +175,12 @@ static int dvb_dvr_open(struct inode *inode, struct file *file)
|
||||
|
||||
dprintk ("function : %s\n", __FUNCTION__);
|
||||
|
||||
if (down_interruptible (&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if ((file->f_flags&O_ACCMODE)==O_RDWR) {
|
||||
if (!(dmxdev->capabilities&DMXDEV_CAP_DUPLEX)) {
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
@@ -190,7 +190,7 @@ static int dvb_dvr_open(struct inode *inode, struct file *file)
|
||||
dmxdev->dvr_buffer.size=DVR_BUFFER_SIZE;
|
||||
dmxdev->dvr_buffer.data=vmalloc(DVR_BUFFER_SIZE);
|
||||
if (!dmxdev->dvr_buffer.data) {
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
@@ -199,20 +199,20 @@ static int dvb_dvr_open(struct inode *inode, struct file *file)
|
||||
dmxdev->dvr_orig_fe=dmxdev->demux->frontend;
|
||||
|
||||
if (!dmxdev->demux->write) {
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
front=get_fe(dmxdev->demux, DMX_MEMORY_FE);
|
||||
|
||||
if (!front) {
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
dmxdev->demux->disconnect_frontend(dmxdev->demux);
|
||||
dmxdev->demux->connect_frontend(dmxdev->demux, front);
|
||||
}
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ static int dvb_dvr_release(struct inode *inode, struct file *file)
|
||||
struct dvb_device *dvbdev = file->private_data;
|
||||
struct dmxdev *dmxdev = dvbdev->priv;
|
||||
|
||||
if (down_interruptible (&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if ((file->f_flags&O_ACCMODE)==O_WRONLY) {
|
||||
@@ -239,7 +239,7 @@ static int dvb_dvr_release(struct inode *inode, struct file *file)
|
||||
vfree(mem);
|
||||
}
|
||||
}
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -254,10 +254,10 @@ static ssize_t dvb_dvr_write(struct file *file, const char __user *buf,
|
||||
return -EOPNOTSUPP;
|
||||
if ((file->f_flags&O_ACCMODE)!=O_WRONLY)
|
||||
return -EINVAL;
|
||||
if (down_interruptible (&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
ret=dmxdev->demux->write(dmxdev->demux, buf, count);
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -268,11 +268,11 @@ static ssize_t dvb_dvr_read(struct file *file, char __user *buf, size_t count,
|
||||
struct dmxdev *dmxdev = dvbdev->priv;
|
||||
int ret;
|
||||
|
||||
//down(&dmxdev->mutex);
|
||||
//mutex_lock(&dmxdev->mutex);
|
||||
ret= dvb_dmxdev_buffer_read(&dmxdev->dvr_buffer,
|
||||
file->f_flags&O_NONBLOCK,
|
||||
buf, count, ppos);
|
||||
//up(&dmxdev->mutex);
|
||||
//mutex_unlock(&dmxdev->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -688,7 +688,7 @@ static int dvb_demux_open(struct inode *inode, struct file *file)
|
||||
if (!dmxdev->filter)
|
||||
return -EINVAL;
|
||||
|
||||
if (down_interruptible(&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
for (i=0; i<dmxdev->filternum; i++)
|
||||
@@ -696,12 +696,12 @@ static int dvb_demux_open(struct inode *inode, struct file *file)
|
||||
break;
|
||||
|
||||
if (i==dmxdev->filternum) {
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -EMFILE;
|
||||
}
|
||||
|
||||
dmxdevfilter=&dmxdev->filter[i];
|
||||
sema_init(&dmxdevfilter->mutex, 1);
|
||||
mutex_init(&dmxdevfilter->mutex);
|
||||
dmxdevfilter->dvbdev=dmxdev->dvbdev;
|
||||
file->private_data=dmxdevfilter;
|
||||
|
||||
@@ -711,18 +711,18 @@ static int dvb_demux_open(struct inode *inode, struct file *file)
|
||||
dmxdevfilter->feed.ts=NULL;
|
||||
init_timer(&dmxdevfilter->timer);
|
||||
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int dvb_dmxdev_filter_free(struct dmxdev *dmxdev, struct dmxdev_filter *dmxdevfilter)
|
||||
{
|
||||
if (down_interruptible(&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (down_interruptible(&dmxdevfilter->mutex)) {
|
||||
up(&dmxdev->mutex);
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
|
||||
@@ -740,8 +740,8 @@ static int dvb_dmxdev_filter_free(struct dmxdev *dmxdev, struct dmxdev_filter *d
|
||||
|
||||
dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_FREE);
|
||||
wake_up(&dmxdevfilter->buffer.queue);
|
||||
up(&dmxdevfilter->mutex);
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -841,7 +841,7 @@ dvb_demux_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
|
||||
struct dmxdev_filter *dmxdevfilter= file->private_data;
|
||||
int ret=0;
|
||||
|
||||
if (down_interruptible(&dmxdevfilter->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (dmxdevfilter->type==DMXDEV_TYPE_SEC)
|
||||
@@ -851,7 +851,7 @@ dvb_demux_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
|
||||
file->f_flags&O_NONBLOCK,
|
||||
buf, count, ppos);
|
||||
|
||||
up(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -864,58 +864,58 @@ static int dvb_demux_do_ioctl(struct inode *inode, struct file *file,
|
||||
unsigned long arg=(unsigned long) parg;
|
||||
int ret=0;
|
||||
|
||||
if (down_interruptible (&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
switch (cmd) {
|
||||
case DMX_START:
|
||||
if (down_interruptible(&dmxdevfilter->mutex)) {
|
||||
up(&dmxdev->mutex);
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
if (dmxdevfilter->state<DMXDEV_STATE_SET)
|
||||
ret = -EINVAL;
|
||||
else
|
||||
ret = dvb_dmxdev_filter_start(dmxdevfilter);
|
||||
up(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
break;
|
||||
|
||||
case DMX_STOP:
|
||||
if (down_interruptible(&dmxdevfilter->mutex)) {
|
||||
up(&dmxdev->mutex);
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
ret=dvb_dmxdev_filter_stop(dmxdevfilter);
|
||||
up(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
break;
|
||||
|
||||
case DMX_SET_FILTER:
|
||||
if (down_interruptible(&dmxdevfilter->mutex)) {
|
||||
up(&dmxdev->mutex);
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
ret = dvb_dmxdev_filter_set(dmxdev, dmxdevfilter,
|
||||
(struct dmx_sct_filter_params *)parg);
|
||||
up(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
break;
|
||||
|
||||
case DMX_SET_PES_FILTER:
|
||||
if (down_interruptible(&dmxdevfilter->mutex)) {
|
||||
up(&dmxdev->mutex);
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
ret=dvb_dmxdev_pes_filter_set(dmxdev, dmxdevfilter,
|
||||
(struct dmx_pes_filter_params *)parg);
|
||||
up(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
break;
|
||||
|
||||
case DMX_SET_BUFFER_SIZE:
|
||||
if (down_interruptible(&dmxdevfilter->mutex)) {
|
||||
up(&dmxdev->mutex);
|
||||
if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
ret=dvb_dmxdev_set_buffer_size(dmxdevfilter, arg);
|
||||
up(&dmxdevfilter->mutex);
|
||||
mutex_unlock(&dmxdevfilter->mutex);
|
||||
break;
|
||||
|
||||
case DMX_GET_EVENT:
|
||||
@@ -959,7 +959,7 @@ static int dvb_demux_do_ioctl(struct inode *inode, struct file *file,
|
||||
default:
|
||||
ret=-EINVAL;
|
||||
}
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1030,7 +1030,7 @@ static int dvb_dvr_do_ioctl(struct inode *inode, struct file *file,
|
||||
|
||||
int ret=0;
|
||||
|
||||
if (down_interruptible (&dmxdev->mutex))
|
||||
if (mutex_lock_interruptible(&dmxdev->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
switch (cmd) {
|
||||
@@ -1042,7 +1042,7 @@ static int dvb_dvr_do_ioctl(struct inode *inode, struct file *file,
|
||||
default:
|
||||
ret=-EINVAL;
|
||||
}
|
||||
up(&dmxdev->mutex);
|
||||
mutex_unlock(&dmxdev->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1113,7 +1113,7 @@ dvb_dmxdev_init(struct dmxdev *dmxdev, struct dvb_adapter *dvb_adapter)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
sema_init(&dmxdev->mutex, 1);
|
||||
mutex_init(&dmxdev->mutex);
|
||||
spin_lock_init(&dmxdev->lock);
|
||||
for (i=0; i<dmxdev->filternum; i++) {
|
||||
dmxdev->filter[i].dev=dmxdev;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
#include <linux/wait.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/string.h>
|
||||
#include <asm/semaphore.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include <linux/dvb/dmx.h>
|
||||
|
||||
@@ -83,7 +83,7 @@ struct dmxdev_filter {
|
||||
struct dmxdev *dev;
|
||||
struct dmxdev_buffer buffer;
|
||||
|
||||
struct semaphore mutex;
|
||||
struct mutex mutex;
|
||||
|
||||
/* only for sections */
|
||||
struct timer_list timer;
|
||||
@@ -117,7 +117,7 @@ struct dmxdev {
|
||||
struct dmxdev_buffer dvr_buffer;
|
||||
#define DVR_BUFFER_SIZE (10*188*1024)
|
||||
|
||||
struct semaphore mutex;
|
||||
struct mutex mutex;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
|
||||
@@ -589,18 +589,18 @@ static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type,
|
||||
if (pid > DMX_MAX_PID)
|
||||
return -EINVAL;
|
||||
|
||||
if (down_interruptible(&demux->mutex))
|
||||
if (mutex_lock_interruptible(&demux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (ts_type & TS_DECODER) {
|
||||
if (pes_type >= DMX_TS_PES_OTHER) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (demux->pesfilter[pes_type] &&
|
||||
demux->pesfilter[pes_type] != feed) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -622,14 +622,14 @@ static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type,
|
||||
#else
|
||||
feed->buffer = vmalloc(feed->buffer_size);
|
||||
if (!feed->buffer) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
feed->state = DMX_STATE_READY;
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -640,21 +640,21 @@ static int dmx_ts_feed_start_filtering(struct dmx_ts_feed *ts_feed)
|
||||
struct dvb_demux *demux = feed->demux;
|
||||
int ret;
|
||||
|
||||
if (down_interruptible(&demux->mutex))
|
||||
if (mutex_lock_interruptible(&demux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (feed->state != DMX_STATE_READY || feed->type != DMX_TYPE_TS) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!demux->start_feed) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if ((ret = demux->start_feed(feed)) < 0) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -662,7 +662,7 @@ static int dmx_ts_feed_start_filtering(struct dmx_ts_feed *ts_feed)
|
||||
ts_feed->is_filtering = 1;
|
||||
feed->state = DMX_STATE_GO;
|
||||
spin_unlock_irq(&demux->lock);
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -673,16 +673,16 @@ static int dmx_ts_feed_stop_filtering(struct dmx_ts_feed *ts_feed)
|
||||
struct dvb_demux *demux = feed->demux;
|
||||
int ret;
|
||||
|
||||
if (down_interruptible(&demux->mutex))
|
||||
if (mutex_lock_interruptible(&demux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (feed->state < DMX_STATE_GO) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!demux->stop_feed) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -692,7 +692,7 @@ static int dmx_ts_feed_stop_filtering(struct dmx_ts_feed *ts_feed)
|
||||
ts_feed->is_filtering = 0;
|
||||
feed->state = DMX_STATE_ALLOCATED;
|
||||
spin_unlock_irq(&demux->lock);
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -704,11 +704,11 @@ static int dvbdmx_allocate_ts_feed(struct dmx_demux *dmx,
|
||||
struct dvb_demux *demux = (struct dvb_demux *)dmx;
|
||||
struct dvb_demux_feed *feed;
|
||||
|
||||
if (down_interruptible(&demux->mutex))
|
||||
if (mutex_lock_interruptible(&demux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (!(feed = dvb_dmx_feed_alloc(demux))) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
@@ -729,7 +729,7 @@ static int dvbdmx_allocate_ts_feed(struct dmx_demux *dmx,
|
||||
|
||||
if (!(feed->filter = dvb_dmx_filter_alloc(demux))) {
|
||||
feed->state = DMX_STATE_FREE;
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
@@ -737,7 +737,7 @@ static int dvbdmx_allocate_ts_feed(struct dmx_demux *dmx,
|
||||
feed->filter->feed = feed;
|
||||
feed->filter->state = DMX_STATE_READY;
|
||||
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -748,11 +748,11 @@ static int dvbdmx_release_ts_feed(struct dmx_demux *dmx,
|
||||
struct dvb_demux *demux = (struct dvb_demux *)dmx;
|
||||
struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed;
|
||||
|
||||
if (down_interruptible(&demux->mutex))
|
||||
if (mutex_lock_interruptible(&demux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (feed->state == DMX_STATE_FREE) {
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
#ifndef NOBUFS
|
||||
@@ -770,7 +770,7 @@ static int dvbdmx_release_ts_feed(struct dmx_demux *dmx,
|
||||
if (feed->ts_type & TS_DECODER && feed->pes_type < DMX_TS_PES_OTHER)
|
||||
demux->pesfilter[feed->pes_type] = NULL;
|
||||
|
||||
up(&demux->mutex);
|
||||
mutex_unlock(&demux->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -785,12 +785,12 @@ static int dmx_section_feed_allocate_filter(struct dmx_section_feed *feed,
|
||||
struct dvb_demux *dvbdemux = dvbdmxfeed->demux;
|
||||
struct dvb_demux_filter *dvbdmxfilter;
|
||||
|
||||
if (down_interruptible(&dvbdemux->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdemux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
dvbdmxfilter = dvb_dmx_filter_alloc(dvbdemux);
|
||||
if (!dvbdmxfilter) {
|
||||
up(&dvbdemux->mutex);
|
||||
mutex_unlock(&dvbdemux->mutex);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
@@ -805,7 +805,7 @@ static int dmx_section_feed_allocate_filter(struct dmx_section_feed *feed,
|
||||
dvbdmxfeed->filter = dvbdmxfilter;
|
||||
spin_unlock_irq(&dvbdemux->lock);
|
||||
|
||||
up(&dvbdemux->mutex);
|
||||
mutex_unlock(&dvbdemux->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ static int dmx_section_feed_set(struct dmx_section_feed *feed,
|
||||
if (pid > 0x1fff)
|
||||
return -EINVAL;
|
||||
|
||||
if (down_interruptible(&dvbdmx->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdmx->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
dvb_demux_feed_add(dvbdmxfeed);
|
||||
@@ -833,13 +833,13 @@ static int dmx_section_feed_set(struct dmx_section_feed *feed,
|
||||
#else
|
||||
dvbdmxfeed->buffer = vmalloc(dvbdmxfeed->buffer_size);
|
||||
if (!dvbdmxfeed->buffer) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
#endif
|
||||
|
||||
dvbdmxfeed->state = DMX_STATE_READY;
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -871,16 +871,16 @@ static int dmx_section_feed_start_filtering(struct dmx_section_feed *feed)
|
||||
struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
|
||||
int ret;
|
||||
|
||||
if (down_interruptible(&dvbdmx->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdmx->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (feed->is_filtering) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
if (!dvbdmxfeed->filter) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -890,14 +890,14 @@ static int dmx_section_feed_start_filtering(struct dmx_section_feed *feed)
|
||||
dvbdmxfeed->feed.sec.seclen = 0;
|
||||
|
||||
if (!dvbdmx->start_feed) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
prepare_secfilters(dvbdmxfeed);
|
||||
|
||||
if ((ret = dvbdmx->start_feed(dvbdmxfeed)) < 0) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -906,7 +906,7 @@ static int dmx_section_feed_start_filtering(struct dmx_section_feed *feed)
|
||||
dvbdmxfeed->state = DMX_STATE_GO;
|
||||
spin_unlock_irq(&dvbdmx->lock);
|
||||
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -916,11 +916,11 @@ static int dmx_section_feed_stop_filtering(struct dmx_section_feed *feed)
|
||||
struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
|
||||
int ret;
|
||||
|
||||
if (down_interruptible(&dvbdmx->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdmx->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (!dvbdmx->stop_feed) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -931,7 +931,7 @@ static int dmx_section_feed_stop_filtering(struct dmx_section_feed *feed)
|
||||
feed->is_filtering = 0;
|
||||
spin_unlock_irq(&dvbdmx->lock);
|
||||
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -942,11 +942,11 @@ static int dmx_section_feed_release_filter(struct dmx_section_feed *feed,
|
||||
struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed;
|
||||
struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
|
||||
|
||||
if (down_interruptible(&dvbdmx->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdmx->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (dvbdmxfilter->feed != dvbdmxfeed) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -966,7 +966,7 @@ static int dmx_section_feed_release_filter(struct dmx_section_feed *feed,
|
||||
|
||||
dvbdmxfilter->state = DMX_STATE_FREE;
|
||||
spin_unlock_irq(&dvbdmx->lock);
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -977,11 +977,11 @@ static int dvbdmx_allocate_section_feed(struct dmx_demux *demux,
|
||||
struct dvb_demux *dvbdmx = (struct dvb_demux *)demux;
|
||||
struct dvb_demux_feed *dvbdmxfeed;
|
||||
|
||||
if (down_interruptible(&dvbdmx->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdmx->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (!(dvbdmxfeed = dvb_dmx_feed_alloc(dvbdmx))) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
@@ -1006,7 +1006,7 @@ static int dvbdmx_allocate_section_feed(struct dmx_demux *demux,
|
||||
(*feed)->stop_filtering = dmx_section_feed_stop_filtering;
|
||||
(*feed)->release_filter = dmx_section_feed_release_filter;
|
||||
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1016,11 +1016,11 @@ static int dvbdmx_release_section_feed(struct dmx_demux *demux,
|
||||
struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed;
|
||||
struct dvb_demux *dvbdmx = (struct dvb_demux *)demux;
|
||||
|
||||
if (down_interruptible(&dvbdmx->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdmx->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (dvbdmxfeed->state == DMX_STATE_FREE) {
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
#ifndef NOBUFS
|
||||
@@ -1033,7 +1033,7 @@ static int dvbdmx_release_section_feed(struct dmx_demux *demux,
|
||||
|
||||
dvbdmxfeed->pid = 0xffff;
|
||||
|
||||
up(&dvbdmx->mutex);
|
||||
mutex_unlock(&dvbdmx->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1071,10 +1071,10 @@ static int dvbdmx_write(struct dmx_demux *demux, const char *buf, size_t count)
|
||||
if ((!demux->frontend) || (demux->frontend->source != DMX_MEMORY_FE))
|
||||
return -EINVAL;
|
||||
|
||||
if (down_interruptible(&dvbdemux->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdemux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
dvb_dmx_swfilter(dvbdemux, buf, count);
|
||||
up(&dvbdemux->mutex);
|
||||
mutex_unlock(&dvbdemux->mutex);
|
||||
|
||||
if (signal_pending(current))
|
||||
return -EINTR;
|
||||
@@ -1126,11 +1126,11 @@ static int dvbdmx_connect_frontend(struct dmx_demux *demux,
|
||||
if (demux->frontend)
|
||||
return -EINVAL;
|
||||
|
||||
if (down_interruptible(&dvbdemux->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdemux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
demux->frontend = frontend;
|
||||
up(&dvbdemux->mutex);
|
||||
mutex_unlock(&dvbdemux->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1138,11 +1138,11 @@ static int dvbdmx_disconnect_frontend(struct dmx_demux *demux)
|
||||
{
|
||||
struct dvb_demux *dvbdemux = (struct dvb_demux *)demux;
|
||||
|
||||
if (down_interruptible(&dvbdemux->mutex))
|
||||
if (mutex_lock_interruptible(&dvbdemux->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
demux->frontend = NULL;
|
||||
up(&dvbdemux->mutex);
|
||||
mutex_unlock(&dvbdemux->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1215,7 +1215,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux)
|
||||
dmx->disconnect_frontend = dvbdmx_disconnect_frontend;
|
||||
dmx->get_pes_pids = dvbdmx_get_pes_pids;
|
||||
|
||||
sema_init(&dvbdemux->mutex, 1);
|
||||
mutex_init(&dvbdemux->mutex);
|
||||
spin_lock_init(&dvbdemux->lock);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include <linux/time.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/semaphore.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include "demux.h"
|
||||
|
||||
@@ -125,7 +125,7 @@ struct dvb_demux {
|
||||
u8 tsbuf[204];
|
||||
int tsbufp;
|
||||
|
||||
struct semaphore mutex;
|
||||
struct mutex mutex;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/semaphore.h>
|
||||
|
||||
#include "dvb_frontend.h"
|
||||
#include "dvbdev.h"
|
||||
@@ -88,7 +87,7 @@ MODULE_PARM_DESC(dvb_powerdown_on_sleep, "0: do not power down, 1: turn LNB vola
|
||||
* FESTATE_LOSTLOCK. When the lock has been lost, and we're searching it again.
|
||||
*/
|
||||
|
||||
static DECLARE_MUTEX(frontend_mutex);
|
||||
static DEFINE_MUTEX(frontend_mutex);
|
||||
|
||||
struct dvb_frontend_private {
|
||||
|
||||
@@ -1021,12 +1020,12 @@ int dvb_register_frontend(struct dvb_adapter* dvb,
|
||||
|
||||
dprintk ("%s\n", __FUNCTION__);
|
||||
|
||||
if (down_interruptible (&frontend_mutex))
|
||||
if (mutex_lock_interruptible(&frontend_mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
fe->frontend_priv = kzalloc(sizeof(struct dvb_frontend_private), GFP_KERNEL);
|
||||
if (fe->frontend_priv == NULL) {
|
||||
up(&frontend_mutex);
|
||||
mutex_unlock(&frontend_mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
fepriv = fe->frontend_priv;
|
||||
@@ -1045,7 +1044,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb,
|
||||
dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template,
|
||||
fe, DVB_DEVICE_FRONTEND);
|
||||
|
||||
up (&frontend_mutex);
|
||||
mutex_unlock(&frontend_mutex);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(dvb_register_frontend);
|
||||
@@ -1055,7 +1054,7 @@ int dvb_unregister_frontend(struct dvb_frontend* fe)
|
||||
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
||||
dprintk ("%s\n", __FUNCTION__);
|
||||
|
||||
down (&frontend_mutex);
|
||||
mutex_lock(&frontend_mutex);
|
||||
dvb_unregister_device (fepriv->dvbdev);
|
||||
dvb_frontend_stop (fe);
|
||||
if (fe->ops->release)
|
||||
@@ -1064,7 +1063,7 @@ int dvb_unregister_frontend(struct dvb_frontend* fe)
|
||||
printk("dvb_frontend: Demodulator (%s) does not have a release callback!\n", fe->ops->info.name);
|
||||
/* fe is invalid now */
|
||||
kfree(fepriv);
|
||||
up (&frontend_mutex);
|
||||
mutex_unlock(&frontend_mutex);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(dvb_unregister_frontend);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user