| #include <fcntl.h> | 
 | #include <stdio.h> | 
 |  | 
 | // These definitions seem backwards, but they are not. | 
 | //  They are assigned from the persepctive of how qemu sees them | 
 | #define SYSCALL_SERVER_PIPE_IN  ".syscall_server_pipe.out" | 
 | #define SYSCALL_SERVER_PIPE_OUT ".syscall_server_pipe.in" | 
 |  | 
 | int init_syscall_server(int* fd_read, int* fd_write) { | 
 |  | 
 | 	printf("Waiting for other end of pipe to connect...\n"); | 
 | 	int write = open(SYSCALL_SERVER_PIPE_OUT, O_WRONLY); | 
 | 	if(write < 0) | 
 | 		return write; | 
 |  | 
 | 	int read = open(SYSCALL_SERVER_PIPE_IN, O_RDONLY); | 
 | 	if(read < 0) { | 
 | 		close(write); | 
 | 		return read; | 
 | 	} | 
 |  | 
 |     *fd_read = read; | 
 | 	*fd_write = write; | 
 |     return read+write; | 
 | } | 
 |  | 
 | int read_syscall_server(int fd, char* buf, int len) { | 
 | 	return read(fd, buf, len); | 
 | } | 
 |  | 
 | int write_syscall_server(int fd, char* buf, int len, int bytes_to_follow) { | 
 | 	return write(fd, buf, len); | 
 | } | 
 |  | 
 |  |