source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/linux/preempt.h

Last change on this file was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 1.4 KB
RevLine 
[2]1#ifndef __LINUX_PREEMPT_H
2#define __LINUX_PREEMPT_H
3
4/*
5 * include/linux/preempt.h - macros for accessing and manipulating
6 * preempt_count (used for kernel preemption, interrupt count, etc.)
7 */
8
9#include <linux/linkage.h>
10
11#ifdef CONFIG_DEBUG_PREEMPT
12  extern void fastcall add_preempt_count(int val);
13  extern void fastcall sub_preempt_count(int val);
14#else
15# define add_preempt_count(val) do { preempt_count() += (val); } while (0)
16# define sub_preempt_count(val) do { preempt_count() -= (val); } while (0)
17#endif
18
19#define inc_preempt_count() add_preempt_count(1)
20#define dec_preempt_count() sub_preempt_count(1)
21
22#define preempt_count() (current_thread_info()->preempt_count)
23
24#ifdef CONFIG_PREEMPT
25
26asmlinkage void preempt_schedule(void);
27
28#define preempt_disable() \
29do { \
30        inc_preempt_count(); \
31        barrier(); \
32} while (0)
33
34#define preempt_enable_no_resched() \
35do { \
36        barrier(); \
37        dec_preempt_count(); \
38} while (0)
39
40#define preempt_check_resched() \
41do { \
42        if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \
43                preempt_schedule(); \
44} while (0)
45
46#define preempt_enable() \
47do { \
48        preempt_enable_no_resched(); \
49        preempt_check_resched(); \
50} while (0)
51
52#else
53
54#define preempt_disable()               do { } while (0)
55#define preempt_enable_no_resched()     do { } while (0)
56#define preempt_enable()                do { } while (0)
57#define preempt_check_resched()         do { } while (0)
58
59#endif
60
61#endif /* __LINUX_PREEMPT_H */
Note: See TracBrowser for help on using the repository browser.