From e15b0b6a1b95e4145363b15e1a581ee230b2f9a2 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 23 Apr 2003 23:42:29 +0000 Subject: Install dummy/noop read & poll fops unless the driver has replacements. --- linux/drmP.h | 2 ++ linux/drm_drv.h | 8 ++++++++ linux/drm_fops.h | 13 +++++++++++++ linux/gamma.h | 22 ++++------------------ 4 files changed, 27 insertions(+), 18 deletions(-) (limited to 'linux') diff --git a/linux/drmP.h b/linux/drmP.h index 2cdc5f09..8ebd1ec8 100644 --- a/linux/drmP.h +++ b/linux/drmP.h @@ -684,6 +684,8 @@ extern void DRM(vm_shm_close)(struct vm_area_struct *vma); extern int DRM(mmap_dma)(struct file *filp, struct vm_area_struct *vma); extern int DRM(mmap)(struct file *filp, struct vm_area_struct *vma); +extern unsigned int DRM(poll)(struct file *filp, struct poll_table_struct *wait); +extern ssize_t DRM(read)(struct file *filp, char *buf, size_t count, loff_t *off); /* Memory management support (drm_memory.h) */ extern void DRM(mem_init)(void); diff --git a/linux/drm_drv.h b/linux/drm_drv.h index 036cee35..dad961f8 100644 --- a/linux/drm_drv.h +++ b/linux/drm_drv.h @@ -84,6 +84,12 @@ #ifndef __HAVE_SG #define __HAVE_SG 0 #endif +#ifndef __HAVE_DRIVER_FOPS_READ +#define __HAVE_DRIVER_FOPS_READ 0 +#endif +#ifndef __HAVE_DRIVER_FOPS_POLL +#define __HAVE_DRIVER_FOPS_POLL 0 +#endif #ifndef DRIVER_PREINIT #define DRIVER_PREINIT() @@ -119,6 +125,8 @@ static struct file_operations DRM(fops) = { \ .ioctl = DRM(ioctl), \ .mmap = DRM(mmap), \ .fasync = DRM(fasync), \ + .poll = DRM(poll), \ + .read = DRM(read), \ } #endif diff --git a/linux/drm_fops.h b/linux/drm_fops.h index 3baac693..fc8618e1 100644 --- a/linux/drm_fops.h +++ b/linux/drm_fops.h @@ -113,4 +113,17 @@ int DRM(fasync)(int fd, struct file *filp, int on) return 0; } +#if !__HAVE_DRIVER_FOPS_POLL +unsigned int DRM(poll)(struct file *filp, struct poll_table_struct *wait) +{ + return 0; +} +#endif + +#if !__HAVE_DRIVER_FOPS_READ +ssize_t DRM(read)(struct file *filp, char *buf, size_t count, loff_t *off) +{ + return 0; +} +#endif diff --git a/linux/gamma.h b/linux/gamma.h index a5090c84..bff3f909 100644 --- a/linux/gamma.h +++ b/linux/gamma.h @@ -71,6 +71,9 @@ #define __HAVE_OLD_DMA 1 #define __HAVE_PCI_DMA 1 +#define __HAVE_DRIVER_FOPS_READ 1 +#define __HAVE_DRIVER_FOPS_POLL 1 + #define __HAVE_MULTIPLE_DMA_QUEUES 1 #define __HAVE_DMA_WAITQUEUE 1 @@ -88,7 +91,7 @@ #define __HAVE_DMA_QUIESCENT 1 #define DRIVER_DMA_QUIESCENT() do { \ /* FIXME ! */ \ - gamma_dma_quiescent_single(dev); \ + gamma_dma_quiescent_single(dev); \ return 0; \ } while (0) @@ -98,22 +101,5 @@ #define DRIVER_AGP_BUFFERS_MAP( dev ) \ ((drm_gamma_private_t *)((dev)->dev_private))->buffers -/* Gamma makes use of a wierd mechanism to get the DDX driver to do - * context switches on behalf of the 3d clients via a trip to the - * kernel module. This requires read/poll functionality on the drm - * file descriptor not normally present: - */ -#define DRIVER_FOPS \ -static struct file_operations DRM(fops) = { \ - .owner = THIS_MODULE, \ - .open = DRM(open), \ - .flush = DRM(flush), \ - .release = DRM(release), \ - .ioctl = DRM(ioctl), \ - .mmap = DRM(mmap), \ - .read = DRM(read), \ - .fasync = DRM(fasync), \ - .poll = DRM(poll), \ -} #endif /* __GAMMA_H__ */ -- cgit v1.2.3