Add helper functions for thread testing.

This commit is contained in:
Geoffrey Challen 2015-12-30 09:59:48 -06:00
parent 0009ee0b80
commit ce8a0f09a4
3 changed files with 28 additions and 1 deletions

View File

@ -194,5 +194,7 @@ void kprintf_bootstrap(void);
#define DIVROUNDUP(a,b) (((a)+(b)-1)/(b))
#define ROUNDUP(a,b) (DIVROUNDUP(a,b)*b)
void random_yielder(uint32_t);
void random_spinner(uint32_t);
#endif /* _LIB_H_ */

View File

@ -30,6 +30,7 @@
#include <types.h>
#include <kern/errmsg.h>
#include <lib.h>
#include <thread.h>
/*
* Like strdup, but calls kmalloc.
@ -60,3 +61,27 @@ strerror(int errcode)
panic("Invalid error code %d\n", errcode);
return NULL;
}
/*
* Helper functions used by testing and problem driver code
* to establish better mixtures of threads.
*/
void
random_yielder(uint32_t max_yield_count)
{
uint32_t i;
for (i = 0; i < random() % max_yield_count; i++) {
thread_yield();
}
}
void
random_spinner(uint32_t max_spin_count)
{
uint32_t i;
volatile int spin;
for (i = 0; i < random() % max_spin_count; i++) {
spin += i;
}
}