| 1 | struct buf; |
| 2 | struct context; |
| 3 | struct file; |
| 4 | struct inode; |
| 5 | struct pipe; |
| 6 | struct proc; |
| 7 | struct rtcdate; |
| 8 | struct spinlock; |
| 9 | struct sleeplock; |
| 10 | struct stat; |
| 11 | struct superblock; |
| 12 | |
| 13 | // bio.c |
| 14 | void binit(void); |
| 15 | struct buf* bread(uint, uint); |
| 16 | void brelse(struct buf*); |
| 17 | void bwrite(struct buf*); |
| 18 | |
| 19 | // console.c |
| 20 | void consoleinit(void); |
| 21 | void cprintf(char*, ...); |
| 22 | void consoleintr(int(*)(void)); |
| 23 | void panic(char*) __attribute__((noreturn)); |
| 24 | |
| 25 | // exec.c |
| 26 | int exec(char*, char**); |
| 27 | |
| 28 | // file.c |
| 29 | struct file* filealloc(void); |
| 30 | void fileclose(struct file*); |
| 31 | struct file* filedup(struct file*); |
| 32 | void fileinit(void); |
| 33 | int fileread(struct file*, char*, int n); |
| 34 | int filestat(struct file*, struct stat*); |
| 35 | int filewrite(struct file*, char*, int n); |
| 36 | |
| 37 | // fs.c |
| 38 | void readsb(int dev, struct superblock *sb); |
| 39 | int dirlink(struct inode*, char*, uint); |
| 40 | struct inode* dirlookup(struct inode*, char*, uint*); |
| 41 | struct inode* ialloc(uint, short); |
| 42 | struct inode* idup(struct inode*); |
| 43 | void iinit(int dev); |
| 44 | void ilock(struct inode*); |
| 45 | void iput(struct inode*); |
| 46 | void iunlock(struct inode*); |
| 47 | void iunlockput(struct inode*); |
| 48 | void iupdate(struct inode*); |
| 49 | int namecmp(const char*, const char*); |
| 50 | struct inode* namei(char*); |
| 51 | struct inode* nameiparent(char*, char*); |
| 52 | int readi(struct inode*, char*, uint, uint); |
| 53 | void stati(struct inode*, struct stat*); |
| 54 | int writei(struct inode*, char*, uint, uint); |
| 55 | |
| 56 | // ide.c |
| 57 | void ideinit(void); |
| 58 | void ideintr(void); |
| 59 | void iderw(struct buf*); |
| 60 | |
| 61 | // ioapic.c |
| 62 | void ioapicenable(int irq, int cpu); |
| 63 | extern uchar ioapicid; |
| 64 | void ioapicinit(void); |
| 65 | |
| 66 | // kalloc.c |
| 67 | char* kalloc(void); |
| 68 | void kfree(char*); |
| 69 | void kinit1(void*, void*); |
| 70 | void kinit2(void*, void*); |
| 71 | |
| 72 | // kbd.c |
| 73 | void kbdintr(void); |
| 74 | |
| 75 | // lapic.c |
| 76 | void cmostime(struct rtcdate *r); |
| 77 | int lapicid(void); |
| 78 | extern volatile uint* lapic; |
| 79 | void lapiceoi(void); |
| 80 | void lapicinit(void); |
| 81 | void lapicstartap(uchar, uint); |
| 82 | void microdelay(int); |
| 83 | |
| 84 | // log.c |
| 85 | void initlog(int dev); |
| 86 | void log_write(struct buf*); |
| 87 | void begin_op(); |
| 88 | void end_op(); |
| 89 | |
| 90 | // mp.c |
| 91 | extern int ismp; |
| 92 | void mpinit(void); |
| 93 | |
| 94 | // picirq.c |
| 95 | void picenable(int); |
| 96 | void picinit(void); |
| 97 | |
| 98 | // pipe.c |
| 99 | int pipealloc(struct file**, struct file**); |
| 100 | void pipeclose(struct pipe*, int); |
| 101 | int piperead(struct pipe*, char*, int); |
| 102 | int pipewrite(struct pipe*, char*, int); |
| 103 | |
| 104 | //PAGEBREAK: 16 |
| 105 | // proc.c |
| 106 | int cpuid(void); |
| 107 | void exit(void); |
| 108 | int fork(void); |
| 109 | int growproc(int); |
| 110 | int kill(int); |
| 111 | struct cpu* mycpu(void); |
| 112 | struct proc* myproc(); |
| 113 | void pinit(void); |
| 114 | void procdump(void); |
| 115 | void scheduler(void) __attribute__((noreturn)); |
| 116 | void sched(void); |
| 117 | void setproc(struct proc*); |
| 118 | void sleep(void*, struct spinlock*); |
| 119 | void userinit(void); |
| 120 | int wait(void); |
| 121 | void wakeup(void*); |
| 122 | void yield(void); |
| 123 | |
| 124 | // swtch.S |
| 125 | void swtch(struct context**, struct context*); |
| 126 | |
| 127 | // spinlock.c |
| 128 | void acquire(struct spinlock*); |
| 129 | void getcallerpcs(void*, uint*); |
| 130 | int holding(struct spinlock*); |
| 131 | void initlock(struct spinlock*, char*); |
| 132 | void release(struct spinlock*); |
| 133 | void pushcli(void); |
| 134 | void popcli(void); |
| 135 | |
| 136 | // sleeplock.c |
| 137 | void acquiresleep(struct sleeplock*); |
| 138 | void releasesleep(struct sleeplock*); |
| 139 | int holdingsleep(struct sleeplock*); |
| 140 | void initsleeplock(struct sleeplock*, char*); |
| 141 | |
| 142 | // string.c |
| 143 | int memcmp(const void*, const void*, uint); |
| 144 | void* memmove(void*, const void*, uint); |
| 145 | void* memset(void*, int, uint); |
| 146 | char* safestrcpy(char*, const char*, int); |
| 147 | int strlen(const char*); |
| 148 | int strncmp(const char*, const char*, uint); |
| 149 | char* strncpy(char*, const char*, int); |
| 150 | |
| 151 | // syscall.c |
| 152 | int argint(int, int*); |
| 153 | int argptr(int, char**, int); |
| 154 | int argstr(int, char**); |
| 155 | int fetchint(uint, int*); |
| 156 | int fetchstr(uint, char**); |
| 157 | void syscall(void); |
| 158 | |
| 159 | // timer.c |
| 160 | void timerinit(void); |
| 161 | |
| 162 | // trap.c |
| 163 | void idtinit(void); |
| 164 | extern uint ticks; |
| 165 | void tvinit(void); |
| 166 | extern struct spinlock tickslock; |
| 167 | |
| 168 | // uart.c |
| 169 | void uartinit(void); |
| 170 | void uartintr(void); |
| 171 | void uartputc(int); |
| 172 | |
| 173 | // vm.c |
| 174 | void seginit(void); |
| 175 | void kvmalloc(void); |
| 176 | pde_t* setupkvm(void); |
| 177 | char* uva2ka(pde_t*, char*); |
| 178 | int allocuvm(pde_t*, uint, uint); |
| 179 | int deallocuvm(pde_t*, uint, uint); |
| 180 | void freevm(pde_t*); |
| 181 | void inituvm(pde_t*, char*, uint); |
| 182 | int loaduvm(pde_t*, char*, struct inode*, uint, uint); |
| 183 | pde_t* copyuvm(pde_t*, uint); |
| 184 | void switchuvm(struct proc*); |
| 185 | void switchkvm(void); |
| 186 | int copyout(pde_t*, uint, void*, uint); |
| 187 | void clearpteu(pde_t *pgdir, char *uva); |
| 188 | |
| 189 | // number of elements in fixed-size array |
| 190 | #define NELEM(x) (sizeof(x)/sizeof((x)[0])) |
| 191 | |