本文整理汇总了C++中CPalThread::GetLwpId方法的典型用法代码示例。如果您正苦于以下问题:C++ CPalThread::GetLwpId方法的具体用法?C++ CPalThread::GetLwpId怎么用?C++ CPalThread::GetLwpId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPalThread
的用法示例。
在下文中一共展示了CPalThread::GetLwpId方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ENTRY
DWORD
PAL_DeleteExecWatchpoint(
HANDLE hThread,
PVOID pvInstruction
)
{
PERF_ENTRY(PAL_DeleteExecWatchpoint);
ENTRY("PAL_DeleteExecWatchpoint (hThread=%p, pvInstruction=%p)\n", hThread, pvInstruction);
DWORD dwError = ERROR_NOT_SUPPORTED;
#if HAVE_PRWATCH_T
CPalThread *pThread = NULL;
CPalThread *pTargetThread = NULL;
IPalObject *pobjThread = NULL;
int fd = -1;
char ctlPath[50];
struct
{
long ctlCode;
prwatch_t prwatch;
} ctlStruct;
pThread = InternalGetCurrentThread();
dwError = InternalGetThreadDataFromHandle(
pThread,
hThread,
0, // THREAD_SET_CONTEXT
&pTargetThread,
&pobjThread
);
if (NO_ERROR != dwError)
{
goto PAL_DeleteExecWatchpointExit;
}
snprintf(ctlPath, sizeof(ctlPath), "/proc/%u/lwp/%u/lwpctl", getpid(), pTargetThread->GetLwpId());
fd = InternalOpen(pThread, ctlPath, O_WRONLY);
if (-1 == fd)
{
ERROR("Failed to open %s\n", ctlPath);
dwError = ERROR_INVALID_ACCESS;
goto PAL_DeleteExecWatchpointExit;
}
ctlStruct.ctlCode = PCWATCH;
ctlStruct.prwatch.pr_vaddr = (uintptr_t) pvInstruction;
ctlStruct.prwatch.pr_size = sizeof(DWORD);
ctlStruct.prwatch.pr_wflags = 0;
if (write(fd, (void*) &ctlStruct, sizeof(ctlStruct)) != sizeof(ctlStruct))
{
ERROR("Failure writing control structure (errno = %u)\n", errno);
dwError = ERROR_INTERNAL_ERROR;
goto PAL_DeleteExecWatchpointExit;
}
dwError = ERROR_SUCCESS;
PAL_DeleteExecWatchpointExit:
if (NULL != pobjThread)
{
pobjThread->ReleaseReference(pThread);
}
if (-1 != fd)
{
close(fd);
}
#endif // HAVE_PRWATCH_T
LOGEXIT("PAL_DeleteExecWatchpoint returns ret:%d\n", dwError);
PERF_EXIT(PAL_DeleteExecWatchpoint);
return dwError;
}