]> Zhao Yanbai Git Server - minix.git/commitdiff
Give pm its own brk() so malloc() works in pm. pm needs more stack for this.
authorBen Gras <ben@minix3.org>
Fri, 30 Jun 2006 14:36:11 +0000 (14:36 +0000)
committerBen Gras <ben@minix3.org>
Fri, 30 Jun 2006 14:36:11 +0000 (14:36 +0000)
servers/pm/Makefile
servers/pm/main.c
servers/pm/misc.c

index ed858f5a4ef7dabc3244350bb074768ae6cfe00f..2904d09b909091802c472a6e83be5d2ce7b66133 100644 (file)
@@ -20,7 +20,7 @@ OBJ =         main.o forkexit.o break.o exec.o time.o timers.o \
 all build:     $(SERVER)
 $(SERVER):     $(OBJ)
        $(CC) -o $@ $(LDFLAGS) $(OBJ) -lsysutil  -lsys -ltimers
-       install -S 256w $@
+       install -S 8k $@
 
 # install with other servers
 install:       /usr/sbin/$(SERVER)
index 0c38d98cf76d9d38a43ff6e1d34aa7d979e614b8..274b538f3b9d3e3a305d84f4ffa5a4f6c7076642 100644 (file)
@@ -271,7 +271,6 @@ PRIVATE void pm_init()
   if (OK != (s=sys_getimage(image))) 
        panic(__FILE__,"couldn't get image table: %d\n", s);
   procs_in_use = 0;                            /* start populating table */
-  printf("Building process table:");           /* show what's happening */
   for (ip = &image[0]; ip < &image[NR_BOOT_PROCS]; ip++) {             
        if (ip->proc_nr >= 0) {                 /* task have negative nrs */
                procs_in_use += 1;              /* found user process */
@@ -315,10 +314,8 @@ PRIVATE void pm_init()
                mess.PR_ENDPT = rmp->mp_endpoint;
                if (OK != (s=send(FS_PROC_NR, &mess)))
                        panic(__FILE__,"can't sync up with FS", s);
-               printf(" %s", ip->proc_name);   /* display process name */
        }
   }
-  printf(".\n");                               /* last process done */
 
   /* Override some details. INIT, PM, FS and RS are somewhat special. */
   mproc[PM_PROC_NR].mp_pid = PM_PID;           /* PM has magic pid */
index 49db944c941195f3544a3c53cd784f841b540c57..ca3d67f75e94f7e828397f9055489ede8cded2e4 100644 (file)
@@ -11,6 +11,8 @@
  *   do_svrctl: process manager control
  */
 
+#define brk _brk
+
 #include "pm.h"
 #include <minix/callnr.h>
 #include <signal.h>
@@ -520,3 +522,20 @@ PUBLIC int do_svrctl()
        return(EINVAL);
   }
 }
+
+/*===========================================================================*
+ *                             _brk                                         *
+ *===========================================================================*/
+
+extern char *_brksize;
+PUBLIC int brk(brk_addr)
+char *brk_addr;
+{
+/* PM wants to call brk() itself. */
+       if(real_brk(&mproc[PM_PROC_NR], (vir_bytes) brk_addr) != OK) {
+               return -1;
+       }
+       _brksize = brk_addr;
+       return 0;
+}
+