Implement fake stack and temporary timer change #26

Merged
ed1223 merged 4 commits from user-programs into system-calls 2024-11-06 16:57:10 +00:00
6 changed files with 23 additions and 242 deletions
Showing only changes of commit 2fefdef605 - Show all commits

View File

@@ -17,6 +17,7 @@
#include "threads/palloc.h"
#include "threads/thread.h"
#include "threads/vaddr.h"
#include "devices/timer.h"
static thread_func start_process NO_RETURN;
static bool load (const char *cmdline, void (**eip) (void), void **esp);
@@ -88,7 +89,12 @@ start_process (void *file_name_)
int
process_wait (tid_t child_tid UNUSED)
{
return -1;
/* As a temporary wait, waiting will just put the thread to sleep for one
second (TIMER_FREQ = 100 ticks ~ 1 second). */
/* TODO: Implement process_wait () correctly. Remove the next line. */
timer_sleep (TIMER_FREQ);
return 0; /* TODO: Change this too */
}
/* Free the current process's resources. */
@@ -451,7 +457,7 @@ setup_stack (void **esp)
{
success = install_page (((uint8_t *) PHYS_BASE) - PGSIZE, kpage, true);
if (success)
*esp = PHYS_BASE;
*esp = PHYS_BASE - 12;
else
palloc_free_page (kpage);
}