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