コード例 #1
0
void do_notify_resume(struct pt_regs *regs, void *unused,
		      __u32 thread_info_flags)
{
#ifdef CONFIG_X86_MCE
	/* notify userspace of pending MCEs */
	if (thread_info_flags & _TIF_MCE_NOTIFY)
		mce_notify_user();
#endif /* CONFIG_X86_MCE */

	/* deal with pending signal delivery */
	if (thread_info_flags & _TIF_SIGPENDING)
		do_signal(regs);
}
コード例 #2
0
ファイル: signal_32.c プロジェクト: mikeberkelaar/grhardened
/*
 * notification of userspace execution resumption
 * - triggered by the TIF_WORK_MASK flags
 */
void
do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
{
#if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE)
	/* notify userspace of pending MCEs */
	if (thread_info_flags & _TIF_MCE_NOTIFY)
		mce_notify_user();
#endif /* CONFIG_X86_64 && CONFIG_X86_MCE */

	/* deal with pending signal delivery */
	if (thread_info_flags & _TIF_SIGPENDING)
		do_signal(regs);

	if (thread_info_flags & _TIF_NOTIFY_RESUME) {
		clear_thread_flag(TIF_NOTIFY_RESUME);
		tracehook_notify_resume(regs);
	}

#ifdef CONFIG_X86_32
	clear_thread_flag(TIF_IRET);
#endif /* CONFIG_X86_32 */
}
コード例 #3
0
ファイル: signal_64.c プロジェクト: 274914765/C
void do_notify_resume(struct pt_regs *regs, void *unused,
              __u32 thread_info_flags)
{
    /* Pending single-step? */
    if (thread_info_flags & _TIF_SINGLESTEP) {
        regs->flags |= X86_EFLAGS_TF;
        clear_thread_flag(TIF_SINGLESTEP);
    }

#ifdef CONFIG_X86_MCE
    /* notify userspace of pending MCEs */
    if (thread_info_flags & _TIF_MCE_NOTIFY)
        mce_notify_user();
#endif /* CONFIG_X86_MCE */

    /* deal with pending signal delivery */
    if (thread_info_flags & _TIF_SIGPENDING)
        do_signal(regs);

    if (thread_info_flags & _TIF_HRTICK_RESCHED)
        hrtick_resched();
}