#include <sched.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <parlib/vcore.h>

void child_handler(int readfd, int writefd)
{
	char c;
	read(readfd, &c, 1);
	close(readfd);
	printf("Child read from pipe0\n");
	printf("Child writing to pipe1\n");
	write(writefd, "", 1);
	close(writefd);
	exit(0);
}

void parent_handler(int readfd, int writefd)
{
	/* Force the child to run first. */
	for (int i = 0; i < 10; i++)
		sched_yield();

	char c;
	printf("Parent writing to pipe0\n");
	write(writefd, "", 1);
	close(writefd);
	read(readfd, &c, 1);
	close(readfd);
	printf("Parent read from pipe1\n");
	exit(0);
}

int main(int argc, char **argv)
{
	int pipe0[2];
	int pipe1[2];
	pipe(pipe0);
	pipe(pipe1);
	pid_t child = fork();
	if (child == 0) {
		close(pipe0[1]);
		close(pipe1[0]);
		child_handler(pipe0[0], pipe1[1]);
	} else {
		close(pipe0[0]);
		close(pipe1[1]);
		parent_handler(pipe1[0], pipe0[1]);
	}
	return 0;
}
