home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.unix.bsd
- Path: sparky!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);
-