Port-mips archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Running o32 code on n32 (Part 2, fancier programs)
On Tue, Oct 11, 2016 at 04:21:19AM +1100, matthew green wrote:
> there's an infinite loop in readdir(3). what i guess is happening is
> that each run through the loop dp->d_reclen is 0, so that the value
> of dirp->dd_loc always remains 0. so, something is wrong here, but
> i don't see it in a simple test case (i haven't gotten pkgsrc on my
> gxemul system yet.)
The way directory reading works is really nasty - it makes destructive
changes to the struct file as it goes. However, netbsd32___getdents30
is different from sys___getdents30 (as far as I can tell) only by
being missing a ktrace hook.
If someone can test this, I'll commit it, and then we'll be able to
see what's happening better:
Index: netbsd32_fs.c
===================================================================
RCS file: /cvsroot/src/sys/compat/netbsd32/netbsd32_fs.c,v
retrieving revision 1.75
diff -u -r1.75 netbsd32_fs.c
--- netbsd32_fs.c 16 Oct 2016 20:09:53 -0000 1.75
+++ netbsd32_fs.c 16 Oct 2016 20:11:13 -0000
@@ -519,6 +519,7 @@
}
error = vn_readdir(fp, SCARG_P32(uap, buf),
UIO_USERSPACE, SCARG(uap, count), &done, l, 0, 0);
+ ktrgenio(SCARG(uap, fd), UIO_READ, SCARG_P32(uap, buf), done, error);
*retval = done;
out:
fd_putfile(SCARG(uap, fd));
--
David A. Holland
dholland%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index