Merge branch 'lab3' into lab4

This commit is contained in:
Yeongjin Jang 2019-04-01 21:36:26 -07:00
commit 023f974e4c
8 changed files with 37 additions and 6 deletions

3
.gitignore vendored
View File

@ -17,3 +17,6 @@
/myapi.key /myapi.key
/.suf /.suf
tags tags
.gdb_history
peda*.txt
.*.swp

2
CODING
View File

@ -15,8 +15,6 @@ We have the following conventions in our code:
* Function names are all lower-case separated by underscores. * Function names are all lower-case separated by underscores.
* Beginning-of-line indentation via tabs, not spaces.
* Preprocessor macros are always UPPERCASE. * Preprocessor macros are always UPPERCASE.
There are a few grandfathered exceptions: assert, panic, There are a few grandfathered exceptions: assert, panic,
static_assert, offsetof. static_assert, offsetof.

4
README.info Normal file
View 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

View File

@ -22,6 +22,7 @@ struct Command {
int (*func)(int argc, char** argv, struct Trapframe* tf); int (*func)(int argc, char** argv, struct Trapframe* tf);
}; };
// LAB 1: add your command to here...
static struct Command commands[] = { static struct Command commands[] = {
{ "help", "Display this list of commands", mon_help }, { "help", "Display this list of commands", mon_help },
{ "kerninfo", "Display information about the kernel", mon_kerninfo }, { "kerninfo", "Display information about the kernel", mon_kerninfo },
@ -58,7 +59,9 @@ mon_kerninfo(int argc, char **argv, struct Trapframe *tf)
int int
mon_backtrace(int argc, char **argv, struct Trapframe *tf) 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; return 0;
} }

View File

@ -66,14 +66,26 @@ static const char *trapname(int trapno)
} }
// XYZ: write a function declaration here...
// e.g., void t_divide();
void void
trap_init(void) trap_init(void)
{ {
extern struct Segdesc gdt[]; 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. // LAB 3: Your code here.
// Per-CPU setup // Per-CPU setup
trap_init_percpu(); trap_init_percpu();
} }

View File

@ -48,9 +48,15 @@
* Lab 3: Your code here for generating entry points for the different traps. * 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 * Lab 3: Your code here for _alltraps
*/ */

View File

@ -207,7 +207,7 @@ vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap)
// (unsigned) octal // (unsigned) octal
case 'o': case 'o':
// Replace this with your code. // LAB 1: Replace this with your code.
putch('X', putdat); putch('X', putdat);
putch('X', putdat); putch('X', putdat);
putch('X', putdat); putch('X', putdat);

5
student.info Normal file
View 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