1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * arch/arm/include/asm/thread_notify.h 4 * 5 * Copyright (C) 2006 Russell King. 6 */ 7 #ifndef ASMARM_THREAD_NOTIFY_H 8 #define ASMARM_THREAD_NOTIFY_H 9 10 #ifdef __KERNEL__ 11 12 #ifndef __ASSEMBLY__ 13 14 #include <linux/notifier.h> 15 #include <asm/thread_info.h> 16 17 static inline int thread_register_notifier(struct notifier_block *n) 18 { 19 extern struct atomic_notifier_head thread_notify_head; 20 return atomic_notifier_chain_register(&thread_notify_head, n); 21 } 22 23 static inline void thread_unregister_notifier(struct notifier_block *n) 24 { 25 extern struct atomic_notifier_head thread_notify_head; 26 atomic_notifier_chain_unregister(&thread_notify_head, n); 27 } 28 29 static inline void thread_notify(unsigned long rc, struct thread_info *thread) 30 { 31 extern struct atomic_notifier_head thread_notify_head; 32 atomic_notifier_call_chain(&thread_notify_head, rc, thread); 33 } 34 35 #endif 36 37 /* 38 * These are the reason codes for the thread notifier. 39 */ 40 #define THREAD_NOTIFY_FLUSH 0 41 #define THREAD_NOTIFY_EXIT 1 42 #define THREAD_NOTIFY_SWITCH 2 43 #define THREAD_NOTIFY_COPY 3 44 45 #endif 46 #endif 47