|  | #define _XOPEN_SOURCE 600 | 
|  | #include <stdlib.h> | 
|  | #include <fcntl.h> | 
|  | #include <string.h> | 
|  |  | 
|  | #define SYSCALL_SERVER_PTY ".syscall_server_pty" | 
|  |  | 
|  | int init_syscall_server(int* fd_read, int* fd_write) { | 
|  | // File descriptor of our open serial port | 
|  |  | 
|  | int fd = posix_openpt(O_RDWR | O_NOCTTY); | 
|  | if(fd < 0) | 
|  | return fd; | 
|  | grantpt (fd); | 
|  | unlockpt (fd); | 
|  | char* pty_dev = ptsname(fd); | 
|  |  | 
|  | //Output the newly allocated slave device into a file | 
|  | int pty_fd = open(SYSCALL_SERVER_PTY, | 
|  | O_RDWR | O_CREAT | O_TRUNC, | 
|  | S_IRUSR | S_IWUSR); | 
|  | write(pty_fd, pty_dev, strlen(pty_dev)); | 
|  | *fd_read = *fd_write = fd; | 
|  | return fd; | 
|  | } | 
|  |  | 
|  | 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); | 
|  | } | 
|  |  | 
|  |  |