Messages in this thread | | | From | David Howells <> | Subject | Re: [PATCH 0/5] WorkStruct: Shrink work_struct by two thirds | Date | Thu, 23 Nov 2006 14:59:32 +0000 |
| |
Andrew Morton <akpm@osdl.org> wrote:
> waaaaaaaay too many rejects for me, sorry. This is quite the worst time in > the kernel cycle to be preparing patches like this. Especially when they're > against mainline when everyone has so much material pending.
Actually... there is a way to do this sort of incrementally, I think:
(1) Turn this sort of thing:
do_work(struct x *x) { ... }
queue_x(struct x *x) { INIT_WORK(&x->work, do_work, x); schedule_work(&x->work) }
Into this sort of thing:
#define DECLARE_IMMEDIATE_WORK(w, f) DECLARE_WORK((w), (f), (w)) #define DECLARE_DELAYED_WORK(w, f) DECLARE_WORK((w), (f), (w)) #define INIT_IMMEDIATE_WORK(w, f) INIT_WORK((w), (f), (w)) #define INIT_DELAYED_WORK(w, f) INIT_WORK((w), (f), (w))
do_work(struct work_struct *work) { struct x *x = container_of(work, struct x, work); ... }
queue_x(struct x *x) { INIT_IMMEDIATE_WORK(&x->work, do_work); //or INIT_DELAYED_WORK(&x->work, do_work); schedule_work(&x->work) }
(2) Make delayed_work equivalent to work_struct:
#define delayed_work work_struct
(3) Then apply the rest of the patches such that they remove the #defines as appropriate.
Might that help?
David - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |