-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdefs.h
More file actions
219 lines (192 loc) · 6.55 KB
/
Copy pathdefs.h
File metadata and controls
219 lines (192 loc) · 6.55 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
//
// a definition of data structure/methods
//
#ifndef INCLUDE_DEFS_H
#define INCLUDE_DEFS_H
#define UMAX(a, b) ((uint)(a) > (uint)(b) ? (uint)(a):(uint)(b))
#define UMIN(a, b) ((uint)(a) > (uint)(b) ? (uint)(b):(uint)(a))
// number of elements in fixed-size array
#define NELEM(x) (sizeof(x)/sizeof((x)[0]))
struct buf;
struct context;
struct file;
struct inode;
struct pipe;
struct proc;
struct pstat;
struct spinlock;
struct stat;
struct superblock;
struct trapframe;
typedef uint32 pte_t;
typedef uint32 pde_t;
extern uint32 _kernel_pgtbl;
typedef void (*ISR) (struct trapframe *tf, int n);
// arm.c
void set_stk(uint mode, uint addr);
void cli (void);
void sti (void);
uint spsr_usr();
int int_enabled();
void pushcli(void);
void popcli(void);
void getcallerpcs(void *, uint*);
void* get_fp (void);
void show_callstk (char *);
// bio.c
void binit(void);
struct buf* bread(uint, uint);
void brelse(struct buf*);
void bwrite(struct buf*);
// buddy.c
void kmem_init (void);
void kmem_init2(void *vstart, void *vend);
void* kmalloc (int order);
void kfree (void *mem, int order);
void free_page(void *v);
void* alloc_page (void);
void kmem_test_b (void);
int get_order (uint32 v);
// console.c
void consoleinit(void);
void cprintf(char*, ...);
void consoleintr(int(*)(void));
void panic(char*) __attribute__((noreturn));
void init_usr_commands(void);
void trie_init(void);
void trie_insert(const char *cmd);
struct TrieNode* trie_find(const char *prefix);
void autocomplete(uint *e, char *buf, uint w);
// 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);
// ide.c
void ideinit(void);
void iderw(struct buf*);
// kalloc.c
/*char* kalloc(void);
void kfree(char*);
void kinit1(void*, void*);
void kinit2(void*, void*);
void kmem_init (void);*/
// log.c
void initlog(void);
void log_write(struct buf*);
void begin_trans();
void commit_trans();
// picirq.c
void pic_enable(int, ISR);
void pic_init(void*);
void pic_dispatch (struct trapframe *tp);
// 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
uint rand();
struct proc* copyproc(struct proc*);
void exit(void);
int fork(void);
int growproc(int);
int kill(int);
void pinit(void);
void procdump(void);
struct proc* hold_lottery(int total_tickets);
void boost_processes(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);
int settickets(int, int);
int getpinfo(struct pstat*);
// swtch.S
void swtch(struct context**, struct context*);
// spinlock.c
void acquire(struct spinlock*);
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);
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 timer_init(int hz);
extern struct spinlock tickslock;
// trap.c
extern uint ticks;
void trap_init(void);
void dump_trapframe (struct trapframe *tf);
// trap_asm.S
void trap_reset(void);
void trap_und(void);
void trap_swi(void);
void trap_iabort(void);
void trap_dabort(void);
void trap_na(void);
void trap_irq(void);
void trap_fiq(void);
// uart.c
void uart_init(void*);
void uartputc(int);
int uartgetc(void);
void micro_delay(int us);
void uart_enable_rx();
// vm.c
int handle_page_fault(pde_t *pgdir, uint va, uint sz);
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*);
int copyout(pde_t*, uint, void*, uint);
void clearpteu(pde_t *pgdir, char *uva);
void* kpt_alloc(void);
void init_vmm (void);
void kpt_freerange (uint32 low, uint32 hi);
void paging_init (uint phy_low, uint phy_hi);
int allocuvm_demand(pde_t *pgdir, uint oldsz, uint newsz);
#endif