[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