/*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
- *
+ *
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
#include <afsconfig.h>
#include <afs/param.h>
-
-#ifdef AFS_NT40_ENV
-#include <malloc.h>
-#include <stdlib.h>
-#else
-#include <sys/time.h>
-extern char *calloc();
-#endif
-#include <stdio.h>
-#include <stdlib.h>
+#include <roken.h>
#include "lwp.h"
#include "lock.h"
#include "preempt.h"
-#include <afs/assert.h>
#define DEFAULT_READERS 5
}
char
-empty(q)
- queue *q;
+empty(queue *q)
{
return (q->prev == q && q->next == q);
}
}
char *
-Remove(q)
- queue *q;
+Remove(queue *q)
{
queue *old;
char *s;
if (empty(q)) {
printf("Remove from empty queue");
- assert(0);
+ exit(0);
}
old = q->next;
free(old);
return (s);
}
-\f
+
queue *q;
int asleep; /* Number of processes sleeping -- used for
* clean termination */
-static int
-read_process(id)
- int *id;
+static void *
+read_process(void *arg)
{
+ int *id = (int *) arg;
printf("\t[Reader %d]\n", *id);
LWP_DispatchProcess(); /* Just relinquish control for now */
PRE_PreemptMe();
for (;;) {
- register int i;
+ int i;
/* Wait until there is something in the queue */
asleep++;
return 0;
}
-static int
-write_process()
+static void *
+write_process(void *dummy)
{
static char *messages[] = {
"Mary had a little lamb,",
#include "AFS_component_version_number.c"
-main(argc, argv)
- int argc;
- char **argv;
+int
+main(int argc, char **argv)
{
int nreaders, i;
PROCESS pid;