Lines Matching +full:non +full:- +full:pc
1 /* SPDX-License-Identifier: GPL-2.0 */
12 return READ_ONCE(current_thread_info()->preempt.count); in preempt_count()
15 static inline void preempt_count_set(u64 pc) in preempt_count_set() argument
18 WRITE_ONCE(current_thread_info()->preempt.count, pc); in preempt_count_set()
22 task_thread_info(p)->preempt_count = FORK_PREEMPT_COUNT; \
26 task_thread_info(p)->preempt_count = PREEMPT_DISABLED; \
31 current_thread_info()->preempt.need_resched = 0; in set_preempt_need_resched()
36 current_thread_info()->preempt.need_resched = 1; in clear_preempt_need_resched()
41 return !current_thread_info()->preempt.need_resched; in test_preempt_need_resched()
46 u32 pc = READ_ONCE(current_thread_info()->preempt.count); in __preempt_count_add() local
47 pc += val; in __preempt_count_add()
48 WRITE_ONCE(current_thread_info()->preempt.count, pc); in __preempt_count_add()
53 u32 pc = READ_ONCE(current_thread_info()->preempt.count); in __preempt_count_sub() local
54 pc -= val; in __preempt_count_sub()
55 WRITE_ONCE(current_thread_info()->preempt.count, pc); in __preempt_count_sub()
61 u64 pc = READ_ONCE(ti->preempt_count); in __preempt_count_dec_and_test() local
64 WRITE_ONCE(ti->preempt.count, --pc); in __preempt_count_dec_and_test()
70 * interrupt occurring between the non-atomic READ_ONCE/WRITE_ONCE in __preempt_count_dec_and_test()
73 return !pc || !READ_ONCE(ti->preempt_count); in __preempt_count_dec_and_test()
78 u64 pc = READ_ONCE(current_thread_info()->preempt_count); in should_resched() local
79 return pc == preempt_offset; in should_resched()