From 226538dec845e49f15c52e7fe29459bc756dd825 Mon Sep 17 00:00:00 2001 From: Topi Pohjolainen Date: Tue, 27 Apr 2010 13:14:21 +0200 Subject: [PATCH] gpu: pvr: support for user data in events Signed-off-by: Topi Pohjolainen Signed-off-by: Imre Deak --- pvr/bridged_sgx_bridge.c | 3 ++- pvr/pvr_events.c | 4 +++- pvr/pvr_events.h | 4 +++- pvr/sgx_bridge.h | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pvr/bridged_sgx_bridge.c b/pvr/bridged_sgx_bridge.c index d32d2aa..e10d5cc 100644 --- a/pvr/bridged_sgx_bridge.c +++ b/pvr/bridged_sgx_bridge.c @@ -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; diff --git a/pvr/pvr_events.c b/pvr/pvr_events.c index 85dd139..3fdca0f 100644 --- a/pvr/pvr_events.c +++ b/pvr/pvr_events.c @@ -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; diff --git a/pvr/pvr_events.h b/pvr/pvr_events.h index 4f6f2d4..1798a75 100644 --- a/pvr/pvr_events.h +++ b/pvr/pvr_events.h @@ -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); diff --git a/pvr/sgx_bridge.h b/pvr/sgx_bridge.h index 512843d..d40b3b7 100644 --- a/pvr/sgx_bridge.h +++ b/pvr/sgx_bridge.h @@ -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; }; -- 2.39.5