> Which raises another question: are 9atom and 9front in synch with the
> BL distribution (itself in question) regarding syscall 53?
9atom is not. i didn't know that it was added, nor do i
know why nsec was added as a syscall.
i indirectly heard "go needs it", but that is not really a reason
i can understand technically. why must it be a system call?
getting ahead of myself, if the problem is shared memory vs
shared fds, then the solution is easy: fix nsec in the c library.
don't save a copy of the fd. that leads to trouble. (the new
call takes ~6µs on my e3 v2)
if the problem is getting very low-latency timing, or relative
timing, then the solution is still easy: use the timestamp counter.
no version of nsec works for relative timing due to timesync
adjustments!
i'm sure there are other possibilities, i don't think i see them without
an explination. so if anyone has anything else, that would be
interesting.
- erik
---
; cat /sys/src/libc/9sys/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;
}