cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

user-return-notifier.h (1205B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _LINUX_USER_RETURN_NOTIFIER_H
      3#define _LINUX_USER_RETURN_NOTIFIER_H
      4
      5#ifdef CONFIG_USER_RETURN_NOTIFIER
      6
      7#include <linux/list.h>
      8#include <linux/sched.h>
      9
     10struct user_return_notifier {
     11	void (*on_user_return)(struct user_return_notifier *urn);
     12	struct hlist_node link;
     13};
     14
     15
     16void user_return_notifier_register(struct user_return_notifier *urn);
     17void user_return_notifier_unregister(struct user_return_notifier *urn);
     18
     19static inline void propagate_user_return_notify(struct task_struct *prev,
     20						struct task_struct *next)
     21{
     22	if (test_tsk_thread_flag(prev, TIF_USER_RETURN_NOTIFY)) {
     23		clear_tsk_thread_flag(prev, TIF_USER_RETURN_NOTIFY);
     24		set_tsk_thread_flag(next, TIF_USER_RETURN_NOTIFY);
     25	}
     26}
     27
     28void fire_user_return_notifiers(void);
     29
     30static inline void clear_user_return_notifier(struct task_struct *p)
     31{
     32	clear_tsk_thread_flag(p, TIF_USER_RETURN_NOTIFY);
     33}
     34
     35#else
     36
     37struct user_return_notifier {};
     38
     39static inline void propagate_user_return_notify(struct task_struct *prev,
     40						struct task_struct *next)
     41{
     42}
     43
     44static inline void fire_user_return_notifiers(void) {}
     45
     46static inline void clear_user_return_notifier(struct task_struct *p) {}
     47
     48#endif
     49
     50#endif