History

sched: Add get_current_state()

Remove yet another few p->state accesses.

Peter Zijlstra committed 5 years ago

Commit d6c23bb1 parent 3ba9f934 files · +7 −5Browse files

Unified · Split

4 files
  1. block/blk-mq.c +1 −1
  2. include/linux/sched.h +2 −0
  3. kernel/freezer.c +1 −1
  4. kernel/sched/core.c +3 −3
block/blk-mq.c+1−1
@@ -3910,7 +3910,7 @@ int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin) · 3909 unmodified lines
3910 3910
3911 hctx->poll_considered++;3911 hctx->poll_considered++;
3912 3912
3913 state = current->state;3913 state = get_current_state();
3914 do {3914 do {
3915 int ret;3915 int ret;
3916 3916
include/linux/sched.h+2−0
@@ -213,6 +213,8 @@ struct task_group; · 212 unmodified lines
213 213
214#endif214#endif
215 215
216#define get_current_state() READ_ONCE(current->state)
217
216/* Task command name length: */218/* Task command name length: */
217#define TASK_COMM_LEN 16219#define TASK_COMM_LEN 16
218 220
kernel/freezer.c+1−1
@@ -58,7 +58,7 @@ bool __refrigerator(bool check_kthr_stop) · 57 unmodified lines
58 /* Hmm, should we be allowed to suspend when there are realtime58 /* Hmm, should we be allowed to suspend when there are realtime
59 processes around? */59 processes around? */
60 bool was_frozen = false;60 bool was_frozen = false;
61 long save = current->state;61 unsigned int save = get_current_state();
62 62
63 pr_debug("%s entered refrigerator\n", current->comm);63 pr_debug("%s entered refrigerator\n", current->comm);
64 64
kernel/sched/core.c+3−3
@@ -9098,15 +9098,15 @@ static inline int preempt_count_equals(int preempt_offset) · 9097 unmodified lines
9098 9098
9099void __might_sleep(const char *file, int line, int preempt_offset)9099void __might_sleep(const char *file, int line, int preempt_offset)
9100{9100{
9101 unsigned int state = get_current_state();
9101 /*9102 /*
9102 * Blocking primitives will set (and therefore destroy) current->state,9103 * Blocking primitives will set (and therefore destroy) current->state,
9103 * since we will exit with TASK_RUNNING make sure we enter with it,9104 * since we will exit with TASK_RUNNING make sure we enter with it,
9104 * otherwise we will destroy state.9105 * otherwise we will destroy state.
9105 */9106 */
9106 WARN_ONCE(current->state != TASK_RUNNING && current->task_state_change,9107 WARN_ONCE(state != TASK_RUNNING && current->task_state_change,
9107 "do not call blocking ops when !TASK_RUNNING; "9108 "do not call blocking ops when !TASK_RUNNING; "
9108 "state=%lx set at [<%p>] %pS\n",9109 "state=%x set at [<%p>] %pS\n", state,
9109 current->state,
9110 (void *)current->task_state_change,9110 (void *)current->task_state_change,
9111 (void *)current->task_state_change);9111 (void *)current->task_state_change);
9112 9112

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