gpu: pvr: support for user data in events
authorTopi Pohjolainen <topi.pohjolainen@nokia.com>
Tue, 27 Apr 2010 11:14:21 +0000 (13:14 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Sun, 20 May 2012 18:09:41 +0000 (21:09 +0300)
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
pvr/bridged_sgx_bridge.c
pvr/pvr_events.c
pvr/pvr_events.h
pvr/sgx_bridge.h

index d32d2aa..e10d5cc 100644 (file)
@@ -1031,7 +1031,8 @@ int SGX2DQueryBlitsCompleteBW(struct file *filp, u32 ui32BridgeID,
                struct PVRSRV_FILE_PRIVATE_DATA *priv = filp->private_data;
 
                if (pvr_sync_event_req(priv,
-                               (struct PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo))
+                               (struct PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo,
+                               ps2DQueryBltsCompleteIN->user_data))
                        psRetOUT->eError = PVRSRV_ERROR_OUT_OF_MEMORY;
 
                return 0;
index 85dd139..3fdca0f 100644 (file)
@@ -30,7 +30,8 @@ static void pvr_signal_sync_event(struct pvr_pending_sync_event *e,
 }
 
 int pvr_sync_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
-                       const struct PVRSRV_KERNEL_SYNC_INFO *sync_info)
+                       const struct PVRSRV_KERNEL_SYNC_INFO *sync_info,
+                       u64 user_data)
 {
        struct pvr_pending_sync_event *e;
        struct timeval now;
@@ -43,6 +44,7 @@ int pvr_sync_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
        e->event.base.type = PVR_EVENT_SYNC;
        e->event.base.length = sizeof(e->event);
        e->event.sync_info = sync_info;
+       e->event.user_data = user_data;
        e->base.event = &e->event.base;
        e->base.file_priv = priv;
        e->base.destroy = (void (*)(struct pvr_pending_event *))kfree;
index 4f6f2d4..1798a75 100644 (file)
@@ -43,6 +43,7 @@ struct pvr_event {
 struct pvr_event_sync {
        struct pvr_event base;
        const struct PVRSRV_KERNEL_SYNC_INFO *sync_info;
+       __u64 user_data;
        __u32 tv_sec;
        __u32 tv_usec;
 };
@@ -63,7 +64,8 @@ struct pvr_pending_sync_event {
 void pvr_init_events(void);
 
 int pvr_sync_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
-                       const struct PVRSRV_KERNEL_SYNC_INFO *sync_info);
+                       const struct PVRSRV_KERNEL_SYNC_INFO *sync_info,
+                       u64 user_data);
 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);
index 512843d..d40b3b7 100644 (file)
@@ -226,6 +226,7 @@ struct PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE {
        u32 ui32BridgeFlags;
        void *hDevCookie;
        void *hKernSyncInfo;
+       u64 user_data;
        enum pvr_sync_wait_seq_type type;
 };