reconnect in case the connection to the server is lost. Default
to exactly one reattempt. This makes sense and additionally fixes
the dev/raidframe/smalldisk test which currently causes a server
panic when a certain raidctl command is run (without this fix the
test would timeout since the client kept attempting to reconnect).
should generate the right info, but it's easier to fix here now.
This fixes compat syscalls for rump servers with dynamically loaded
components. Since the compat syscall revamp a little time ago e.g.
stat() didn't work on my system (which is 5.0-based) with e.g.
rump_server -lrumpvfs. Static servers and non-compat syscalls
worked just fine, though, making this a little harder to spot that
the usual bug.
soft/hard counters. beyond the extra info, it seems to help avoid some
of these counters getting corrupted due to unlocked multiple accesses.
adjust the xcallintr() from xcall() hack so that we don't count these
events as interrupts. align the existing evcnt name to count this.
* There's a deadlock potential between multiple CPUs trying
* to xcall() at the same time, and the thread that loses the
* race to get xpmsg_lock is at an IPL above the incoming IPI
* IPL level, so it sits around waiting to take the lock while
* the other CPU is waiting for this CPU to handle the IPI and
* mark it as completed.
*
* If we fail to get the mutex, and we're at high enough IPL,
* call xcallintr() if there is a valid msg.tag.
this seems to fix the xcall() failed to ping cpus problem.
idea from martin, tested by macallan and myself.
-assume (KASSERT) that the timeval given is normalized, and remove
some partial fixup which I don't see what it is good for
(I'm ready to back that out if someone tells a reason)
-catch overflows due to conversion of time_t (from tv_sec) to
integer -- this function doesn't do 64-bit arithmetics (which makes
sense because relative times which don't fit into 32 bits can be
considered nonsense here), and before a huge tv_sec could lead to
a zero hz result, violating the caller's assumptions (in particular
trigger a diagnostic panic in abstimeout2timo())
as found in the vortex86 SoCs (http://www.vortex86dx.com).
Ported from freebsd.
Not added to amd64's GENERIC because this CPU is 32bit only.
thanks to DM&P Electronics, Inc for providing documentation and sample
devices for this work.
as found in the vortex86 SoCs (http://www.vortex86dx.com).
Ported from freebsd.
Not added to amd64's GENERIC because this CPU is 32bit only.
thanks to DM&P Electronics, Inc for providing documentation and sample
devices for this work.
the compiler loses information about the size of the object. So instead of
the hacky #define mess we did before, add a way to inject our function between
the user call and the system call.