Subversion Repositories Kolibri OS

Rev

Rev 5272 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5272 Rev 6082
Line 28... Line 28...
28
}
28
}
Line 29... Line 29...
29
 
29
 
30
/*
30
/*
31
 * must be macros to avoid header recursion hell
31
 * must be macros to avoid header recursion hell
32
 */
32
 */
33
#define init_task_preempt_count(p) do { \
-
 
34
	task_thread_info(p)->saved_preempt_count = PREEMPT_DISABLED; \
-
 
Line 35... Line 33...
35
} while (0)
33
#define init_task_preempt_count(p) do { } while (0)
36
 
-
 
37
#define init_idle_preempt_count(p, cpu) do { \
34
 
38
	task_thread_info(p)->saved_preempt_count = PREEMPT_ENABLED; \
35
#define init_idle_preempt_count(p, cpu) do { \
Line 39... Line 36...
39
	per_cpu(__preempt_count, (cpu)) = PREEMPT_ENABLED; \
36
	per_cpu(__preempt_count, (cpu)) = PREEMPT_ENABLED; \
40
} while (0)
37
} while (0)
Line 88... Line 85...
88
}
85
}
Line 89... Line 86...
89
 
86
 
90
/*
87
/*
91
 * Returns true when we need to resched and can (barring IRQ state).
88
 * Returns true when we need to resched and can (barring IRQ state).
92
 */
89
 */
93
static __always_inline bool should_resched(void)
90
static __always_inline bool should_resched(int preempt_offset)
94
{
91
{
95
	return unlikely(!raw_cpu_read_4(__preempt_count));
92
	return unlikely(raw_cpu_read_4(__preempt_count) == preempt_offset);
Line 96... Line 93...
96
}
93
}
97
 
94
 
98
#ifdef CONFIG_PREEMPT
95
#ifdef CONFIG_PREEMPT
99
  extern asmlinkage void ___preempt_schedule(void);
96
  extern asmlinkage void ___preempt_schedule(void);
100
# define __preempt_schedule() asm ("call ___preempt_schedule")
-
 
101
  extern asmlinkage void preempt_schedule(void);
97
# define __preempt_schedule() asm ("call ___preempt_schedule")
102
# ifdef CONFIG_CONTEXT_TRACKING
98
  extern asmlinkage void preempt_schedule(void);
103
    extern asmlinkage void ___preempt_schedule_context(void);
99
  extern asmlinkage void ___preempt_schedule_notrace(void);
104
#   define __preempt_schedule_context() asm ("call ___preempt_schedule_context")
-
 
105
    extern asmlinkage void preempt_schedule_context(void);
100
# define __preempt_schedule_notrace() asm ("call ___preempt_schedule_notrace")
Line 106... Line 101...
106
# endif
101
  extern asmlinkage void preempt_schedule_notrace(void);