#include "lwp.h"
#include "lock.h"
-#include "preempt.h"
#define DEFAULT_READERS 5
printf("\t[Reader %d]\n", *id);
LWP_DispatchProcess(); /* Just relinquish control for now */
- PRE_PreemptMe();
for (;;) {
int i;
}
asleep--;
for (i = 0; i < 10000; i++);
- PRE_BeginCritical();
printf("[%d: %s]\n", *id, Remove(q));
- PRE_EndCritical();
ReleaseReadLock(&q->lock);
LWP_DispatchProcess();
}
char **mesg;
printf("\t[Writer]\n");
- PRE_PreemptMe();
/* Now loop & write data */
for (mesg = messages; *mesg != 0; mesg++) {
{
int nreaders, i;
PROCESS pid;
- afs_int32 interval; /* To satisfy Brad */
PROCESS *readers;
int *readerid;
PROCESS writer;
- struct timeval tv;
printf("\n*Readers & Writers*\n\n");
setbuf(stdout, 0);
sscanf(*++argv, "%d", &nreaders);
printf("[There will be %d readers]\n", nreaders);
- interval = (argc >= 3 ? atoi(*++argv) * 1000 : 50000);
-
if (argc == 4)
lwp_debug = 1;
LWP_InitializeProcessSupport(0, &pid);
printf("[Support initialized]\n");
- tv.tv_sec = 0;
- tv.tv_usec = interval;
- PRE_InitPreempt(&tv);
/* Initialize queue */
q = init();