Thread (14 messages) 14 messages, 5 authors, 2008-12-19

Re: [PATCH][v2] fork_init: fix division by zero

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-12-11 20:46:03
Also in: lkml

On Thu, 11 Dec 2008 20:28:00 +0000
Al Viro [off-list ref] wrote:
On Thu, Dec 11, 2008 at 12:16:35PM -0800, Andrew Morton wrote:
quoted
quoted
+#if (8 * THREAD_SIZE) > PAGE_SIZE
 	max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
+#else
+	max_threads = mempages * (PAGE_SIZE / (8 * THREAD_SIZE));
+#endif
The expression you've chosen here can be quite inacccurate, because
((PAGE_SIZE / (8 * THREAD_SIZE)) is a small number.  The way to
preserve accuracy is

	max_threads = (mempages * PAGE_SIZE) / (8 * THREAD_SIZE);

so how about avoiding the nasty ifdefs and doing
Are you sure?
No, not at all.  It's all too hard.  Which is why I'm looking for
simplification.
 Do they actually cross the page boundaries?
Some flavours of slab have at times done an order-1 allocation for
objects which would fit into an order-0 page (etc) if it looks like
that will be beneficial from a packing POV.  I'm unsure whether that
still happens - I tried to get it stamped out for reliability reasons.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help