History

tasks: Add a count of task RCU users

Add a count of the number of RCU users (currently 1) of the task struct so that we can later add the scheduler case and get rid of the very subtle task_rcu_dereference(), and just use rcu_dereference(). As suggested by Oleg have the count overlap rcu_head so that no additional space in task_struct is required.

Eric W. Biederman committed 7 years ago

Commit 3fbd7ee1 parent 42fd8ba4 files · +14 −6Browse files

Showing the changes to include/linux (2 of 4 files). Show all

Unified · Split

2 files
  1. include/linux/sched.h +4 −1
  2. include/linux/sched/task.h +1 −0
include/linux/sched.h+4−1
@@ -1147,7 +1147,10 @@ struct task_struct { · 1146 unmodified lines
1147 1147
1148 struct tlbflush_unmap_batch tlb_ubc;1148 struct tlbflush_unmap_batch tlb_ubc;
1149 1149
1150 struct rcu_head rcu;1150 union {
1151 refcount_t rcu_users;
1152 struct rcu_head rcu;
1153 };
1151 1154
1152 /* Cache last used pipe for splice(): */1155 /* Cache last used pipe for splice(): */
1153 struct pipe_inode_info *splice_pipe;1156 struct pipe_inode_info *splice_pipe;
include/linux/sched/task.h+1−0
@@ -120,6 +120,7 @@ static inline void put_task_struct(struct task_struct *t) · 119 unmodified lines
120}120}
121 121
122struct task_struct *task_rcu_dereference(struct task_struct **ptask);122struct task_struct *task_rcu_dereference(struct task_struct **ptask);
123void put_task_struct_rcu_user(struct task_struct *task);
123 124
124#ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT125#ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT
125extern int arch_task_struct_size __read_mostly;126extern int arch_task_struct_size __read_mostly;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t