本文整理汇总了C++中restore_sigframe函数的典型用法代码示例。如果您正苦于以下问题:C++ restore_sigframe函数的具体用法?C++ restore_sigframe怎么用?C++ restore_sigframe使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了restore_sigframe函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: VG_
/* EXPORTED */
void VG_(sigframe_destroy)( ThreadId tid, Bool isRT )
{
Addr sp;
ThreadState* tst;
SizeT size;
Int sigNo;
tst = VG_(get_ThreadState)(tid);
/* Correctly reestablish the frame base address. */
sp = tst->arch.vex.guest_SP;
if (!isRT)
size = restore_sigframe(tst, (struct sigframe *)sp, &sigNo);
else
size = restore_rt_sigframe(tst, (struct rt_sigframe *)sp, &sigNo);
/* same as for creation: we must announce the full memory (including
alignment), otherwise massif might fail on longjmp */
VG_TRACK( die_mem_stack_signal, sp - VG_STACK_REDZONE_SZB,
size + VG_STACK_REDZONE_SZB );
if (VG_(clo_trace_signals))
VG_(message)(
Vg_DebugMsg,
"VG_(sigframe_destroy) (thread %d): isRT=%d valid magic; IP=%#llx\n",
tid, isRT, tst->arch.vex.guest_IA);
/* tell the tools */
VG_TRACK( post_deliver_signal, tid, sigNo );
}
开发者ID:Grindland,项目名称:valgrind-android,代码行数:32,代码来源:sigframe-s390x-linux.c
示例2: sys_rt_sigreturn
asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
{
struct rt_sigframe __user *frame;
/* Always make any pending restarted system calls return -EINTR */
current->restart_block.fn = do_no_restart_syscall;
/*
* Since we stacked the signal on a 64-bit boundary,
* then 'sp' should be word aligned here. If it's
* not, then the user is trying to mess with us.
*/
if (regs->ARM_sp & 7)
goto badframe;
frame = (struct rt_sigframe __user *)regs->ARM_sp;
if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
goto badframe;
if (restore_sigframe(regs, &frame->sig))
goto badframe;
if (restore_altstack(&frame->sig.uc.uc_stack))
goto badframe;
return regs->ARM_r0;
badframe:
force_sig(SIGSEGV, current);
return 0;
}
开发者ID:0-T-0,项目名称:ps4-linux,代码行数:32,代码来源:signal.c
示例3: sys_rt_sigreturn
asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
{
struct rt_sigframe __user *frame;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info()->restart_block.fn = do_no_restart_syscall;
/*
* Since we stacked the signal on a 128-bit boundary, then 'sp' should
* be word aligned here.
*/
if (regs->sp & 15)
goto badframe;
frame = (struct rt_sigframe __user *)regs->sp;
if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
goto badframe;
if (restore_sigframe(regs, frame))
goto badframe;
if (restore_altstack(&frame->uc.uc_stack))
goto badframe;
return regs->regs[0];
badframe:
if (show_unhandled_signals)
pr_info_ratelimited("%s[%d]: bad frame in %s: pc=%08llx sp=%08llx\n",
current->comm, task_pid_nr(current), __func__,
regs->pc, regs->sp);
force_sig(SIGSEGV, current);
return 0;
}
开发者ID:garyvan,项目名称:openwrt-1.6,代码行数:35,代码来源:signal_template.c
示例4: VG_
void VG_(sigframe_destroy)( ThreadId tid, Bool isRT )
{
Addr esp;
ThreadState* tst;
SizeT size;
Int sigNo;
tst = VG_(get_ThreadState)(tid);
esp = tst->arch.vex.guest_ESP;
if (!isRT)
size = restore_sigframe(tst, (struct sigframe *)esp, &sigNo);
else
size = restore_rt_sigframe(tst, (struct rt_sigframe *)esp, &sigNo);
VG_TRACK( die_mem_stack_signal, esp - VG_STACK_REDZONE_SZB,
size + VG_STACK_REDZONE_SZB );
if (VG_(clo_trace_signals))
VG_(message)(
Vg_DebugMsg,
"VG_(signal_return) (thread %d): isRT=%d valid magic; EIP=%#x\n",
tid, isRT, tst->arch.vex.guest_EIP);
VG_TRACK( post_deliver_signal, tid, sigNo );
}
开发者ID:qtekfun,项目名称:htcDesire820Kernel,代码行数:29,代码来源:sigframe-x86-linux.c
示例5: sys_rt_sigreturn
asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
{
struct rt_sigframe __user *frame;
current_thread_info()->restart_block.fn = do_no_restart_syscall;
if (regs->ARM_sp & 7)
goto badframe;
frame = (struct rt_sigframe __user *)regs->ARM_sp;
if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
goto badframe;
if (restore_sigframe(regs, &frame->sig))
goto badframe;
if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->ARM_sp) == -EFAULT)
goto badframe;
single_step_trap(current);
return regs->ARM_r0;
badframe:
force_sig(SIGSEGV, current);
return 0;
}
开发者ID:leemgs,项目名称:OptimusOneKernel-KandroidCommunity,代码行数:30,代码来源:signal.c
示例6: VG_
void VG_(sigframe_destroy)( ThreadId tid )
{
Addr rsp;
ThreadState* tst;
SizeT size;
Int sigNo;
tst = VG_(get_ThreadState)(tid);
/* Correctly reestablish the frame base address. */
rsp = tst->arch.vex.guest_RSP;
size = restore_sigframe(tst, (struct sigframe *)rsp, &sigNo);
VG_TRACK( die_mem_stack_signal, rsp - VG_STACK_REDZONE_SZB,
size + VG_STACK_REDZONE_SZB );
if (VG_(clo_trace_signals))
VG_(message)(
Vg_DebugMsg,
"VG_(signal_return) (thread %d): valid magic; RIP=%#llx\n",
tid, tst->arch.vex.guest_RIP);
/* tell the tools */
VG_TRACK( post_deliver_signal, tid, sigNo );
}
开发者ID:carriercomm,项目名称:valgrind-freebsd,代码行数:26,代码来源:sigframe-amd64-freebsd.c
示例7: sys_sigreturn
asmlinkage int sys_sigreturn(struct pt_regs *regs)
{
struct sigframe __user *frame;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info()->restart_block.fn = do_no_restart_syscall;
/*
* Since we stacked the signal on a 64-bit boundary,
* then 'sp' should be word aligned here. If it's
* not, then the user is trying to mess with us.
*/
if (regs->ARM_sp & 7)
goto badframe;
frame = (struct sigframe __user *)regs->ARM_sp;
if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
goto badframe;
if (restore_sigframe(regs, frame))
goto badframe;
/* Send SIGTRAP if we're single-stepping */
if (current->ptrace & PT_SINGLESTEP) {
ptrace_cancel_bpt(current);
send_sig(SIGTRAP, current, 1);
}
return regs->ARM_r0;
badframe:
force_sig(SIGSEGV, current);
return 0;
}
开发者ID:gtvhacker,项目名称:Logitech-Revue,代码行数:35,代码来源:signal.c
注:本文中的restore_sigframe函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论