Lines Matching refs:pThread

57 typedef DECLCALLBACKPTR(void, PFNVBOXVDMATHREAD_CHANGED)(struct VBOXVDMATHREAD *pThread, int rc, void *pvThreadContext, void *pvChangeContext);
823 void VBoxVDMAThreadNotifyConstructSucceeded(PVBOXVDMATHREAD pThread, void *pvThreadContext)
825 Assert(pThread->u32State == VBOXVDMATHREAD_STATE_CREATING);
826 PFNVBOXVDMATHREAD_CHANGED pfnChanged = pThread->pfnChanged;
827 void *pvChanged = pThread->pvChanged;
829 pThread->pfnChanged = NULL;
830 pThread->pvChanged = NULL;
832 ASMAtomicWriteU32(&pThread->u32State, VBOXVDMATHREAD_STATE_CREATED);
835 pfnChanged(pThread, VINF_SUCCESS, pvThreadContext, pvChanged);
838 void VBoxVDMAThreadNotifyTerminatingSucceeded(PVBOXVDMATHREAD pThread, void *pvThreadContext)
840 Assert(pThread->u32State == VBOXVDMATHREAD_STATE_TERMINATING);
841 PFNVBOXVDMATHREAD_CHANGED pfnChanged = pThread->pfnChanged;
842 void *pvChanged = pThread->pvChanged;
844 pThread->pfnChanged = NULL;
845 pThread->pvChanged = NULL;
848 pfnChanged(pThread, VINF_SUCCESS, pvThreadContext, pvChanged);
851 DECLINLINE(bool) VBoxVDMAThreadIsTerminating(PVBOXVDMATHREAD pThread)
853 return ASMAtomicUoReadU32(&pThread->u32State) == VBOXVDMATHREAD_STATE_TERMINATING;
856 void VBoxVDMAThreadInit(PVBOXVDMATHREAD pThread)
858 memset(pThread, 0, sizeof (*pThread));
859 pThread->u32State = VBOXVDMATHREAD_STATE_TERMINATED;
862 int VBoxVDMAThreadCleanup(PVBOXVDMATHREAD pThread)
864 uint32_t u32State = ASMAtomicUoReadU32(&pThread->u32State);
871 int rc = RTThreadWait(pThread->hWorkerThread, RT_INDEFINITE_WAIT, NULL);
878 RTSemEventDestroy(pThread->hEvent);
880 ASMAtomicWriteU32(&pThread->u32State, VBOXVDMATHREAD_STATE_TERMINATED);
889 int VBoxVDMAThreadCreate(PVBOXVDMATHREAD pThread, PFNRTTHREAD pfnThread, void *pvThread, PFNVBOXVDMATHREAD_CHANGED pfnCreated, void*pvCreated)
891 int rc = VBoxVDMAThreadCleanup(pThread);
898 rc = RTSemEventCreate(&pThread->hEvent);
901 pThread->u32State = VBOXVDMATHREAD_STATE_CREATING;
902 pThread->pfnChanged = pfnCreated;
903 pThread->pvChanged = pvCreated;
904 rc = RTThreadCreate(&pThread->hWorkerThread, pfnThread, pvThread, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "VDMA");
910 RTSemEventDestroy(pThread->hEvent);
915 pThread->u32State = VBOXVDMATHREAD_STATE_TERMINATED;
920 DECLINLINE(int) VBoxVDMAThreadEventNotify(PVBOXVDMATHREAD pThread)
922 int rc = RTSemEventSignal(pThread->hEvent);
927 DECLINLINE(int) VBoxVDMAThreadEventWait(PVBOXVDMATHREAD pThread, RTMSINTERVAL cMillies)
929 int rc = RTSemEventWait(pThread->hEvent, cMillies);
934 int VBoxVDMAThreadTerm(PVBOXVDMATHREAD pThread, PFNVBOXVDMATHREAD_CHANGED pfnTerminated, void*pvTerminated, bool fNotify)
939 uint32_t u32State = ASMAtomicUoReadU32(&pThread->u32State);
943 pThread->pfnChanged = pfnTerminated;
944 pThread->pvChanged = pvTerminated;
945 ASMAtomicWriteU32(&pThread->u32State, VBOXVDMATHREAD_STATE_TERMINATING);
948 rc = VBoxVDMAThreadEventNotify(pThread);
2959 static DECLCALLBACK(void) vdmaVBVACtlThreadCreatedEnable(struct VBOXVDMATHREAD *pThread, int rc, void *pvThreadContext, void *pvContext)