
Added some functionality to the procdump to show the current console and parent pids of processes for debugging Added var to clearconsole that enables the internal lock if one wasnt prelocked before hand Fixed issue where race conditions would stop the title from drawing by drawing it to the buffer too Fixed issue where the maze function was spamming the conswrite and cons lock by changing it to send an entire line instead of 1 char at a time
210 lines
6.3 KiB
C
210 lines
6.3 KiB
C
struct buf;
|
|
struct context;
|
|
struct file;
|
|
struct inode;
|
|
struct pipe;
|
|
struct proc;
|
|
struct rtcdate;
|
|
struct spinlock;
|
|
struct sleeplock;
|
|
struct stat;
|
|
struct superblock;
|
|
|
|
// 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));
|
|
int consoleget(void);
|
|
void panic(char*) __attribute__((noreturn));
|
|
|
|
// Function to return a new console ptr for a process to use
|
|
struct vconsole* newconsole(char*, int);
|
|
// Function to swithc to the provided console using the ptr
|
|
int switchtoconsole(struct vconsole*);
|
|
// Function to close and reset the current proc console
|
|
int closeconsole(void);
|
|
// Function to get the current inuse console index
|
|
int getcurrentconsoleindex(void);
|
|
// Function to clear the current screen buffer
|
|
void clearscreen(int);
|
|
// Function to get the base consoles ptr
|
|
struct vconsole* getbaseconsoleptr(void);
|
|
// Function to provide cprintf functionality but saved into a char array
|
|
void sprintf(char*, char*, ...);
|
|
void setconsoleproctitle(struct vconsole* consoleptr, char* newtitle);
|
|
//void drawtitle();
|
|
int getconsoleindex(struct vconsole* consolein);
|
|
|
|
// 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(int dev);
|
|
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*);
|
|
|
|
// ioapic.c
|
|
void ioapicenable(int irq, int cpu);
|
|
extern uchar ioapicid;
|
|
void ioapicinit(void);
|
|
|
|
// kalloc.c
|
|
char* kalloc(void);
|
|
void kfree(char*);
|
|
void kinit1(void*, void*);
|
|
void kinit2(void*, void*);
|
|
|
|
// kbd.c
|
|
void kbdintr(void);
|
|
int kbdgetc(void);
|
|
|
|
// lapic.c
|
|
void cmostime(struct rtcdate *r);
|
|
int lapicid(void);
|
|
extern volatile uint* lapic;
|
|
void lapiceoi(void);
|
|
void lapicinit(void);
|
|
void lapicstartap(uchar, uint);
|
|
void microdelay(int);
|
|
|
|
// log.c
|
|
void initlog(int dev);
|
|
void log_write(struct buf*);
|
|
void begin_op();
|
|
void end_op();
|
|
|
|
// mp.c
|
|
extern int ismp;
|
|
void mpinit(void);
|
|
|
|
// picirq.c
|
|
void picenable(int);
|
|
void picinit(void);
|
|
|
|
// 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);
|
|
|
|
// proc.c
|
|
int cpuid(void);
|
|
void exit(void);
|
|
int fork(void);
|
|
int growproc(int);
|
|
int kill(int);
|
|
struct cpu* mycpu(void);
|
|
struct proc* myproc();
|
|
void pinit(void);
|
|
void procdump(void);
|
|
void scheduler(void) __attribute__((noreturn));
|
|
void sched(void);
|
|
void setproc(struct proc*);
|
|
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*);
|
|
|
|
// 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);
|
|
|
|
// sleeplock.c
|
|
void acquiresleep(struct sleeplock*);
|
|
void releasesleep(struct sleeplock*);
|
|
int holdingsleep(struct sleeplock*);
|
|
void initsleeplock(struct sleeplock*, char*);
|
|
|
|
// 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);
|
|
|
|
// 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 timerinit(void);
|
|
|
|
// trap.c
|
|
void idtinit(void);
|
|
extern uint ticks;
|
|
void tvinit(void);
|
|
extern struct spinlock tickslock;
|
|
|
|
// uart.c
|
|
void uartinit(void);
|
|
void uartintr(void);
|
|
void uartputc(int);
|
|
|
|
// vm.c
|
|
void seginit(void);
|
|
void kvmalloc(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);
|
|
|
|
// number of elements in fixed-size array
|
|
#define NELEM(x) (sizeof(x) / sizeof((x)[0]))
|