Messages in this thread | | | Date | Sun, 14 May 2006 00:38:56 +1000 | From | Nick Piggin <> | Subject | Re: [PATCH] Silly bitmap size accounting fix |
| |
Steven Rostedt wrote: > On Sat, 13 May 2006, Nick Piggin wrote: > > >>Ingo Molnar wrote: >> >>>* Steven Rostedt <rostedt@goodmis.org> wrote: >>> >>> >>> >>>>-#define BITMAP_SIZE ((((MAX_PRIO+1+7)/8)+sizeof(long)-1)/sizeof(long)) >>>>+#define BITMAP_SIZE ((((MAX_PRIO+7)/8)+sizeof(long)-1)/sizeof(long)) >>> >>> >>>Acked-by: Ingo Molnar <mingo@elte.hu> >> >>Really?! What about the delimiter bit set at MAX_PRIO? > > > > // delimiter for bitsearch > __set_bit(MAX_PRIO, array->bitmap); > > > Ah! I see what you mean. New patch (add a comment).
That would have caused someone a world of pain 3 years ahead ;)
> > -- Steve > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
OK I guess. Does it help to also spell out exactly what's going on there?
> > Index: linux-2.6.17-rc3-mm1/kernel/sched.c > =================================================================== > --- linux-2.6.17-rc3-mm1.orig/kernel/sched.c 2006-05-12 04:02:32.000000000 -0400 > +++ linux-2.6.17-rc3-mm1/kernel/sched.c 2006-05-13 10:09:15.000000000 -0400 > @@ -192,6 +192,10 @@ static inline unsigned int task_timeslic > * These are the runqueue data structures: > */ > > +/* > + * Calculate BITMAP_SIZE. > + * The bitmask holds MAX_PRIO bits + 1 for the delimiter.
+ * Calculation is to find the minimum number of longs that holds MAX_PRIO+1 bits: + * size-in-chars = ceiling((MAX_PRIO+1) / CHAR_BITS) + * size-in-longs = ceiling(size-in-chars / sizeof(long))
> + */ > #define BITMAP_SIZE ((((MAX_PRIO+1+7)/8)+sizeof(long)-1)/sizeof(long)) >
-- SUSE Labs, Novell Inc. Send instant messages to your online friends http://au.messenger.yahoo.com
- 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/
| |