On Sat May 17 06:28:02 EDT 2014, puta2001-...@yahoo.com wrote: > Hello, help please, after recent (15 May) "pull": > > mntgen 31: bad sys call number 53 pc 813f > ipconfig, keyfs, webfs webcookies, faces = the same. > ls -l for example shows > ls 222: bad sys call number 53 pc bb8f > ls 222: suicide: sys: bad sys call pc=0x0000bb8f > acid leads to /sys/src/libc/386/main9.s:16
looks like nsec() in the c library was replaced with a syscall, and this was put into libc, and many things were recompiled. unfortunately pull does not update your kernel, and your kernel doesn't support nsec. if you have a dump file system, i would recommend copying /386/bin executables back from before the may 15 update. if you don't, the next best option is to copy mk from my contrib, then r=/n/sources/contrib/quanstro/rescue 9fs sources && cp $r/mk /386/bin/mk cd /sys/src/libc/9sys cp $r/mkfile $r/nsec.c . mk now you can rebuild /sys/src/cmd as needed to build a kernel with nsec. by the way, i'm currenttly using this version of nsec and i prefer it, though it requires 3 syscalls and not two, and takes about 2x as long. it's still just around 1µs on most of my machines. if nsec() is causing issues, i would think that cycles(2) would be a good option, and much faster than a syscall. ; cat nsec.c #include <u.h> #include <libc.h> vlong nsec(void) { uchar b[8]; int fd; fd = open("/dev/bintime", OREAD); if(fd != -1) if(pread(fd, b, sizeof b, 0) == sizeof b){ close(fd); return getbe(b, sizeof b); } close(fd); return 0; }