remove DRM read, poll and write_string
parent
46e06192a8
commit
fc4fb6b51b
|
@ -697,13 +697,7 @@ extern int DRM(unlock)(struct inode *inode, struct file *filp,
|
||||||
extern int DRM(open_helper)(struct inode *inode, struct file *filp,
|
extern int DRM(open_helper)(struct inode *inode, struct file *filp,
|
||||||
drm_device_t *dev);
|
drm_device_t *dev);
|
||||||
extern int DRM(flush)(struct file *filp);
|
extern int DRM(flush)(struct file *filp);
|
||||||
extern int DRM(release_fuck)(struct inode *inode, struct file *filp);
|
|
||||||
extern int DRM(fasync)(int fd, struct file *filp, int on);
|
extern int DRM(fasync)(int fd, struct file *filp, int on);
|
||||||
extern ssize_t DRM(read)(struct file *filp, char *buf, size_t count,
|
|
||||||
loff_t *off);
|
|
||||||
extern int DRM(write_string)(drm_device_t *dev, const char *s);
|
|
||||||
extern unsigned int DRM(poll)(struct file *filp,
|
|
||||||
struct poll_table_struct *wait);
|
|
||||||
|
|
||||||
/* Mapping support (drm_vm.h) */
|
/* Mapping support (drm_vm.h) */
|
||||||
extern struct page *DRM(vm_nopage)(struct vm_area_struct *vma,
|
extern struct page *DRM(vm_nopage)(struct vm_area_struct *vma,
|
||||||
|
|
|
@ -242,9 +242,6 @@ int DRM(context_switch)( drm_device_t *dev, int old, int new )
|
||||||
|
|
||||||
if ( DRM(flags) & DRM_FLAG_NOCTX ) {
|
if ( DRM(flags) & DRM_FLAG_NOCTX ) {
|
||||||
DRM(context_switch_complete)( dev, new );
|
DRM(context_switch_complete)( dev, new );
|
||||||
} else {
|
|
||||||
sprintf( buf, "C %d %d\n", old, new );
|
|
||||||
DRM(write_string)( dev, buf );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -455,9 +452,6 @@ int DRM(context_switch)(drm_device_t *dev, int old, int new)
|
||||||
|
|
||||||
if (DRM(flags) & DRM_FLAG_NOCTX) {
|
if (DRM(flags) & DRM_FLAG_NOCTX) {
|
||||||
DRM(context_switch_complete)(dev, new);
|
DRM(context_switch_complete)(dev, new);
|
||||||
} else {
|
|
||||||
sprintf(buf, "C %d %d\n", old, new);
|
|
||||||
DRM(write_string)(dev, buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_dec(&q->use_count);
|
atomic_dec(&q->use_count);
|
||||||
|
|
|
@ -121,9 +121,7 @@ static struct file_operations DRM(fops) = { \
|
||||||
.release = DRM(release), \
|
.release = DRM(release), \
|
||||||
.ioctl = DRM(ioctl), \
|
.ioctl = DRM(ioctl), \
|
||||||
.mmap = DRM(mmap), \
|
.mmap = DRM(mmap), \
|
||||||
.read = DRM(read), \
|
|
||||||
.fasync = DRM(fasync), \
|
.fasync = DRM(fasync), \
|
||||||
.poll = DRM(poll), \
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -114,97 +114,3 @@ int DRM(fasync)(int fd, struct file *filp, int on)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* The drm_read and drm_write_string code (especially that which manages
|
|
||||||
the circular buffer), is based on Alessandro Rubini's LINUX DEVICE
|
|
||||||
DRIVERS (Cambridge: O'Reilly, 1998), pages 111-113. */
|
|
||||||
|
|
||||||
ssize_t DRM(read)(struct file *filp, char *buf, size_t count, loff_t *off)
|
|
||||||
{
|
|
||||||
drm_file_t *priv = filp->private_data;
|
|
||||||
drm_device_t *dev = priv->dev;
|
|
||||||
int left;
|
|
||||||
int avail;
|
|
||||||
int send;
|
|
||||||
int cur;
|
|
||||||
|
|
||||||
DRM_DEBUG("%p, %p\n", dev->buf_rp, dev->buf_wp);
|
|
||||||
|
|
||||||
while (dev->buf_rp == dev->buf_wp) {
|
|
||||||
DRM_DEBUG(" sleeping\n");
|
|
||||||
if (filp->f_flags & O_NONBLOCK) {
|
|
||||||
return -EAGAIN;
|
|
||||||
}
|
|
||||||
interruptible_sleep_on(&dev->buf_readers);
|
|
||||||
if (signal_pending(current)) {
|
|
||||||
DRM_DEBUG(" interrupted\n");
|
|
||||||
return -ERESTARTSYS;
|
|
||||||
}
|
|
||||||
DRM_DEBUG(" awake\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
left = (dev->buf_rp + DRM_BSZ - dev->buf_wp) % DRM_BSZ;
|
|
||||||
avail = DRM_BSZ - left;
|
|
||||||
send = DRM_MIN(avail, count);
|
|
||||||
|
|
||||||
while (send) {
|
|
||||||
if (dev->buf_wp > dev->buf_rp) {
|
|
||||||
cur = DRM_MIN(send, dev->buf_wp - dev->buf_rp);
|
|
||||||
} else {
|
|
||||||
cur = DRM_MIN(send, dev->buf_end - dev->buf_rp);
|
|
||||||
}
|
|
||||||
if (copy_to_user(buf, dev->buf_rp, cur))
|
|
||||||
return -EFAULT;
|
|
||||||
dev->buf_rp += cur;
|
|
||||||
if (dev->buf_rp == dev->buf_end) dev->buf_rp = dev->buf;
|
|
||||||
send -= cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
wake_up_interruptible(&dev->buf_writers);
|
|
||||||
return DRM_MIN(avail, count);;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DRM(write_string)(drm_device_t *dev, const char *s)
|
|
||||||
{
|
|
||||||
int left = (dev->buf_rp + DRM_BSZ - dev->buf_wp) % DRM_BSZ;
|
|
||||||
int send = strlen(s);
|
|
||||||
int count;
|
|
||||||
|
|
||||||
DRM_DEBUG("%d left, %d to send (%p, %p)\n",
|
|
||||||
left, send, dev->buf_rp, dev->buf_wp);
|
|
||||||
|
|
||||||
if (left == 1 || dev->buf_wp != dev->buf_rp) {
|
|
||||||
DRM_ERROR("Buffer not empty (%d left, wp = %p, rp = %p)\n",
|
|
||||||
left,
|
|
||||||
dev->buf_wp,
|
|
||||||
dev->buf_rp);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (send) {
|
|
||||||
if (dev->buf_wp >= dev->buf_rp) {
|
|
||||||
count = DRM_MIN(send, dev->buf_end - dev->buf_wp);
|
|
||||||
if (count == left) --count; /* Leave a hole */
|
|
||||||
} else {
|
|
||||||
count = DRM_MIN(send, dev->buf_rp - dev->buf_wp - 1);
|
|
||||||
}
|
|
||||||
strncpy(dev->buf_wp, s, count);
|
|
||||||
dev->buf_wp += count;
|
|
||||||
if (dev->buf_wp == dev->buf_end) dev->buf_wp = dev->buf;
|
|
||||||
send -= count;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev->buf_async) kill_fasync(&dev->buf_async, SIGIO, POLL_IN);
|
|
||||||
|
|
||||||
DRM_DEBUG("waking\n");
|
|
||||||
wake_up_interruptible(&dev->buf_readers);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int DRM(poll)(struct file *filp, struct poll_table_struct *wait)
|
|
||||||
{
|
|
||||||
drm_file_t *priv = filp->private_data;
|
|
||||||
drm_device_t *dev = priv->dev;
|
|
||||||
|
|
||||||
poll_wait(filp, &dev->buf_readers, wait);
|
|
||||||
if (dev->buf_wp != dev->buf_rp) return POLLIN | POLLRDNORM;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -122,9 +122,7 @@ static struct file_operations i810_buffer_fops = {
|
||||||
.release = DRM(release),
|
.release = DRM(release),
|
||||||
.ioctl = DRM(ioctl),
|
.ioctl = DRM(ioctl),
|
||||||
.mmap = i810_mmap_buffers,
|
.mmap = i810_mmap_buffers,
|
||||||
.read = DRM(read),
|
|
||||||
.fasync = DRM(fasync),
|
.fasync = DRM(fasync),
|
||||||
.poll = DRM(poll),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
||||||
|
|
|
@ -130,9 +130,7 @@ static struct file_operations i830_buffer_fops = {
|
||||||
.release = DRM(release),
|
.release = DRM(release),
|
||||||
.ioctl = DRM(ioctl),
|
.ioctl = DRM(ioctl),
|
||||||
.mmap = i830_mmap_buffers,
|
.mmap = i830_mmap_buffers,
|
||||||
.read = DRM(read),
|
|
||||||
.fasync = DRM(fasync),
|
.fasync = DRM(fasync),
|
||||||
.poll = DRM(poll),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
||||||
|
|
|
@ -697,13 +697,7 @@ extern int DRM(unlock)(struct inode *inode, struct file *filp,
|
||||||
extern int DRM(open_helper)(struct inode *inode, struct file *filp,
|
extern int DRM(open_helper)(struct inode *inode, struct file *filp,
|
||||||
drm_device_t *dev);
|
drm_device_t *dev);
|
||||||
extern int DRM(flush)(struct file *filp);
|
extern int DRM(flush)(struct file *filp);
|
||||||
extern int DRM(release_fuck)(struct inode *inode, struct file *filp);
|
|
||||||
extern int DRM(fasync)(int fd, struct file *filp, int on);
|
extern int DRM(fasync)(int fd, struct file *filp, int on);
|
||||||
extern ssize_t DRM(read)(struct file *filp, char *buf, size_t count,
|
|
||||||
loff_t *off);
|
|
||||||
extern int DRM(write_string)(drm_device_t *dev, const char *s);
|
|
||||||
extern unsigned int DRM(poll)(struct file *filp,
|
|
||||||
struct poll_table_struct *wait);
|
|
||||||
|
|
||||||
/* Mapping support (drm_vm.h) */
|
/* Mapping support (drm_vm.h) */
|
||||||
extern struct page *DRM(vm_nopage)(struct vm_area_struct *vma,
|
extern struct page *DRM(vm_nopage)(struct vm_area_struct *vma,
|
||||||
|
|
|
@ -242,9 +242,6 @@ int DRM(context_switch)( drm_device_t *dev, int old, int new )
|
||||||
|
|
||||||
if ( DRM(flags) & DRM_FLAG_NOCTX ) {
|
if ( DRM(flags) & DRM_FLAG_NOCTX ) {
|
||||||
DRM(context_switch_complete)( dev, new );
|
DRM(context_switch_complete)( dev, new );
|
||||||
} else {
|
|
||||||
sprintf( buf, "C %d %d\n", old, new );
|
|
||||||
DRM(write_string)( dev, buf );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -455,9 +452,6 @@ int DRM(context_switch)(drm_device_t *dev, int old, int new)
|
||||||
|
|
||||||
if (DRM(flags) & DRM_FLAG_NOCTX) {
|
if (DRM(flags) & DRM_FLAG_NOCTX) {
|
||||||
DRM(context_switch_complete)(dev, new);
|
DRM(context_switch_complete)(dev, new);
|
||||||
} else {
|
|
||||||
sprintf(buf, "C %d %d\n", old, new);
|
|
||||||
DRM(write_string)(dev, buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_dec(&q->use_count);
|
atomic_dec(&q->use_count);
|
||||||
|
|
|
@ -121,9 +121,7 @@ static struct file_operations DRM(fops) = { \
|
||||||
.release = DRM(release), \
|
.release = DRM(release), \
|
||||||
.ioctl = DRM(ioctl), \
|
.ioctl = DRM(ioctl), \
|
||||||
.mmap = DRM(mmap), \
|
.mmap = DRM(mmap), \
|
||||||
.read = DRM(read), \
|
|
||||||
.fasync = DRM(fasync), \
|
.fasync = DRM(fasync), \
|
||||||
.poll = DRM(poll), \
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -114,97 +114,3 @@ int DRM(fasync)(int fd, struct file *filp, int on)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* The drm_read and drm_write_string code (especially that which manages
|
|
||||||
the circular buffer), is based on Alessandro Rubini's LINUX DEVICE
|
|
||||||
DRIVERS (Cambridge: O'Reilly, 1998), pages 111-113. */
|
|
||||||
|
|
||||||
ssize_t DRM(read)(struct file *filp, char *buf, size_t count, loff_t *off)
|
|
||||||
{
|
|
||||||
drm_file_t *priv = filp->private_data;
|
|
||||||
drm_device_t *dev = priv->dev;
|
|
||||||
int left;
|
|
||||||
int avail;
|
|
||||||
int send;
|
|
||||||
int cur;
|
|
||||||
|
|
||||||
DRM_DEBUG("%p, %p\n", dev->buf_rp, dev->buf_wp);
|
|
||||||
|
|
||||||
while (dev->buf_rp == dev->buf_wp) {
|
|
||||||
DRM_DEBUG(" sleeping\n");
|
|
||||||
if (filp->f_flags & O_NONBLOCK) {
|
|
||||||
return -EAGAIN;
|
|
||||||
}
|
|
||||||
interruptible_sleep_on(&dev->buf_readers);
|
|
||||||
if (signal_pending(current)) {
|
|
||||||
DRM_DEBUG(" interrupted\n");
|
|
||||||
return -ERESTARTSYS;
|
|
||||||
}
|
|
||||||
DRM_DEBUG(" awake\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
left = (dev->buf_rp + DRM_BSZ - dev->buf_wp) % DRM_BSZ;
|
|
||||||
avail = DRM_BSZ - left;
|
|
||||||
send = DRM_MIN(avail, count);
|
|
||||||
|
|
||||||
while (send) {
|
|
||||||
if (dev->buf_wp > dev->buf_rp) {
|
|
||||||
cur = DRM_MIN(send, dev->buf_wp - dev->buf_rp);
|
|
||||||
} else {
|
|
||||||
cur = DRM_MIN(send, dev->buf_end - dev->buf_rp);
|
|
||||||
}
|
|
||||||
if (copy_to_user(buf, dev->buf_rp, cur))
|
|
||||||
return -EFAULT;
|
|
||||||
dev->buf_rp += cur;
|
|
||||||
if (dev->buf_rp == dev->buf_end) dev->buf_rp = dev->buf;
|
|
||||||
send -= cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
wake_up_interruptible(&dev->buf_writers);
|
|
||||||
return DRM_MIN(avail, count);;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DRM(write_string)(drm_device_t *dev, const char *s)
|
|
||||||
{
|
|
||||||
int left = (dev->buf_rp + DRM_BSZ - dev->buf_wp) % DRM_BSZ;
|
|
||||||
int send = strlen(s);
|
|
||||||
int count;
|
|
||||||
|
|
||||||
DRM_DEBUG("%d left, %d to send (%p, %p)\n",
|
|
||||||
left, send, dev->buf_rp, dev->buf_wp);
|
|
||||||
|
|
||||||
if (left == 1 || dev->buf_wp != dev->buf_rp) {
|
|
||||||
DRM_ERROR("Buffer not empty (%d left, wp = %p, rp = %p)\n",
|
|
||||||
left,
|
|
||||||
dev->buf_wp,
|
|
||||||
dev->buf_rp);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (send) {
|
|
||||||
if (dev->buf_wp >= dev->buf_rp) {
|
|
||||||
count = DRM_MIN(send, dev->buf_end - dev->buf_wp);
|
|
||||||
if (count == left) --count; /* Leave a hole */
|
|
||||||
} else {
|
|
||||||
count = DRM_MIN(send, dev->buf_rp - dev->buf_wp - 1);
|
|
||||||
}
|
|
||||||
strncpy(dev->buf_wp, s, count);
|
|
||||||
dev->buf_wp += count;
|
|
||||||
if (dev->buf_wp == dev->buf_end) dev->buf_wp = dev->buf;
|
|
||||||
send -= count;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev->buf_async) kill_fasync(&dev->buf_async, SIGIO, POLL_IN);
|
|
||||||
|
|
||||||
DRM_DEBUG("waking\n");
|
|
||||||
wake_up_interruptible(&dev->buf_readers);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int DRM(poll)(struct file *filp, struct poll_table_struct *wait)
|
|
||||||
{
|
|
||||||
drm_file_t *priv = filp->private_data;
|
|
||||||
drm_device_t *dev = priv->dev;
|
|
||||||
|
|
||||||
poll_wait(filp, &dev->buf_readers, wait);
|
|
||||||
if (dev->buf_wp != dev->buf_rp) return POLLIN | POLLRDNORM;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -122,9 +122,7 @@ static struct file_operations i810_buffer_fops = {
|
||||||
.release = DRM(release),
|
.release = DRM(release),
|
||||||
.ioctl = DRM(ioctl),
|
.ioctl = DRM(ioctl),
|
||||||
.mmap = i810_mmap_buffers,
|
.mmap = i810_mmap_buffers,
|
||||||
.read = DRM(read),
|
|
||||||
.fasync = DRM(fasync),
|
.fasync = DRM(fasync),
|
||||||
.poll = DRM(poll),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
||||||
|
|
|
@ -130,9 +130,7 @@ static struct file_operations i830_buffer_fops = {
|
||||||
.release = DRM(release),
|
.release = DRM(release),
|
||||||
.ioctl = DRM(ioctl),
|
.ioctl = DRM(ioctl),
|
||||||
.mmap = i830_mmap_buffers,
|
.mmap = i830_mmap_buffers,
|
||||||
.read = DRM(read),
|
|
||||||
.fasync = DRM(fasync),
|
.fasync = DRM(fasync),
|
||||||
.poll = DRM(poll),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
||||||
|
|
Loading…
Reference in New Issue