text: struct stat;
  struct rtcdate;
  struct spinlock;
  
  // system calls
  int fork(void);
  int exit(void) __attribute__((noreturn));
  int wait(void);
  int pipe(int*);
  int write(int, const void*, int);
  int read(int, void*, int);
  int close(int);
  int kill(int);
  int exec(char*, char**);
  int open(const char*, int);
  int mknod(const char*, short, short);
  int unlink(const char*);
  int fstat(int fd, struct stat*);
  int link(const char*, const char*);
  int mkdir(const char*);
  int chdir(const char*);
  int dup(int);
  int getpid(void);
  char* sbrk(int);
  int sleep(int);
  int uptime(void);
  int count_of_digit(int);
  int print_syscalls(void);
  void handle_alarms(void);
  void set_alarm(int);
  int set_edx(int);
  int read_registers(void);
  int print_proc_info(void);
  void set_proc_tickets(int, int);
  void set_proc_level(int, int);
  void check_lock(void);
  void sys_count(void);
  void* shmget(int);
  int testshmget(int);
  // ulib.c
  int stat(const char*, struct stat*);
  char* strcpy(char*, const char*);
  void *memmove(void*, const void*, int);
  char* strchr(const char*, char c);
  int strcmp(const char*, const char*);
  void printf(int, const char*, ...);
  char* gets(char*, int max);
  uint strlen(const char*);
  void* memset(void*, int, uint);
  void* malloc(uint);
  void free(void*);
  int atoi(const char*);
  