toaruos/userspace/multitasking-test.c
Kevin Lange c88d6dcb4f Add or update the heading comments for user apps.
Adds useful descriptions to ones that were lacking them, updates ones
that were innacurate, etc.
2012-07-06 21:08:28 -07:00

54 lines
922 B
C

/* vim: tabstop=4 noexpandtab shiftwidth=4
*
* Multitasking Thrasher
*
* Useful for testing that multitasking still works.
* Starts up a bunch of threads, lets them do stuff,
* cleans them up, etc.
*
*/
#include <stdio.h>
#include <stdint.h>
#include <syscall.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char ** argv) {
int nthreads = 2, base_pid = getpid(), npid = -1;
if (argc > 1) {
/* Read some arguments */
int c;
while ((c = getopt(argc, argv, "n:")) != -1) {
switch (c) {
case 'n':
nthreads = atoi(optarg);
break;
default:
break;
}
}
}
printf("I am pid %d\n", base_pid);
printf("Starting %d threads.\n", nthreads);
for (int i = 0; i < nthreads; ++i) {
int pid = fork();
if (!pid) {
while (1) {
printf("%c", i + 'A');
fflush(stdout);
}
} else {
npid = pid;
}
}
printf("Done.\n");
return 0;
}