Lines Matching +full:non +full:- +full:pc

1 /* SPDX-License-Identifier: GPL-2.0 */
13 return READ_ONCE(current_thread_info()->preempt.count); in preempt_count()
16 static inline void preempt_count_set(u64 pc) in preempt_count_set() argument
19 WRITE_ONCE(current_thread_info()->preempt.count, pc); in preempt_count_set()
23 task_thread_info(p)->preempt_count = FORK_PREEMPT_COUNT; \
27 task_thread_info(p)->preempt_count = PREEMPT_DISABLED; \
32 current_thread_info()->preempt.need_resched = 0; in set_preempt_need_resched()
37 current_thread_info()->preempt.need_resched = 1; in clear_preempt_need_resched()
42 return !current_thread_info()->preempt.need_resched; in test_preempt_need_resched()
47 u32 pc = READ_ONCE(current_thread_info()->preempt.count); in __preempt_count_add() local
48 pc += val; in __preempt_count_add()
49 WRITE_ONCE(current_thread_info()->preempt.count, pc); in __preempt_count_add()
54 u32 pc = READ_ONCE(current_thread_info()->preempt.count); in __preempt_count_sub() local
55 pc -= val; in __preempt_count_sub()
56 WRITE_ONCE(current_thread_info()->preempt.count, pc); in __preempt_count_sub()
62 u64 pc = READ_ONCE(ti->preempt_count); in __preempt_count_dec_and_test() local
65 WRITE_ONCE(ti->preempt.count, --pc); in __preempt_count_dec_and_test()
71 * interrupt occurring between the non-atomic READ_ONCE/WRITE_ONCE in __preempt_count_dec_and_test()
74 return !pc || !READ_ONCE(ti->preempt_count); in __preempt_count_dec_and_test()
79 u64 pc = READ_ONCE(current_thread_info()->preempt_count); in should_resched() local
80 return pc == preempt_offset; in should_resched()