|
@@ -121,6 +121,17 @@ extern unsigned long nr_iowait(void);
|
|
#define set_task_state(tsk, state_value) \
|
|
#define set_task_state(tsk, state_value) \
|
|
set_mb((tsk)->state, (state_value))
|
|
set_mb((tsk)->state, (state_value))
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * set_current_state() includes a barrier so that the write of current->state
|
|
|
|
+ * is correctly serialised wrt the caller's subsequent test of whether to
|
|
|
|
+ * actually sleep:
|
|
|
|
+ *
|
|
|
|
+ * set_current_state(TASK_UNINTERRUPTIBLE);
|
|
|
|
+ * if (do_i_need_to_sleep())
|
|
|
|
+ * schedule();
|
|
|
|
+ *
|
|
|
|
+ * If the caller does not need such serialisation then use __set_current_state()
|
|
|
|
+ */
|
|
#define __set_current_state(state_value) \
|
|
#define __set_current_state(state_value) \
|
|
do { current->state = (state_value); } while (0)
|
|
do { current->state = (state_value); } while (0)
|
|
#define set_current_state(state_value) \
|
|
#define set_current_state(state_value) \
|