Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!aplcen!samsung!zaphod.mps.ohio-state.edu!swrinde!ucsd!helios.ee.lbl.gov!nosc!crash!pnet01!cwr From: cwr@pnet01.cts.com (Will Rose) Newsgroups: comp.os.minix Subject: PC 1.5.0 execn.c fix Message-ID: <1368@crash.cts.com> Date: 5 Feb 90 00:16:05 GMT Sender: root@crash.cts.com Organization: People-Net [pnet01], El Cajon CA Lines: 51 When writing a ps command for 1.5.0, I found that the kernel name pointer for files exec'd by init was not zero, as I expected, but garbage. To save space, init uses a libc.a routine execn.s to exec things; as far as I can find, it's the only user of this routine. Below is a new version of execn.c (the patch was longer than the file) that sets up the kernel name pointer correctly, and takes up very little more space. Will Rose ============================= cut here ================================ echo x - execn.c sed '/^X/s///' > execn.c << '/' X/* execn.c: passes only filename on the stack - Jan 90 */ X X#include X#define PTRSIZE sizeof(char *) X Xint execn(name) Xchar *name; /* pointer to file to be exec'd */ X{ X/* Special version used when there is one arg and no environment. This call X * is used by INIT, to avoid having to allocate ARG_MAX. The single X * name argument is used by the process status command. X */ X X PRIVATE char stack[PTRSIZE * 16] ; /* ACK won't auto init ? */ X PRIVATE char **cpp = (char **) stack; X X *cpp++ = (char *) 1; /* argc */ X *cpp++ = (char *) (PTRSIZE * 5); /* *argv[0] */ X *cpp++ = 0; X *cpp++ = 0; X *cpp = 0; X X strcpy(stack + (PTRSIZE * 5), name); /* nb. known source, no overwrite check */ X X return(callm1(MM_PROC_NR, EXEC, len(name), sizeof(stack), 0, name, stack, NIL_PTR)); X} / ----------------------------------------------------------------------- "If heaven too had passions | Will Rose even heaven would | UUCP: {nosc ucsd hplabs!hp-sdd}!crash!pnet01!cw grow old." - Li Ho. | ARPA: crash!pnet01!cwr@nosc.mil | INET: cwr@pnet01.cts.com UUCP: {nosc ucsd hplabs!hp-sdd}!crash!pnet01!cwr ARPA: crash!pnet01!cwr@nosc.mil INET: cwr@pnet01.cts.com