diff --git a/defs.h b/defs.h index 49c0296..3b8127d 100644 --- a/defs.h +++ b/defs.h @@ -1,147 +1,144 @@ -// kalloc.c -char* kalloc(int); -void kfree(char*, int); -void kinit(void); - -// console.c -void console_init(void); -void cprintf(char*, ...); -void panic(char*) __attribute__((noreturn)); -void kbd_intr(void); - -// proc.c -void pinit(void); -struct proc; -void setupsegs(struct proc*); -struct proc* copyproc(struct proc*); -struct spinlock; -int growproc(int); -void sleep(void*, struct spinlock*); -void wakeup(void*); -void scheduler(void); -void proc_exit(void); -int proc_kill(int); -int proc_wait(void); -void yield(void); -void procdump(void); -void userinit(void); - -// setjmp.S +struct buf; +struct file; +struct inode; struct jmpbuf; -int setjmp(struct jmpbuf*); -void longjmp(struct jmpbuf*); - -// trap.c -void tvinit(void); -void idtinit(void); - -// string.c -void* memset(void*, int, uint); -int memcmp(const void*, const void*, uint); -void* memmove(void*, const void*, uint); -int strncmp(const char*, const char*, uint); -char* safestrcpy(char*, const char*, int); -int strlen(const char*); - -// syscall.c -void syscall(void); -int fetchint(struct proc*, uint, int*); -int fetchstr(struct proc*, uint, char**); -int argint(int, int*); -int argptr(int, char**, int); -int argstr(int, char**); - -// picirq.c -void pic_init(void); -void irq_enable(int); +struct pipe; +struct proc; +struct spinlock; +struct stat; +struct uinode; // 8253pit.c -void pit8253_timerinit(void); - -// mp.c -extern int ismp; -void mp_init(void); -void mp_startthem(void); -int mp_bcpu(void); - -// lapic.c -extern uint *lapicaddr; -void lapic_init(int); -void lapic_startap(uchar, int); -void lapic_timerinit(void); -void lapic_timerintr(void); -void lapic_enableintr(void); -void lapic_disableintr(void); -void lapic_eoi(void); -int cpu(void); - -// ioapic.c -extern uchar ioapic_id; -void ioapic_init(void); -void ioapic_enable(int irq, int cpu); - -// spinlock.c -struct spinlock; -void initlock(struct spinlock*, char*); -void acquire(struct spinlock*); -void release(struct spinlock*); -int holding(struct spinlock*); -void getcallerpcs(void*, uint*); - -// main.c -void load_icode(struct proc*, uchar*, uint); - -// pipe.c -struct pipe; -struct file; -int pipe_alloc(struct file**, struct file**); -void pipe_close(struct pipe*, int); -int pipe_write(struct pipe*, char*, int); -int pipe_read(struct pipe*, char*, int); - -// file.c -struct stat; -void fileinit(void); -struct file* filealloc(void); -void fileclose(struct file*); -int fileread(struct file*, char*, int n); -int filewrite(struct file*, char*, int n); -int filestat(struct file*, struct stat*); -void fileincref(struct file*); - -// ide.c -void ide_init(void); -void ide_intr(void); -void ide_rw(int, uint, void*, uint, int); +void pit8253_timerinit(void); // bio.c -void binit(void); -struct buf; -struct buf* bread(uint, uint); -void bwrite(struct buf*); -void brelse(struct buf*); +void binit(void); +struct buf* bread(uint, uint); +void brelse(struct buf*); +void bwrite(struct buf*); -// fs.c -struct inode; -struct uinode; -void iinit(void); -struct inode* ilock(struct uinode*); -struct uinode* iunlock(struct inode*); -void iput(struct uinode*); -struct uinode* idup(struct uinode*); -struct uinode* namei(char*); -void stati(struct inode*, struct stat*); -int readi(struct inode*, char*, uint, uint); -int writei(struct inode*, char*, uint, uint); -int dirlink(struct inode *dp, char *name, uint ino); -struct uinode* dirlookup(struct inode *dp, char *name, uint *poff); -void iupdate(struct inode *ip); -int namecmp(const char *s, const char *t); -struct uinode* ialloc(uint, short); -struct uinode* nameiparent(char *path, char *name); +// console.c +void console_init(void); +void cprintf(char*, ...); +void kbd_intr(void); +void panic(char*) __attribute__((noreturn)); // exec.c -int exec(char*, char**); +int exec(char*, char**); + +// file.c +struct file* filealloc(void); +void fileclose(struct file*); +void fileincref(struct file*); +void fileinit(void); +int fileread(struct file*, char*, int n); +int filestat(struct file*, struct stat*); +int filewrite(struct file*, char*, int n); + +// fs.c +int dirlink(struct inode*, char*, uint); +struct uinode* dirlookup(struct inode*, char*, uint*); +struct uinode* ialloc(uint, short); +struct uinode* idup(struct uinode*); +void iinit(void); +struct inode* ilock(struct uinode*); +struct uinode* iunlock(struct inode*); +void iput(struct uinode*); +void iupdate(struct inode*); +int namecmp(const char*, const char*); +struct uinode* namei(char*); +struct uinode* nameiparent(char*, char*); +int readi(struct inode*, char*, uint, uint); +void stati(struct inode*, struct stat*); +int writei(struct inode*, char*, uint, uint); + +// ide.c +void ide_init(void); +void ide_intr(void); +void ide_rw(int, uint, void*, uint, int); + +// ioapic.c +void ioapic_enable(int irq, int cpu); +extern uchar ioapic_id; +void ioapic_init(void); + +// kalloc.c +char* kalloc(int); +void kfree(char*, int); +void kinit(void); + +// lapic.c +int cpu(void); +extern uint* lapicaddr; +void lapic_disableintr(void); +void lapic_enableintr(void); +void lapic_eoi(void); +void lapic_init(int); +void lapic_startap(uchar, int); +void lapic_timerinit(void); +void lapic_timerintr(void); + +// mp.c +extern int ismp; +int mp_bcpu(void); +void mp_init(void); +void mp_startthem(void); + +// picirq.c +void irq_enable(int); +void pic_init(void); + +// pipe.c +int pipe_alloc(struct file**, struct file**); +void pipe_close(struct pipe*, int); +int pipe_read(struct pipe*, char*, int); +int pipe_write(struct pipe*, char*, int); + +// proc.c +struct proc* copyproc(struct proc*); +int growproc(int); +void pinit(void); +void proc_exit(void); +int proc_kill(int); +int proc_wait(void); +void procdump(void); +void scheduler(void); +void setupsegs(struct proc*); +void sleep(void*, struct spinlock*); +void userinit(void); +void wakeup(void*); +void yield(void); + +// setjmp.S +void longjmp(struct jmpbuf*); +int setjmp(struct jmpbuf*); + +// spinlock.c +void acquire(struct spinlock*); +void getcallerpcs(void*, uint*); +int holding(struct spinlock*); +void initlock(struct spinlock*, char*); +void release(struct spinlock*); + +// string.c +int memcmp(const void*, const void*, uint); +void* memmove(void*, const void*, uint); +void* memset(void*, int, uint); +char* safestrcpy(char*, const char*, int); +int strlen(const char*); +int strncmp(const char*, const char*, uint); + +// syscall.c +int argint(int, int*); +int argptr(int, char**, int); +int argstr(int, char**); +int fetchint(struct proc*, uint, int*); +int fetchstr(struct proc*, uint, char**); +void syscall(void); + +// trap.c +void idtinit(void); +void tvinit(void); // number of elements in fixed-size array #define NELEM(x) (sizeof(x)/sizeof((x)[0]))