#pragma once struct earth { /* CPU interface */ int (*intr_enable)(); int (*intr_disable)(); int (*intr_register)(void (*handler)(int)); int (*excp_register)(void (*handler)(int)); int (*mmu_alloc)(int* frame_no, int* cached_addr); int (*mmu_free)(int pid); int (*mmu_map)(int pid, int page_no, int frame_no, int flag); int (*mmu_switch)(int pid); /* Disk and tty device driver interface */ int (*disk_read)(int block_no, int nblocks, char* dst); int (*disk_write)(int block_no, int nblocks, char* src); int (*tty_intr)(); int (*tty_read)(char* buf, int len); int (*tty_write)(const char *format, ...); int (*log_info)(const char *format, ...); int (*log_fatal)(const char *format, ...); int (*log_success)(const char *format, ...); int (*log_highlight)(const char *format, ...); }; struct grass { int work_dir_ino; char work_dir[32 * 16]; char work_dir_name[32]; };