From: Topi Pohjolainen Date: Tue, 27 Apr 2010 11:14:18 +0000 (+0200) Subject: gpu: pvr: support for polling events X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef58f376d306f0864f60f125a337f061b48653a6;p=sgx.git gpu: pvr: support for polling events In DRM style provide means for userspace to monitor availability of events via the poll syscall. Signed-off-by: Topi Pohjolainen Signed-off-by: Imre Deak --- diff --git a/pvr/pvr_events.c b/pvr/pvr_events.c index 70c061b..9b3db1f 100644 --- a/pvr/pvr_events.c +++ b/pvr/pvr_events.c @@ -66,6 +66,19 @@ ssize_t pvr_read(struct file *filp, char __user *buf, size_t count, loff_t *off) return total; } +unsigned int pvr_poll(struct file *filp, struct poll_table_struct *wait) +{ + struct PVRSRV_FILE_PRIVATE_DATA *priv = filp->private_data; + unsigned int mask = 0; + + poll_wait(filp, &priv->event_wait, wait); + + if (!list_empty(&priv->event_list)) + mask |= POLLIN | POLLRDNORM; + + return mask; +} + void pvr_release_events(struct PVRSRV_FILE_PRIVATE_DATA *priv) { struct pvr_pending_event *w; diff --git a/pvr/pvr_events.h b/pvr/pvr_events.h index f046cbf..f64b48f 100644 --- a/pvr/pvr_events.h +++ b/pvr/pvr_events.h @@ -6,6 +6,7 @@ #include "private_data.h" #include #include +#include /* * Header for events written back to userspace on the drm fd. The @@ -33,6 +34,7 @@ void pvr_init_events(void); ssize_t pvr_read(struct file *filp, char __user *buf, size_t count, loff_t *off); +unsigned int pvr_poll(struct file *filp, struct poll_table_struct *wait); void pvr_release_events(struct PVRSRV_FILE_PRIVATE_DATA *priv); #endif /* PVR_EVENTS_H */