Return to BSD News archive
Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!uunet!mcsun!sun4nl!eur.nl!pk
From: pk@cs.few.eur.nl (Paul Kranenburg)
Subject: [386BSD] bugfix for kern__physio.c [Was: kvm.c patch wanted]
Message-ID: <1992Sep9.131126.1009@cs.few.eur.nl>
Sender: news@cs.few.eur.nl
Reply-To: pk@cs.few.eur.nl
Organization: Erasmus University Rotterdam
References: <1992Sep7.190727.9631@Urmel.Informatik.RWTH-Aachen.DE> <Bu975K.4n7@ibmpcug.co.uk>
Date: Wed, 9 Sep 1992 13:11:26 GMT
Lines: 62
In <Bu975K.4n7@ibmpcug.co.uk> root@ibmpcug.co.uk (The root of all evil) writes:
>In article <1992Sep7.190727.9631@Urmel.Informatik.RWTH-Aachen.DE> kuku@acds.physik.rwth-aachen.de writes:
>>
>>Has anyone gotten ps to output the user command line?
>>
>>There were two posts on that issue in July, I believe. These two patches
>>for kvm.c at al.gave this "hunk 2 failed" - oh I love these kind of
>>messages. Should add it to my .signature file :-)
>Thats because whoever did the patch missed off semi-colons in the
>most awkward of places... The best plan is to look at the original
>and the patch and decide which semicolons to delete from the patch :)
>If you e-mail me, I will send you a patched copy of kvm.c.
An even more patched version of kvm.c is available from `ftp.cs.few.eur.nl'
in directory: ~/pub/386BSD/unofficial.
This version contains a first attempt to cul the u area and command arguments
from the swap device if the pages containing them are not available from
/dev/mem. This is a rather costly operation since it involves traversing a
lot of VM data structures (fortunately, I need it only for arguments since
I've set enableswap to zero in `vm/vm_glue.c'). It may also have difficulties
in retrieving more than a page full of args.
Before you try this, you need to apply a patch to `kern/kern__physio.c' to
prevent your machine from crashing on an attempt to read from /dev/drum.
This problem is due to an improperly initialized buffer in the routine
`physstrat'. Here's a diff:
------- kern__physio.c -------
*** /tmp/da16742 Wed Sep 9 14:51:37 1992
--- kern__physio.c Tue Sep 8 19:03:09 1992
***************
*** 95,100 ****
--- 95,101 ----
/* create and build a buffer header for a transfer */
bp = (struct buf *)malloc(sizeof(*bp), M_TEMP, M_NOWAIT);
+ bzero((char *)bp, sizeof(*bp));
bp->b_flags = B_BUSY | B_PHYS | rw;
bp->b_proc = p;
bp->b_dev = dev;
***************
*** 120,126 ****
ftype = VM_PROT_READ | VM_PROT_WRITE;
else
ftype = VM_PROT_READ;
! for (adr = trunc_page(base) ; adr < base + bp->b_bcount;
adr += NBPG) {
vm_fault(&curproc->p_vmspace->vm_map,
adr, ftype, FALSE);
--- 121,127 ----
ftype = VM_PROT_READ | VM_PROT_WRITE;
else
ftype = VM_PROT_READ;
! for (adr = (caddr_t)trunc_page(base); adr < base + bp->b_bcount;
adr += NBPG) {
vm_fault(&curproc->p_vmspace->vm_map,
adr, ftype, FALSE);