kernel/defs.h
185 lines
1struct buf;2struct context;3struct file;4struct inode;5struct pipe;6struct proc;7struct spinlock;8struct sleeplock;9struct stat;10struct superblock;1112// bio.c13void binit(void);14struct buf* bread(uint, uint);15void brelse(struct buf*);16void bwrite(struct buf*);17void bpin(struct buf*);18void bunpin(struct buf*);1920// console.c21void consoleinit(void);22void consoleintr(int);23void consputc(int);2425// exec.c26int kexec(char*, char**);2728// file.c29struct file* filealloc(void);30void fileclose(struct file*);31struct file* filedup(struct file*);32void fileinit(void);33int fileread(struct file*, uint64, int n);34int filestat(struct file*, uint64 addr);35int filewrite(struct file*, uint64, int n);3637// fs.c38void fsinit(int);39int dirlink(struct inode*, char*, uint);40struct inode* dirlookup(struct inode*, char*, uint*);41struct inode* ialloc(uint, short);42struct inode* idup(struct inode*);43void iinit();44void ilock(struct inode*);45void iput(struct inode*);46void iunlock(struct inode*);47void iunlockput(struct inode*);48void iupdate(struct inode*);49int namecmp(const char*, const char*);50struct inode* namei(char*);51struct inode* nameiparent(char*, char*);52int readi(struct inode*, int, uint64, uint, uint);53void stati(struct inode*, struct stat*);54int writei(struct inode*, int, uint64, uint, uint);55void itrunc(struct inode*);56void ireclaim(int);5758// kalloc.c59void* kalloc(void);60void kfree(void *);61void kinit(void);6263// log.c64void initlog(int, struct superblock*);65void log_write(struct buf*);66void begin_op(void);67void end_op(void);6869// pipe.c70int pipealloc(struct file**, struct file**);71void pipeclose(struct pipe*, int);72int piperead(struct pipe*, uint64, int);73int pipewrite(struct pipe*, uint64, int);7475// printf.c76int printf(char*, ...) __attribute__ ((format (printf, 1, 2)));77void panic(char*) __attribute__((noreturn));78void printfinit(void);7980// proc.c81int cpuid(void);82void kexit(int);83int kfork(void);84int growproc(int);85void proc_mapstacks(pagetable_t);86pagetable_t proc_pagetable(struct proc *);87void proc_freepagetable(pagetable_t, uint64);88int kkill(int);89int killed(struct proc*);90void setkilled(struct proc*);91struct cpu* mycpu(void);92struct proc* myproc();93void procinit(void);94void scheduler(void) __attribute__((noreturn));95void sched(void);96void sleep(void*, struct spinlock*);97void userinit(void);98int kwait(uint64);99void wakeup(void*);100void yield(void);101int either_copyout(int user_dst, uint64 dst, void *src, uint64 len);102int either_copyin(void *dst, int user_src, uint64 src, uint64 len);103void procdump(void);104105// swtch.S106void swtch(struct context*, struct context*);107108// spinlock.c109void acquire(struct spinlock*);110int holding(struct spinlock*);111void initlock(struct spinlock*, char*);112void release(struct spinlock*);113void push_off(void);114void pop_off(void);115116// sleeplock.c117void acquiresleep(struct sleeplock*);118void releasesleep(struct sleeplock*);119int holdingsleep(struct sleeplock*);120void initsleeplock(struct sleeplock*, char*);121122// string.c123int memcmp(const void*, const void*, uint);124void* memmove(void*, const void*, uint);125void* memset(void*, int, uint);126char* safestrcpy(char*, const char*, int);127int strlen(const char*);128int strncmp(const char*, const char*, uint);129char* strncpy(char*, const char*, int);130131// syscall.c132void argint(int, int*);133int argstr(int, char*, int);134void argaddr(int, uint64 *);135int fetchstr(uint64, char*, int);136int fetchaddr(uint64, uint64*);137void syscall();138139// trap.c140extern uint ticks;141void trapinit(void);142void trapinithart(void);143extern struct spinlock tickslock;144void prepare_return(void);145146// uart.c147void uartinit(void);148void uartintr(void);149void uartwrite(char [], int);150void uartputc_sync(int);151int uartgetc(void);152153// vm.c154void kvminit(void);155void kvminithart(void);156void kvmmap(pagetable_t, uint64, uint64, uint64, int);157int mappages(pagetable_t, uint64, uint64, uint64, int);158pagetable_t uvmcreate(void);159uint64 uvmalloc(pagetable_t, uint64, uint64, int);160uint64 uvmdealloc(pagetable_t, uint64, uint64);161int uvmcopy(pagetable_t, pagetable_t, uint64);162void uvmfree(pagetable_t, uint64);163void uvmunmap(pagetable_t, uint64, uint64, int);164void uvmclear(pagetable_t, uint64);165pte_t * walk(pagetable_t, uint64, int);166uint64 walkaddr(pagetable_t, uint64);167int copyout(pagetable_t, uint64, char *, uint64);168int copyin(pagetable_t, char *, uint64, uint64);169int copyinstr(pagetable_t, char *, uint64, uint64);170int ismapped(pagetable_t, uint64);171uint64 vmfault(pagetable_t, uint64, int);172173// plic.c174void plicinit(void);175void plicinithart(void);176int plic_claim(void);177void plic_complete(int);178179// virtio_disk.c180void virtio_disk_init(void);181void virtio_disk_rw(struct buf *, int);182void virtio_disk_intr(void);183184// number of elements in fixed-size array185#define NELEM(x) (sizeof(x)/sizeof((x)[0]))186