commit-hurd
[Top][All Lists]
Advanced

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

[hurd] 01/30: exec: fix setting the name of early servers


From: Samuel Thibault
Subject: [hurd] 01/30: exec: fix setting the name of early servers
Date: Tue, 22 Sep 2015 21:51:57 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 827915ca4a4d61ae5b50596e46f5aaf7d402a2c0
Author: Justus Winter <address@hidden>
Date:   Sun Jul 12 14:46:50 2015 +0200

    exec: fix setting the name of early servers
    
    Previously, the exec server did not set the name of the servers
    started before the proc server.  Instead this was done by the startup
    server, but this was merely a workaround, missing notably the startup
    server itself.
    
    * exec/exec.c (set_name): New function.
    (do_exec): Move the code setting the name to a new function, and also
    call it if the proc server is not started yet.
    * startup/startup.c (run): Drop hack.
---
 exec/exec.c       | 50 +++++++++++++++++++++++++++++++++-----------------
 startup/startup.c |  1 -
 2 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/exec/exec.c b/exec/exec.c
index ee500d7..3b63b7f 100644
--- a/exec/exec.c
+++ b/exec/exec.c
@@ -686,6 +686,36 @@ finish (struct execdata *e, int dealloc_file)
     }
 }
 
+/* Set the name of the new task so that the kernel can use it in error
+   messages.  If PID is not zero, it will be included the name.  */
+static void
+set_name (task_t task, const char *exec_name, pid_t pid)
+{
+  char *name;
+  int size;
+
+  if (pid)
+    size = asprintf (&name, "%s(%d)", exec_name, pid);
+  else
+    size = asprintf (&name, "%s", exec_name);
+
+  if (size == 0)
+    return;
+
+  /* This is an internal implementational detail of the GNU Mach kernel.  */
+#define TASK_NAME_SIZE 32
+  if (size < TASK_NAME_SIZE)
+    task_set_name (task, name);
+  else
+    {
+      char *abbr = name + size - TASK_NAME_SIZE + 1;
+      abbr[0] = abbr[1] = abbr[2] = '.';
+      task_set_name (task, abbr);
+    }
+#undef TASK_NAME_SIZE
+
+  free (name);
+}
 
 /* Load the file.  */
 static void
@@ -1173,24 +1203,10 @@ do_exec (file_t file,
       if (e.error)
        goto out;
 
-      char *name;
-      int size = asprintf (&name, "%s(%d)", argv, pid);
-      if (size > 0)
-       {
-/* This is an internal implementational detail of the gnumach kernel.  */
-#define TASK_NAME_SIZE 32
-         if (size < TASK_NAME_SIZE)
-           task_set_name (newtask, name);
-         else
-           {
-             char *abbr = name + size - TASK_NAME_SIZE + 1;
-             abbr[0] = abbr[1] = abbr[2] = '.';
-             task_set_name (newtask, abbr);
-           }
-#undef TASK_NAME_SIZE
-         free (name);
-       }
+      set_name (newtask, argv, pid);
     }
+  else
+    set_name (newtask, argv, 0);
 
   /* Create the initial thread.  */
   e.error = thread_create (newtask, &thread);
diff --git a/startup/startup.c b/startup/startup.c
index da78b13..e916768 100644
--- a/startup/startup.c
+++ b/startup/startup.c
@@ -377,7 +377,6 @@ run (const char *server, mach_port_t *ports, task_t *task)
              printf ("Pausing for %s\n", prog);
              getchar ();
            }
-          task_set_name (*task, (char *) prog);
          err = file_exec (file, *task, 0,
                           (char *)prog, strlen (prog) + 1, /* Args.  */
                           startup_envz, startup_envz_len,

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]