Merge branch 'lab4' into lab5
This commit is contained in:
commit
ed614a36f0
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -17,3 +17,6 @@
|
||||||
/myapi.key
|
/myapi.key
|
||||||
/.suf
|
/.suf
|
||||||
tags
|
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.
|
* 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
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);
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,7 @@ sched_halt(void)
|
||||||
"movl %0, %%esp\n"
|
"movl %0, %%esp\n"
|
||||||
"pushl $0\n"
|
"pushl $0\n"
|
||||||
"pushl $0\n"
|
"pushl $0\n"
|
||||||
|
// LAB 4:
|
||||||
// Uncomment the following line after completing exercise 13
|
// Uncomment the following line after completing exercise 13
|
||||||
//"sti\n"
|
//"sti\n"
|
||||||
"1:\n"
|
"1:\n"
|
||||||
|
|
12
kern/trap.c
12
kern/trap.c
|
@ -66,11 +66,23 @@ 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
|
||||||
|
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,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
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