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;
}
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;
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;
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;
};
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);
u32 ui32BridgeFlags;
void *hDevCookie;
void *hKernSyncInfo;
+ u64 user_data;
enum pvr_sync_wait_seq_type type;
};