Commit d6c23bb3 authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files

sched: Add get_current_state()

parent 3ba9f93b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3910,7 +3910,7 @@ int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin)

	hctx->poll_considered++;

	state = current->state;
	state = get_current_state();
	do {
		int ret;

+2 −0
Original line number Diff line number Diff line
@@ -213,6 +213,8 @@ struct task_group;

#endif

#define get_current_state()	READ_ONCE(current->state)

/* Task command name length: */
#define TASK_COMM_LEN			16

+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ bool __refrigerator(bool check_kthr_stop)
	/* Hmm, should we be allowed to suspend when there are realtime
	   processes around? */
	bool was_frozen = false;
	long save = current->state;
	unsigned int save = get_current_state();

	pr_debug("%s entered refrigerator\n", current->comm);

+3 −3
Original line number Diff line number Diff line
@@ -9098,15 +9098,15 @@ static inline int preempt_count_equals(int preempt_offset)

void __might_sleep(const char *file, int line, int preempt_offset)
{
	unsigned int state = get_current_state();
	/*
	 * Blocking primitives will set (and therefore destroy) current->state,
	 * since we will exit with TASK_RUNNING make sure we enter with it,
	 * otherwise we will destroy state.
	 */
	WARN_ONCE(current->state != TASK_RUNNING && current->task_state_change,
	WARN_ONCE(state != TASK_RUNNING && current->task_state_change,
			"do not call blocking ops when !TASK_RUNNING; "
			"state=%lx set at [<%p>] %pS\n",
			current->state,
			"state=%x set at [<%p>] %pS\n", state,
			(void *)current->task_state_change,
			(void *)current->task_state_change);