-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdefs.h
More file actions
116 lines (95 loc) · 2.59 KB
/
defs.h
File metadata and controls
116 lines (95 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
typedef struct SpinLock SpinLock;
typedef struct Registers Registers;
typedef struct Proc Proc;
typedef struct File File;
// console.c
typedef struct Console Console;
extern Console *uart_console;
extern Console *vga_console;
void cinit(Console *c);
void cprintf(char *fmt, ...);
void cclear(void);
void cputs(char *s);
void cputc(byte c);
void cvprintf(char *fmt, va_list ap);
void cwrite(char *buf, usize nbytes);
// $(ARCH)/cpu.c
void intr_on(void);
void intr_off(void);
// $(ARCH)/arch.c
void archinit_early(void);
void archinit(void);
// $(ARCH)/cpu.c
void halt(void);
// file.c
void fileinit(void);
void copyfds(Proc *oldp, Proc *newp);
// kalloc.c
void initmem1(void *start, void *end);
void initmem2(void *end);
void *kalloc(void);
void kfree(void *a);
void *pgfloor(void *addr);
void *pgceil(void *addr);
void *p2v(u64 paddr);
u64 v2p(void *vaddr);
// klibc.c
void *memmove(void *dst, void *src, usize n);
void * memcpy(void *dst, void *src, usize n);
void *memset(void *p, int c, usize n);
void *memzero(void *p, usize n);
int isdigit(int c);
int strcmp(char *s1, char *s2);
usize strlen(char *s);
long strtol(char *s, char **endptr, int base);
// lock.c
void initlock(SpinLock *l);
void lock(SpinLock *l);
void unlock(SpinLock *l);
void push_off(void);
void pop_off(void);
// pic.c/bcmint.c
void intinit(void);
void intenable(u32 irq);
// proc.c
void panic(char *fmt, ...) __attribute__((noreturn));
void vpanic(char *fmt, va_list ap) __attribute__((noreturn));
void schedinit(void);
void scheduler(void) __attribute__((noreturn));
void mkproc(byte *data);
void procbegin(void);
void initkstack(Proc *p);
void initstack(Proc *p, u64 entry);
void archrfork(Proc *old, Proc *new);
void yield(void);
// switch.S
void swtch(Registers **from, Registers *to);
// syscall.c
int argfd(int n, int *fd);
int argint(int n, int *ip);
int arglong(int n, long *lp);
int argptr(int n, uintptr *p, usize size);
long argstr(int n, char **pp);
// timer.c
void timerinit(void);
void handletimer(void);
// trap.c
void trapinit(void);
// vm.c
usize allocuvm(Pte *pgmap, usize oldsz, usize newsz);
void clearpteu(Pte *pgmap, void *addr);
Pte* copyuvm(Pte *oldmap, usize sz);
void freeuvm(Pte *pgmap);
void kvmalloc(void);
void loaduvm(Pte *pgmap, char *addr, byte *data, usize sz);
void seginit(void);
Pte *setupkvm(void);
void switchkvm();
void switchuvm(Proc *p);
void checkalign(void *a, int alignment, char *msg, ...);
int pte_flags(Pte entry);
uintptr pte_addr(Pte entry);
int uvmperm(void);
Pte *walkpgmap(Pte *pgmap, void *va, int alloc);
int mappages(Pte *pgmap, void *va, usize size, uintptr pa, int perm);
Pte *allocpgmap(void);