*
* Authors: Rickard E. (Rik) Faith <faith@valinux.com>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c,v 1.4 2000/06/17 00:03:34 martin Exp $
- *
* DESCRIPTION
*
* This file contains a simple, straightforward implementation of the Park
*
*/
+#include <stdio.h>
+#include <stdlib.h>
+
#define RANDOM_MAIN 0
-#if RANDOM_MAIN
-# include <stdio.h>
-# include <stdlib.h>
-#else
+#if !RANDOM_MAIN
+# include "drm.h"
# include "xf86drm.h"
-# ifdef XFree86LOADER
-# include "xf86.h"
-# include "xf86_ansic.h"
-# else
-# include <stdio.h>
-# include <stdlib.h>
-# endif
#endif
-#define N(x) drm##x
-
#define RANDOM_MAGIC 0xfeedbeef
#define RANDOM_DEBUG 0
} RandomState;
#if RANDOM_MAIN
-extern void *N(RandomCreate)(unsigned long seed);
-extern int N(RandomDestroy)(void *state);
-extern unsigned long N(Random)(void *state);
-extern double N(RandomDouble)(void *state);
+extern void *drmRandomCreate(unsigned long seed);
+extern int drmRandomDestroy(void *state);
+extern unsigned long drmRandom(void *state);
+extern double drmRandomDouble(void *state);
#endif
-void *N(RandomCreate)(unsigned long seed)
+void *drmRandomCreate(unsigned long seed)
{
RandomState *state;
return state;
}
-int N(RandomDestroy)(void *state)
+int drmRandomDestroy(void *state)
{
RANDOM_FREE(state);
return 0;
}
-unsigned long N(Random)(void *state)
+unsigned long drmRandom(void *state)
{
RandomState *s = (RandomState *)state;
long hi;
return s->seed;
}
-double N(RandomDouble)(void *state)
+double drmRandomDouble(void *state)
{
RandomState *s = (RandomState *)state;
- return (double)N(Random)(state)/(double)s->m;
+ return (double)drmRandom(state)/(double)s->m;
}
#if RANDOM_MAIN
unsigned long initial;
void *state;
- state = N(RandomCreate)(seed);
- initial = N(Random)(state);
+ state = drmRandomCreate(seed);
+ initial = drmRandom(state);
++count;
- while (initial != N(Random)(state)) {
+ while (initial != drmRandom(state)) {
if (!++count) break;
}
printf("With seed of %10ld, period = %10lu (0x%08lx)\n",
seed, count, count);
- N(RandomDestroy)(state);
+ drmRandomDestroy(state);
}
int main(void)
int i;
unsigned long rand;
- state = N(RandomCreate)(1);
+ state = drmRandomCreate(1);
for (i = 0; i < 10000; i++) {
- rand = N(Random)(state);
+ rand = drmRandom(state);
}
printf("After 10000 iterations: %lu (%lu expected): %s\n",
rand, state->check,
rand - state->check ? "*INCORRECT*" : "CORRECT");
- N(RandomDestroy)(state);
+ drmRandomDestroy(state);
printf("Checking periods...\n");
check_period(1);