aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAlexander Gordeev <agordeev@redhat.com>2012-03-09 14:59:26 +0100
committerThomas Gleixner <tglx@linutronix.de>2012-03-09 17:19:08 +0100
commit4bcdf1d0b652bc33d52f2322b77463e4dc58abf8 (patch)
tree2a8ecf0f6ef1d0c85a4553cb1d1c7dc74706488a /include
parentgenirq: Fix incorrect check for forced IRQ thread handler (diff)
downloadlinux-dev-4bcdf1d0b652bc33d52f2322b77463e4dc58abf8.tar.xz
linux-dev-4bcdf1d0b652bc33d52f2322b77463e4dc58abf8.zip
genirq: Get rid of unnecessary irqaction field in task_struct
When a new thread handler is created, an irqaction is passed to it as data. Not only that irqaction is stored in task_struct by the handler for later use, but also a structure associated with the kernel thread keeps this value as long as the thread exists. This fix kicks irqaction out off task_struct. Yes, I introduce new bit field. But it allows not only to eliminate the duplicate, but also shortens size of task_struct. Reported-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Alexander Gordeev <agordeev@redhat.com> Link: http://lkml.kernel.org/r/20120309135925.GB2114@dhcp-26-207.brq.redhat.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include')
-rw-r--r--include/linux/sched.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 7d379a6bfd88..07f537a371ce 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1319,6 +1319,11 @@ struct task_struct {
unsigned sched_reset_on_fork:1;
unsigned sched_contributes_to_load:1;
+#ifdef CONFIG_GENERIC_HARDIRQS
+ /* IRQ handler threads */
+ unsigned irq_thread:1;
+#endif
+
pid_t pid;
pid_t tgid;
@@ -1427,11 +1432,6 @@ struct task_struct {
* mempolicy */
spinlock_t alloc_lock;
-#ifdef CONFIG_GENERIC_HARDIRQS
- /* IRQ handler threads */
- struct irqaction *irqaction;
-#endif
-
/* Protection of the PI data structures: */
raw_spinlock_t pi_lock;