patch-2.4.15 linux/include/linux/sched.h
Next file: linux/include/linux/seq_file.h
Previous file: linux/include/linux/reiserfs_fs_sb.h
Back to the patch index
Back to the overall index
- Lines: 67
- Date:
Thu Nov 22 11:46:19 2001
- Orig file:
v2.4.14/linux/include/linux/sched.h
- Orig date:
Mon Nov 5 15:55:35 2001
diff -u --recursive --new-file v2.4.14/linux/include/linux/sched.h linux/include/linux/sched.h
@@ -304,8 +304,16 @@
long nice;
unsigned long policy;
struct mm_struct *mm;
- int has_cpu, processor;
- unsigned long cpus_allowed;
+ int processor;
+ /*
+ * cpus_runnable is ~0 if the process is not running on any
+ * CPU. It's (1 << cpu) if it's running on a CPU. This mask
+ * is updated under the runqueue lock.
+ *
+ * To determine whether a process might run on a CPU, this
+ * mask is AND-ed with cpus_allowed.
+ */
+ unsigned long cpus_runnable, cpus_allowed;
/*
* (only the 'next' pointer fits into the cacheline, but
* that's just fine.)
@@ -399,6 +407,9 @@
u32 self_exec_id;
/* Protection of (de-)allocation: mm, files, fs, tty */
spinlock_t alloc_lock;
+
+/* journalling filesystem info */
+ void *journal_info;
};
/*
@@ -461,6 +472,7 @@
policy: SCHED_OTHER, \
mm: NULL, \
active_mm: &init_mm, \
+ cpus_runnable: -1, \
cpus_allowed: -1, \
run_list: LIST_HEAD_INIT(tsk.run_list), \
next_task: &tsk, \
@@ -486,7 +498,8 @@
sig: &init_signals, \
pending: { NULL, &tsk.pending.head, {{0}}}, \
blocked: {{0}}, \
- alloc_lock: SPIN_LOCK_UNLOCKED \
+ alloc_lock: SPIN_LOCK_UNLOCKED, \
+ journal_info: NULL, \
}
@@ -535,6 +548,19 @@
;
return p;
+}
+
+#define task_has_cpu(tsk) ((tsk)->cpus_runnable != ~0UL)
+
+static inline void task_set_cpu(struct task_struct *tsk, unsigned int cpu)
+{
+ tsk->processor = cpu;
+ tsk->cpus_runnable = 1UL << cpu;
+}
+
+static inline void task_release_cpu(struct task_struct *tsk)
+{
+ tsk->cpus_runnable = ~0UL;
}
/* per-UID process charging. */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)