diff options
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 3ab08e4bb6b8..d7f98f637a2a 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1210,6 +1210,13 @@ struct task_struct { | |||
1210 | int rcu_flipctr_idx; | 1210 | int rcu_flipctr_idx; |
1211 | #endif /* #ifdef CONFIG_PREEMPT_RCU */ | 1211 | #endif /* #ifdef CONFIG_PREEMPT_RCU */ |
1212 | 1212 | ||
1213 | #ifdef CONFIG_TREE_PREEMPT_RCU | ||
1214 | int rcu_read_lock_nesting; | ||
1215 | char rcu_read_unlock_special; | ||
1216 | int rcu_blocked_cpu; | ||
1217 | struct list_head rcu_node_entry; | ||
1218 | #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */ | ||
1219 | |||
1213 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) | 1220 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) |
1214 | struct sched_info sched_info; | 1221 | struct sched_info sched_info; |
1215 | #endif | 1222 | #endif |
@@ -1723,6 +1730,36 @@ extern cputime_t task_gtime(struct task_struct *p); | |||
1723 | #define tsk_used_math(p) ((p)->flags & PF_USED_MATH) | 1730 | #define tsk_used_math(p) ((p)->flags & PF_USED_MATH) |
1724 | #define used_math() tsk_used_math(current) | 1731 | #define used_math() tsk_used_math(current) |
1725 | 1732 | ||
1733 | #ifdef CONFIG_TREE_PREEMPT_RCU | ||
1734 | |||
1735 | #define RCU_READ_UNLOCK_BLOCKED (1 << 0) /* blocked while in RCU read-side. */ | ||
1736 | #define RCU_READ_UNLOCK_NEED_QS (1 << 1) /* RCU core needs CPU response. */ | ||
1737 | #define RCU_READ_UNLOCK_GOT_QS (1 << 2) /* CPU has responded to RCU core. */ | ||
1738 | |||
1739 | static inline void rcu_copy_process(struct task_struct *p) | ||
1740 | { | ||
1741 | p->rcu_read_lock_nesting = 0; | ||
1742 | p->rcu_read_unlock_special = 0; | ||
1743 | p->rcu_blocked_cpu = -1; | ||
1744 | INIT_LIST_HEAD(&p->rcu_node_entry); | ||
1745 | } | ||
1746 | |||
1747 | #elif defined(CONFIG_PREEMPT_RCU) | ||
1748 | |||
1749 | static inline void rcu_copy_process(struct task_struct *p) | ||
1750 | { | ||
1751 | p->rcu_read_lock_nesting = 0; | ||
1752 | p->rcu_flipctr_idx = 0; | ||
1753 | } | ||
1754 | |||
1755 | #else | ||
1756 | |||
1757 | static inline void rcu_copy_process(struct task_struct *p) | ||
1758 | { | ||
1759 | } | ||
1760 | |||
1761 | #endif | ||
1762 | |||
1726 | #ifdef CONFIG_SMP | 1763 | #ifdef CONFIG_SMP |
1727 | extern int set_cpus_allowed_ptr(struct task_struct *p, | 1764 | extern int set_cpus_allowed_ptr(struct task_struct *p, |
1728 | const struct cpumask *new_mask); | 1765 | const struct cpumask *new_mask); |