All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] [1/2] Use an own random generator for pageattr-test.c
@ 2008-03-04 17:34 Andi Kleen
  2008-03-04 17:34 ` [PATCH] [2/2] srandom32 fixes Andi Kleen
  0 siblings, 1 reply; 2+ messages in thread
From: Andi Kleen @ 2008-03-04 17:34 UTC (permalink / raw)
  To: linux-kernel, netdev, tglx


pageattr-test attempts to be repeatable and uses srandom32 to get a 
repeatable random number sequence.

Using srandom32() wasn't a good idea for various reasons:
- it is per cpu and if the cpu changes on a preemptible kernel it gets lost
- networking and random32 puts in some own state
- srandom32() does not actually reset the state, but just adds bits to 
it

Instead use a very simple private standard rnd that gives repeatable
results. I took the reference rand() from ISO-C.

Signed-off-by: Andi Kleen <ak@suse.de>

Index: linux/arch/x86/mm/pageattr-test.c
===================================================================
--- linux.orig/arch/x86/mm/pageattr-test.c
+++ linux/arch/x86/mm/pageattr-test.c
@@ -101,6 +101,14 @@ static int print_split(struct split_stat
 static unsigned long addr[NTEST];
 static unsigned int len[NTEST];
 
+static int next = 100;
+
+static unsigned my_rand(void)
+{
+	next = next * 1103515245 + 12345;
+	return next;
+}
+
 /* Change the global bit on random pages in the direct mapping */
 static int pageattr_test(void)
 {
@@ -123,10 +131,9 @@ static int pageattr_test(void)
 	memset(bm, 0, (max_pfn_mapped + 7) / 8);
 
 	failed += print_split(&sa);
-	srandom32(100);
 
 	for (i = 0; i < NTEST; i++) {
-		unsigned long pfn = random32() % max_pfn_mapped;
+		unsigned long pfn = my_rand() % max_pfn_mapped;
 
 		addr[i] = (unsigned long)__va(pfn << PAGE_SHIFT);
 		len[i] = random32() % 100;

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-03-04 17:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-04 17:34 [PATCH] [1/2] Use an own random generator for pageattr-test.c Andi Kleen
2008-03-04 17:34 ` [PATCH] [2/2] srandom32 fixes Andi Kleen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.