Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 363921
b: refs/heads/master
c: 7f4656c
h: refs/heads/master
i:
  363919: 212a582
v: v3
  • Loading branch information
Ian Abbott authored and Greg Kroah-Hartman committed Apr 5, 2013
1 parent 47d0291 commit c079548
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7a4e5a9f3c9f002b36fa91c1accae8f9b5c66cc8
refs/heads/master: 7f4656c5f780520262f7eeda926844761e859c6b
76 changes: 50 additions & 26 deletions trunk/drivers/staging/comedi/comedi_fops.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,13 +276,16 @@ static ssize_t show_max_read_buffer_kb(struct device *csdev,
struct device_attribute *attr, char *buf)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_read_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size = 0;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_read_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_READ) && s->async)
size = s->async->max_bufsize / 1024;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return snprintf(buf, PAGE_SIZE, "%i\n", size);
}
Expand All @@ -292,7 +295,8 @@ static ssize_t store_max_read_buffer_kb(struct device *csdev,
const char *buf, size_t count)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_read_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size;
int err;

Expand All @@ -303,12 +307,14 @@ static ssize_t store_max_read_buffer_kb(struct device *csdev,
return -EINVAL;
size *= 1024;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_read_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_READ) && s->async)
s->async->max_bufsize = size;
else
err = -EINVAL;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return err ? err : count;
}
Expand All @@ -317,13 +323,16 @@ static ssize_t show_read_buffer_kb(struct device *csdev,
struct device_attribute *attr, char *buf)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_read_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size = 0;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_read_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_READ) && s->async)
size = s->async->prealloc_bufsz / 1024;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return snprintf(buf, PAGE_SIZE, "%i\n", size);
}
Expand All @@ -333,7 +342,8 @@ static ssize_t store_read_buffer_kb(struct device *csdev,
const char *buf, size_t count)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_read_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size;
int err;

Expand All @@ -344,12 +354,14 @@ static ssize_t store_read_buffer_kb(struct device *csdev,
return -EINVAL;
size *= 1024;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_read_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_READ) && s->async)
err = resize_async_buffer(info->device, s, s->async, size);
err = resize_async_buffer(dev, s, s->async, size);
else
err = -EINVAL;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return err ? err : count;
}
Expand All @@ -359,13 +371,16 @@ static ssize_t show_max_write_buffer_kb(struct device *csdev,
char *buf)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_write_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size = 0;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_write_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_WRITE) && s->async)
size = s->async->max_bufsize / 1024;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return snprintf(buf, PAGE_SIZE, "%i\n", size);
}
Expand All @@ -375,7 +390,8 @@ static ssize_t store_max_write_buffer_kb(struct device *csdev,
const char *buf, size_t count)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_write_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size;
int err;

Expand All @@ -386,12 +402,14 @@ static ssize_t store_max_write_buffer_kb(struct device *csdev,
return -EINVAL;
size *= 1024;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_write_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_WRITE) && s->async)
s->async->max_bufsize = size;
else
err = -EINVAL;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return err ? err : count;
}
Expand All @@ -400,13 +418,16 @@ static ssize_t show_write_buffer_kb(struct device *csdev,
struct device_attribute *attr, char *buf)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_write_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size = 0;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_write_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_WRITE) && s->async)
size = s->async->prealloc_bufsz / 1024;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return snprintf(buf, PAGE_SIZE, "%i\n", size);
}
Expand All @@ -416,7 +437,8 @@ static ssize_t store_write_buffer_kb(struct device *csdev,
const char *buf, size_t count)
{
struct comedi_file_info *info = dev_get_drvdata(csdev);
struct comedi_subdevice *s = comedi_write_subdevice(info);
struct comedi_device *dev;
struct comedi_subdevice *s;
unsigned int size;
int err;

Expand All @@ -427,12 +449,14 @@ static ssize_t store_write_buffer_kb(struct device *csdev,
return -EINVAL;
size *= 1024;

mutex_lock(&info->device->mutex);
dev = info->device;
mutex_lock(&dev->mutex);
s = comedi_write_subdevice(info);
if (s && (s->subdev_flags & SDF_CMD_WRITE) && s->async)
err = resize_async_buffer(info->device, s, s->async, size);
err = resize_async_buffer(dev, s, s->async, size);
else
err = -EINVAL;
mutex_unlock(&info->device->mutex);
mutex_unlock(&dev->mutex);

return err ? err : count;
}
Expand Down

0 comments on commit c079548

Please sign in to comment.