user-return-notifier.h 968 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef _LINUX_USER_RETURN_NOTIFIER_H
  2. #define _LINUX_USER_RETURN_NOTIFIER_H
  3. #ifdef CONFIG_USER_RETURN_NOTIFIER
  4. #include <linux/list.h>
  5. #include <linux/sched.h>
  6. struct user_return_notifier {
  7. void (*on_user_return)(struct user_return_notifier *urn);
  8. struct hlist_node link;
  9. };
  10. void user_return_notifier_register(struct user_return_notifier *urn);
  11. void user_return_notifier_unregister(struct user_return_notifier *urn);
  12. static inline void propagate_user_return_notify(struct task_struct *prev,
  13. struct task_struct *next)
  14. {
  15. if (test_tsk_thread_flag(prev, TIF_USER_RETURN_NOTIFY)) {
  16. clear_tsk_thread_flag(prev, TIF_USER_RETURN_NOTIFY);
  17. set_tsk_thread_flag(next, TIF_USER_RETURN_NOTIFY);
  18. }
  19. }
  20. void fire_user_return_notifiers(void);
  21. #else
  22. struct user_return_notifier {};
  23. static inline void propagate_user_return_notify(struct task_struct *prev,
  24. struct task_struct *next)
  25. {
  26. }
  27. static inline void fire_user_return_notifiers(void) {}
  28. #endif
  29. #endif