From 62d2cb54e5440eea2893d735dff2e84c8b1a8468 Mon Sep 17 00:00:00 2001 From: Themis Demetriades Date: Mon, 4 Nov 2024 00:16:04 +0000 Subject: [PATCH] Update start_process to push pointers to process arguments onto the process thread's stack --- src/userprog/process.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/userprog/process.c b/src/userprog/process.c index 122325c..ffd964b 100644 --- a/src/userprog/process.c +++ b/src/userprog/process.c @@ -123,12 +123,13 @@ start_process (void *file_name_) struct list_elem *tail = list_tail (&arg_list); while (e != tail) { - /* TODO: Push argument pointers to process stack. */ + struct arg_elem *arg_elem = list_entry (e, struct arg_elem, elem); + + if_.esp -= sizeof (char *); + memcpy (if_.esp, arg_elem->arg, sizeof (char *)); - struct list_elem *prev_e = e; e = list_next (e); - - free (list_entry (prev_e, struct arg_elem, elem)); + free (arg_elem); } /* If load failed, quit. */