]> Zhao Yanbai Git Server - minix.git/commitdiff
PM: save process frame length
authorDavid van Moolenbroek <david@minix3.org>
Tue, 14 Sep 2010 21:21:54 +0000 (21:21 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Tue, 14 Sep 2010 21:21:54 +0000 (21:21 +0000)
commands/ps/ps.c
servers/pm/exec.c
servers/pm/mproc.h

index 3be29248296007144f3e68d99b47807e929b0021..bd6f10e7169ad7d3a071312da6c09166011386c7 100644 (file)
@@ -562,7 +562,7 @@ int pstat(int p_nr, struct pstat *bufp, int endpoints)
   bufp->ps_utime = ps_proc[p_ki].p_user_time;
   bufp->ps_stime = ps_proc[p_ki].p_sys_time;
 
-  bufp->ps_procargs = ps_mproc[p_nr].mp_procargs;
+  bufp->ps_procargs = ps_mproc[p_nr].mp_frame_addr;
 
   if (bufp->ps_state == Z_STATE)
        bufp->ps_args = "<defunct>";
index 0b9b0df13460c1c812b32cfbdac4af3d8289062e..de58d4a0f34bfb9eceaa04b49244b4bf2b867472 100644 (file)
@@ -8,7 +8,7 @@
  *    - take care of setuid and setgid bits
  *    - fix up 'mproc' table
  *    - tell kernel about EXEC
- *    - save offset to initial argc (for ps)
+ *    - save offset to initial argc (for procfs)
  *
  * The entry points into this file are:
  *   do_exec:   perform the EXEC system call
@@ -95,8 +95,9 @@ PUBLIC int do_exec_newmem()
                strncpy(rmp->mp_name, args.progname, PROC_NAME_LEN-1);
                rmp->mp_name[PROC_NAME_LEN-1] = '\0';
 
-               /* Save offset to initial argc (for ps) */
-               rmp->mp_procargs = (vir_bytes) stack_top - args.args_bytes;
+               /* Save offset to initial argc (for procfs) */
+               rmp->mp_frame_addr = (vir_bytes) stack_top - args.args_bytes;
+               rmp->mp_frame_len = args.args_bytes;
 
                /* Kill process if something goes wrong after this point. */
                rmp->mp_flags |= PARTIAL_EXEC;
@@ -183,7 +184,7 @@ vir_bytes pc;
                check_sig(rmp->mp_pid, sn, FALSE /* ksig */);
        }
 
-       new_sp= (char *)rmp->mp_procargs;
+       new_sp= (char *)rmp->mp_frame_addr;
        r= sys_exec(rmp->mp_endpoint, new_sp, rmp->mp_name, pc);
        if (r != OK) panic("sys_exec failed: %d", r);
 }
index b75264bca2c789c56d762079f28bcd197dca3f46..f207a01a5746492f7c3fb3543513ed55c362276a 100644 (file)
@@ -50,9 +50,12 @@ EXTERN struct mproc {
 
   unsigned mp_flags;           /* flag bits */
   unsigned mp_trace_flags;     /* trace options */
-  vir_bytes mp_procargs;        /* ptr to proc's initial stack arguments */
   message mp_reply;            /* reply message to be sent to one */
 
+  /* Process execution frame. Both fields are used by procfs. */
+  vir_bytes mp_frame_addr;     /* ptr to proc's initial stack arguments */
+  size_t mp_frame_len;         /* size of proc's initial stack arguments */
+
   /* Scheduling priority. */
   signed int mp_nice;          /* nice is PRIO_MIN..PRIO_MAX, standard 0. */