[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] kernel2: pm_create_process: PPID 0 ist aktueller Prozess



! kernel2: Wenn beim Erstellen eines Prozesses 0 als PID des
  Elternprozesses angegeben wird, ist der aufrufende Prozess selbst
  gemeint.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/kernel2/src/syscalls/pm.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/kernel2/src/syscalls/pm.c b/src/kernel2/src/syscalls/pm.c
index 71358f4..f65018f 100644
--- a/src/kernel2/src/syscalls/pm.c
+++ b/src/kernel2/src/syscalls/pm.c
@@ -50,7 +50,8 @@
  * @param start Start-Adresse
  * @param uid User-Id
  * @param cmdline Kommandozeile mit der der Prozess gestartet wurde
- * @param parent_pid PID des Elternprozesses
+ * @param parent_pid PID des Elternprozesses; bei 0 wird die PID des
+ * aufrufenden Prozesses selbst benutzt
  *
  * @return PID des neuen Tasks
  */
@@ -58,7 +59,14 @@ pid_t syscall_pm_create_process(vaddr_t start, uid_t uid, const char* cmdline,
     pid_t parent_pid)
 {
     // Eltern-Prozess holen
-    pm_process_t* parent = pm_get(parent_pid);
+    pm_process_t* parent;
+
+    if (parent_pid == 0) {
+        parent = current_process;
+    } else {
+        parent = pm_get(parent_pid);
+    }
+
     // TODO: UID?
     pm_process_t* process = pm_create(parent, cmdline);
     pm_thread_create(process, start);
-- 
1.6.0.2