diff --git a/.gitignore b/.gitignore index 301b097..21f2c54 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ /myapi.key /.suf tags +.gdb_history +peda*.txt +.*.swp diff --git a/CODING b/CODING index 898097e..f1d0795 100644 --- a/CODING +++ b/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. diff --git a/README.info b/README.info new file mode 100644 index 0000000..eaf6de5 --- /dev/null +++ b/README.info @@ -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 diff --git a/kern/monitor.c b/kern/monitor.c index 4e00796..7156224 100644 --- a/kern/monitor.c +++ b/kern/monitor.c @@ -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; } diff --git a/kern/trap.c b/kern/trap.c index 1ca8182..2dfaa17 100644 --- a/kern/trap.c +++ b/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(); } diff --git a/kern/trapentry.S b/kern/trapentry.S index 2dbeeca..7b51b6a 100644 --- a/kern/trapentry.S +++ b/kern/trapentry.S @@ -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 */ + diff --git a/lib/printfmt.c b/lib/printfmt.c index 22e6abe..2aeb2dc 100644 --- a/lib/printfmt.c +++ b/lib/printfmt.c @@ -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); diff --git a/student.info b/student.info new file mode 100644 index 0000000..f3ede52 --- /dev/null +++ b/student.info @@ -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