Mercurial > hg > Members > mitsuki > xv6_rpi2_port
diff include/defs.h @ 0:ed10291ff195
first commit
author | mir3636 |
---|---|
date | Sun, 06 Jan 2019 19:27:03 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/defs.h Sun Jan 06 19:27:03 2019 +0900 @@ -0,0 +1,233 @@ +struct buf; +struct context; +struct file; +struct inode; +struct pipe; +struct proc; +struct spinlock; +struct stat; +struct superblock; + +void OkLoop(void); +void NotOkLoop(void); + +// mmu.c +void mmuinit0(void); +void mmuinit1(void); +void barriers(void); +void dsb_barrier(void); +void flush_tlb(void); +void flush_dcache_all(void); +void flush_dcache(uint va1, uint va2); +void flush_idcache(void); +void set_pgtbase(uint base); + +// bio.c +void binit(void); +struct buf* bread(uint, uint); +void brelse(struct buf*); +void bwrite(struct buf*); + +// console.c +void consoleinit(void); +void cprintf(char*, ...); +void consoleintr(int(*)(void)); +void panic(char*) __attribute__((noreturn)); +void drawcharacter(u8, uint, uint); +void gpuputc(uint); +void gpuinit(void); + + +// fs.c +void readsb(int dev, struct superblock *sb); +int dirlink(struct inode*, char*, uint); +struct inode* dirlookup(struct inode*, char*, uint*); +struct inode* ialloc(uint, short); +struct inode* idup(struct inode*); +void iinit(void); +void ilock(struct inode*); +void iput(struct inode*); +void iunlock(struct inode*); +void iunlockput(struct inode*); +void iupdate(struct inode*); +int namecmp(const char*, const char*); +struct inode* namei(char*); +struct inode* 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 ideinit(void); +void ideintr(void); +void iderw(struct buf*); + +// exec.c +int exec(char*, char**); + +// file.c +struct file* filealloc(void); +void fileclose(struct file*); +struct file* filedup(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 +void readsb(int dev, struct superblock *sb); +int dirlink(struct inode*, char*, uint); +struct inode* dirlookup(struct inode*, char*, uint*); +struct inode* ialloc(uint, short); +struct inode* idup(struct inode*); +void iinit(void); +void ilock(struct inode*); +void iput(struct inode*); +void iunlock(struct inode*); +void iunlockput(struct inode*); +void iupdate(struct inode*); +int namecmp(const char*, const char*); +struct inode* namei(char*); +struct inode* nameiparent(char*, char*); +int readi(struct inode*, char*, uint, uint); +void stati(struct inode*, struct stat*); +int writei(struct inode*, char*, uint, uint); + +// kalloc.c +char* kalloc(void); +void kfree(char*); +void kinit1(void*, void*); +void kinit2(void*, void*); + + +// log.c +void initlog(void); +void log_write(struct buf*); +void begin_trans(); +void commit_trans(); + +// pipe.c +int pipealloc(struct file**, struct file**); +void pipeclose(struct pipe*, int); +int piperead(struct pipe*, char*, int); +int pipewrite(struct pipe*, char*, int); + +//PAGEBREAK: 16 +// proc.c +struct proc* copyproc(struct proc*); +void exit(void); +int fork(void); +int growproc(int); +int kill(int); +void pinit(void); +void procdump(void); +void scheduler(void) __attribute__((noreturn)); +void sched(void); +void sleep(void*, struct spinlock*); +void userinit(void); +int wait(void); +void wakeup(void*); +void yield(void); + + +// swtch.S +void swtch(struct context**, struct context*); + +// syscall.c +int argint(int, int*); +int argptr(int, char**, int); +int argstr(int, char**); +int fetchint(uint, int*); +int fetchstr(uint, char**); +void syscall(void); + +void kvmalloc(void); + + +int UsbInitialise(void); +void KeyboardUpdate(void); +char KeyboardGetChar(void); +uint KeyboardCount(void); +uint KeyboardGetAddress(uint); +struct KeyboardLeds KeyboardGetLedSupport(uint); + +// spinlock.c +void acquire(struct spinlock*); +void getcallerpcs(void*, uint*); +int holding(struct spinlock*); +void initlock(struct spinlock*, char*); +void release(struct spinlock*); +void pushcli(void); +void popcli(void); + +// 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); +char* strncpy(char*, const char*, int); +uint div(uint n, uint d); + +// syscall.c +int argint(int, int*); +int argptr(int, char**, int); +int argstr(int, char**); +int fetchint(uint, int*); +int fetchstr(uint, char**); +void syscall(void); + +// timer.c +void timer3init(void); +void timer3intr(void); +unsigned long long getsystemtime(void); +void delay(uint); + +// trap.c +void tvinit(void); +void sti(void); +void cli(void); +void disable_intrs(void); +void enable_intrs(void); +extern uint ticks; +extern struct spinlock tickslock; +uint readcpsr(void); + +// uart.c +void uartinit(void); +void miniuartintr(void); +void uartputc(uint); +void setgpiofunc(uint, uint); +void setgpioval(uint, uint); + +// vm.c +void seginit(void); +void kvmalloc(void); +void vmenable(void); +pde_t* setupkvm(void); +char* uva2ka(pde_t*, char*); +int allocuvm(pde_t*, uint, uint); +int deallocuvm(pde_t*, uint, uint); +void freevm(pde_t*); +void inituvm(pde_t*, char*, uint); +int loaduvm(pde_t*, char*, struct inode*, uint, uint); +pde_t* copyuvm(pde_t*, uint); +void switchuvm(struct proc*); +void switchkvm(void); +int copyout(pde_t*, uint, void*, uint); +void clearpteu(pde_t *pgdir, char *uva); + +// mailbox.c +uint readmailbox(u8); +void writemailbox(uint *, u8); +void create_request(volatile uint *mbuf, uint tag, uint buflen, uint len, uint *data); +void mailboxinit(void); + + + +// number of elements in fixed-size array +#define NELEM(x) (sizeof(x)/sizeof((x)[0])) +