Merge branch 'lab3' into lab4
This commit is contained in:
commit
023f974e4c
3
.gitignore
vendored
3
.gitignore
vendored
@ -17,3 +17,6 @@
|
||||
/myapi.key
|
||||
/.suf
|
||||
tags
|
||||
.gdb_history
|
||||
peda*.txt
|
||||
.*.swp
|
||||
|
2
CODING
2
CODING
@ -15,8 +15,6 @@ We have the following conventions in our code:
|
||||
|
||||
* Function names are all lower-case separated by underscores.
|
||||
|
||||
* Beginning-of-line indentation via tabs, not spaces.
|
||||
|
||||
* Preprocessor macros are always UPPERCASE.
|
||||
There are a few grandfathered exceptions: assert, panic,
|
||||
static_assert, offsetof.
|
||||
|
4
README.info
Normal file
4
README.info
Normal file
@ -0,0 +1,4 @@
|
||||
Lab 1 : Tue 10:00 ~ 11:20
|
||||
Lab 2 : Tue 12:00 ~ 13:20
|
||||
Lab 3 : Wed 15:00 ~ 16:20
|
||||
Lab 4 : Fri 14:00 ~ 15:20
|
@ -22,6 +22,7 @@ struct Command {
|
||||
int (*func)(int argc, char** argv, struct Trapframe* tf);
|
||||
};
|
||||
|
||||
// LAB 1: add your command to here...
|
||||
static struct Command commands[] = {
|
||||
{ "help", "Display this list of commands", mon_help },
|
||||
{ "kerninfo", "Display information about the kernel", mon_kerninfo },
|
||||
@ -58,7 +59,9 @@ mon_kerninfo(int argc, char **argv, struct Trapframe *tf)
|
||||
int
|
||||
mon_backtrace(int argc, char **argv, struct Trapframe *tf)
|
||||
{
|
||||
// Your code here.
|
||||
// LAB 1: Your code here.
|
||||
// HINT 1: use read_ebp().
|
||||
// HINT 2: print the current ebp on the first line (not current_ebp[0])
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
14
kern/trap.c
14
kern/trap.c
@ -66,14 +66,26 @@ static const char *trapname(int trapno)
|
||||
}
|
||||
|
||||
|
||||
// XYZ: write a function declaration here...
|
||||
// e.g., void t_divide();
|
||||
|
||||
void
|
||||
trap_init(void)
|
||||
{
|
||||
extern struct Segdesc gdt[];
|
||||
|
||||
/*
|
||||
*
|
||||
* HINT
|
||||
* Do something like this: SETGATE(idt[T_DIVIDE], 0, GD_KT, t_divide, 0);
|
||||
* if your trap handler's name for divide by zero is t_device.
|
||||
* Additionally, you should declare trap handler as a function
|
||||
* to refer that in C code... (see the comment XYZ above)
|
||||
*
|
||||
*/
|
||||
// LAB 3: Your code here.
|
||||
|
||||
// Per-CPU setup
|
||||
// Per-CPU setup
|
||||
trap_init_percpu();
|
||||
}
|
||||
|
||||
|
@ -48,9 +48,15 @@
|
||||
* Lab 3: Your code here for generating entry points for the different traps.
|
||||
*/
|
||||
|
||||
|
||||
// HINT 1 : TRAPHANDLER_NOEC(t_divide, T_DIVIDE);
|
||||
// Do something like this if there is no error code for the trap
|
||||
// HINT 2 : TRAPHANDLER(t_dblflt, T_DBLFLT);
|
||||
// Do something like this if the trap includes an error code..
|
||||
// HINT 3 : READ Intel's manual to check if the trap includes an error code
|
||||
// or not...
|
||||
|
||||
/*
|
||||
* Lab 3: Your code here for _alltraps
|
||||
*/
|
||||
|
||||
|
||||
|
@ -207,7 +207,7 @@ vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap)
|
||||
|
||||
// (unsigned) octal
|
||||
case 'o':
|
||||
// Replace this with your code.
|
||||
// LAB 1: Replace this with your code.
|
||||
putch('X', putdat);
|
||||
putch('X', putdat);
|
||||
putch('X', putdat);
|
||||
|
5
student.info
Normal file
5
student.info
Normal file
@ -0,0 +1,5 @@
|
||||
OSU ID (xxx-yyy-zzz) : 933456789
|
||||
FLIP ID (e.g., jangye) : jangye
|
||||
Name : Yeongjin Jang
|
||||
CS 444/544 ? : 444
|
||||
Lab Class # : Lab 1
|
Loading…
Reference in New Issue
Block a user