Commit Graph

318 Commits

Author SHA1 Message Date
pooka
8d2ee87e24 Do not force _FILE_OFFSET_BITS=64 here. It's no longer strictly speaking
required (rumpuser interface no longer uses off_t) and force-defining
it causes foo() to magically become foo64() on glibc (even on 64bit
platforms).
2014-01-16 16:03:33 +00:00
pooka
29316c504c Make setprogname() a nop where it's not supported. 2014-01-15 16:53:15 +00:00
pooka
2b361b10dd remove obsolete definitions 2014-01-08 11:04:47 +00:00
pooka
6459f6aa95 do as the comment says and #if defined(every_other) || defined(platform) || ...
===> #if !defined(__NetBSD__)
2014-01-08 01:47:31 +00:00
pooka
f67143f64b OpenBSD support
from Justin Cormack via github
2014-01-08 01:45:29 +00:00
pooka
55ffc8641a Do not export symbols which don't need to be exported.
via Justin Cormack
2013-12-31 00:25:17 +00:00
pooka
cbbcae5f8b remove outdated comment (since quite a few months ago) 2013-12-18 20:24:04 +00:00
pooka
9f9913cebe Workaround a gcc -Wuninitilized whine
github/buildrump.sh issue #44
2013-11-01 23:22:13 +00:00
pooka
d3852222c9 Oh, stdint.h isn't written with a comma ... 2013-10-30 13:08:14 +00:00
pooka
e5aed19d72 need to include stdint.h before rump/rumpuser.h 2013-10-30 12:55:53 +00:00
pooka
079cd2100d glibc on MIPS uses the same DYN d_ptr variant as NetBSD and musl.
from Justin Cormack
2013-10-30 12:30:32 +00:00
rmind
d60eb8c12f librumpuser: add some #ifdef __APPLE__ and missing bits to build it on OS X.
OK pooka@
2013-10-27 16:39:46 +00:00
rmind
0f412aba18 Give RUMP mutex and rwlock their own cache-line. Also give a separate
cache-line for the rwlock's reader counter.
2013-09-26 00:41:51 +00:00
rmind
72b022939e rumpuser_rwlock: replace internal pthread_spin_lock (for protecting reader
count) with atomic operations.  As pthread_spin_lock is not adaptive lock, it
can have hugely negative impact if contended here, especially with priority
inversions.  Now contended rwlock(9) no longer falls flat in RUMP kernels.
2013-09-24 23:45:16 +00:00
pooka
4be69cd08b If pthread_create() fails with EAGAIN, try a few more times with short
sleeps in between.  If it helps, good.  If it doesn't, oh well, at
least we tried.  pthread_create() returning EAGAIN has been observed in
real life at least on Linux (buildrump.sh issue #40)
2013-09-23 10:35:20 +00:00
pooka
b3e8687dfb more platform-specific qualifiers 2013-09-10 17:58:39 +00:00
pooka
6cd40f3fba Install rumpuser_port.h 2013-09-10 16:51:24 +00:00
pooka
e9fe155c86 Change the default value of rump kernels CPUs to 2. It used to be
the number of host cores, but that value is overkill for most uses,
especially with massively multicore hosts.  Dozens of useless virtual
CPUs are relatively speaking expensive in terms of bootstrap time and
memory footprint.  On the other end of the spectrum, defaulting to 2
might shake out some bugs from the qemu test runs.
2013-08-14 08:29:25 +00:00
pooka
f3adf1e54f comment polish: just musl 2013-07-30 18:56:03 +00:00
pooka
aaf7a23bf7 Decide ET_DYN behavior based on __GLIBC__ instead of __linux__,
e.g. musl libc doesn't follow glibc behavior.

per discussions with a number of people
2013-07-30 18:48:51 +00:00
njoly
f2bb7e6625 Use <major>.<minor> for NetBSD version. 2013-07-22 12:36:56 +00:00
pooka
3fcbbf6450 TIMEVAL_TO_TIMESPEC (for musl)
from Justin Cormack
2013-07-22 08:58:31 +00:00
pooka
40fd6d6fa3 Fixes when compiling against musl libc.
from Justin Cormack via private email
2013-07-20 18:46:15 +00:00
pooka
f768d01c4f Fix build where compiler can throw an array-bounds error and
code is built with NDEBUG
	or
	platform's assert is not __dead
2013-07-18 12:28:26 +00:00
pooka
69c4f929cd FreeBSD does the Solaris-like map->l_addr boogie.
from Ben Gras
2013-06-04 15:17:28 +00:00
wiz
890db9708a More markup, less typos. 2013-05-15 22:09:32 +00:00
pooka
03395b4cf5 also, bsd.own.mk to pick up mk.conf 2013-05-15 20:47:20 +00:00
pooka
5666bf4b73 Make it possible for external parties to specify additional dplibs.
This is useful for example on platforms which require -ldl.
2013-05-15 20:27:00 +00:00
pooka
907ce8379e Improve documentation on the locking order of cv_wait mtx/cpu. 2013-05-15 17:53:09 +00:00
pooka
3306a659de Add a generalized rumpuser_syncfd() call which allows the caller
to request a sync or a barrier for fd.
2013-05-15 15:57:01 +00:00
pooka
601de6b09f Pass off_t over the hypercall interface as int64_t to avoid potential
problems in setups where off_t doesn't want to be 64bit.

I'm already excitedly waiting for 128bit off_t and _LARGE_LARGE_FILES
2013-05-15 14:58:24 +00:00
pooka
15dc8bf975 Pass enums over the hypercall interface as ints to avoid some
pathological scenarios from arising in setups where enums might be
of a different size in the rump kernel and hypervisor.
2013-05-15 14:52:49 +00:00
pooka
d0d5069c1a Add RUMPUSER_LWP_CLEAR instead of overloading RUMPUSER_LWP_SET.
This simplifies some alternative hypervisor implementations.
2013-05-15 14:07:26 +00:00
pooka
af9586a1db need the rw_downgrade/tryupgrade methods too 2013-05-07 16:40:31 +00:00
pooka
c0e1ad2997 update to recent interface changes 2013-05-07 15:37:05 +00:00
pooka
059f8df6f9 include stdint.h before rumpuser.h (on some platforms it doesn't get
there automagically)
2013-05-07 15:18:35 +00:00
pooka
302678cea5 Initialize rw->downgrade when allocating a rwlock.
should/might/etc fix recent test hangs reported by martin & pgoyette
2013-05-05 12:27:38 +00:00
wiz
1747869c0f Fix some punctuation nits and bump date for previous. 2013-05-03 20:27:16 +00:00
pooka
cfbb87e05b Support proper rw_downgrade() semantics. 2013-05-03 00:23:49 +00:00
pooka
92e27cb3c3 reorder for better locality. no functional change. 2013-05-02 22:07:57 +00:00
pooka
f448fededb update for previous change 2013-05-02 21:47:12 +00:00
pooka
5606f9bf46 Ok, maybe using int64 for nanoseconds in the (sec,nsec) tuple was
a bit too future-proof.  I think long is enough there (let's just
hope nobody redefines "nano").  Also, make seconds signed just in
case someone wants their clock to be in 1901.
2013-05-02 21:45:28 +00:00
pooka
f950fd3d52 Push rwlock upgrade and downgrade into the hypervisor where there's
at least a chance to implement them with minimal fuss.
2013-05-02 21:35:19 +00:00
pooka
9a6702d07c Retry enabling spin mutexes. We should be able to avoid poking the
scheduler by just making wakeup from cv_wait() honor the same locking
order as when a spin mutex is acquired though mutex_enter().
*fingers crossed*
2013-05-02 20:33:54 +00:00
pooka
939c69c331 Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
2013-05-02 19:14:59 +00:00
pooka
5fe33bdc4b Clear rwlock's "writer" field when releasing the lock. Otherwise it might
have been possible for "readers" to reach visibility before "writer"
when another CPU took the lock, thus leading the previous owner to
incorrectly think that it still owned the lock in rw_write_held().

Also, remove duplicate clause from assert().
2013-05-02 16:49:08 +00:00
pooka
75af291e99 add HISTORY 2013-05-02 15:32:19 +00:00
pooka
47795d39b6 expand the intended usage of rumpuser_open() 2013-05-02 12:27:08 +00:00
pooka
a4068b6249 avoid Wunused on !NetBSD 2013-05-01 17:17:54 +00:00
pooka
aed84d6b35 document the hypercall interface 2013-04-30 21:18:40 +00:00
pooka
152588e3a9 Flip parameter order in the clock hypercalls to make them consistent
with everything else wrt in/out parameters.
2013-04-30 16:03:44 +00:00
pooka
6601e4ea9f put optional modules on a separate SRCS line 2013-04-30 15:48:29 +00:00
pooka
2e5a2855bd make this build/work again 2013-04-30 13:37:03 +00:00
pooka
c46eb786b4 In kthread_create(), pass the priority and cpu index down to the
rump kernel hypervisor (though the current implementation doesn't take
advantage of them).
2013-04-30 13:29:28 +00:00
pooka
be085dcd72 Translate error codes between the hypervisor and rump kernel. 2013-04-30 12:39:20 +00:00
pooka
8f668dabd5 Some systems don't provide preadv/pwritev (hi Solaris!), so implement
that with lseek + readv/writev instead (and avoid rewinding the
pointer with soon-to-be documentation).
2013-04-30 11:26:26 +00:00
pooka
32a34307fa Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
2013-04-30 00:03:52 +00:00
pooka
0dc3609e1c Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv.  ditto for writing.  Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
2013-04-29 20:08:48 +00:00
pooka
86c3d1928f Make rumpuser_dl_bootstrap() optional for platforms which don't
provide dynamic linking.
2013-04-29 18:00:19 +00:00
pooka
810cff61f8 Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist.  The
contents can come e.g. from the env or a config file.  Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
2013-04-29 17:31:05 +00:00
pooka
25df76591e The fsync hypercall is now used only with close, so get rid of it.
rumpuser_bio() should do the necessary syncing.
2013-04-29 15:40:38 +00:00
pooka
9dda4d8626 Give private hypercalls the ability to meddle with kthread contexts too. 2013-04-29 15:20:05 +00:00
pooka
a15e077982 Create a kernel thread context for the bio upcalls. 2013-04-29 14:54:03 +00:00
pooka
5af3856aee Make the rump kernel upcalls which were previous available only to
the sysproxy module available for the entire hypervisor.
2013-04-29 14:51:39 +00:00
pooka
f134f09680 set default bio mode to threaded 2013-04-29 13:57:46 +00:00
pooka
17b3a6d03d unschedule around blocking i/o 2013-04-29 13:53:46 +00:00
pooka
831d6eeb05 RUMPUSER_OPEN_DIRECT is no longer necessary 2013-04-29 13:21:03 +00:00
pooka
696d8241ab changes to bio hypercalls, part 3/n:
retire the filemmap/memsync hypercalls, they're no longer used
2013-04-29 13:19:11 +00:00
pooka
262a3aaf9f Rework how the bio hypercalls work, part 1/n:
Reduce the set of hypercalls to one: "do block i/o".  This not only
eliminates a lot of pseudo-duplicate code, it also gives the
hypervisor a lot more freedom on how to optimize the i/o.
2013-04-29 12:56:03 +00:00
pooka
5e41922b25 don't need event.h here anymore 2013-04-28 13:39:13 +00:00
pooka
49bb662cc0 Change rumpuser_cv_timedwait() from absolute time to relative time.
It's then the hypervisor's problem to translate it accordingly.
Now we no longer have to worry about the kernel having to know the
hypervisor's time and vice versa.
2013-04-28 13:37:51 +00:00
pooka
a53a2a5357 Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
2013-04-28 13:17:24 +00:00
pooka
ad45a6e694 make the file monitoring hypercalls private to shmif 2013-04-28 10:43:45 +00:00
pooka
b985b935c6 The ioctl hypercall is used only by the usb host controller driver,
so make it exclusive to that component.  I'm happy to see it gone.
2013-04-28 09:58:11 +00:00
pooka
b0711f2cf4 nuke unused var 2013-04-27 17:35:10 +00:00
pooka
9dd496792d make the random hypercall more generic 2013-04-27 16:56:29 +00:00
pooka
b8f5ee1a3f roll mutex init hypercalls into one (one of them already took a flag anyway) 2013-04-27 16:32:56 +00:00
pooka
bd14d4eb65 wrap unportable register_t with a long. should do it in the front
of the house too, but at least this is a start.
2013-04-27 16:02:55 +00:00
pooka
439ef2016c * treat kern_malloc.c as an unreal allocator (it's so lightweight)
* get rid of the rumpuser_realloc() hypercall
* pass size to rumpuser_free()
2013-04-27 15:34:53 +00:00
pooka
c05fab5d36 rumpuser_poll() is used only by sockin, so make the hypercall
private to that component.
2013-04-27 15:01:21 +00:00
pooka
93b95ff6a0 * integrate rumpuser_getversion() with the hypervisor initialization
* rename some identifiers to better match reality
2013-04-27 14:59:08 +00:00
pooka
bc3aabc030 Try to make sure that the appropriate calls to mutex_enter() takes
a spin mutex (i.e. does not relinquish cpu context while trying to
take the mutex).

Bump the hypercall interface version number.  I'll be doing a bunch
of other cleanups to simplify the interface for the benefit of
alternative hypervisor implementations.  I'll be riding this bump
and doing a second one only after I'm finished with all of the
changes.
2013-04-27 13:59:46 +00:00
pooka
7415696ea8 Attempt two for the previous: _ILP32 comes from headers, so don't use
it to decide if we want to muddle with _FILE_OFFSET_BITS.
2013-03-20 12:59:10 +00:00
pooka
5ccc76a66f Use _FILE_OFFSET_BITS=64 on Solaris too (necessary for 32bit builds). 2013-03-20 12:30:13 +00:00
pooka
ac8531a7b9 Terminate result of readlink(). Makes writefilewatch_setup() work in
cases when the buffer doesn't accidentally contain suitable zeroes.

Thanks to Juan RP who debugged this with me!
2013-03-18 21:00:52 +00:00
pooka
e3425032cb Move the rumpuser_net set of hypercalls to be a private to the sockin
component.  This cleans up the generic hypercall interfaces from ones
specific to only one component.  They should always have been private,
but the infrastructure to "make it so" didn't exist earlier.

no functional change
2013-03-18 13:14:10 +00:00
pooka
dae2a8e72e Refine previous: sys/sysmacros.h is where MIN/MAX comes from on Solaris,
so it needs to be included unconditionally.
2013-03-14 21:31:35 +00:00
pooka
fe337c7fc3 StunOS >= 5.11 has posix_memalign(), so add an additional constraint for
when we need to emulate it with memalign() and when not.
2013-03-14 20:42:57 +00:00
pooka
a3255409b1 DragonFly is in the Solaris camp in the "how to access ELF DYN at runtime"
valley of joy and love.
2013-03-12 14:03:32 +00:00
pooka
f9ef17b1a6 Tiny fix for Solaris. 2013-03-09 13:25:17 +00:00
pooka
4b0fe89206 Ensure that rump kernel component constructors from the main object
get processed.  This applies to ones which were linked statically.
Unfortunately, that's where it got a bit tricky, since the dlsym()
interface searches the handle and all its dependencies.  For the main
object the list of dependencies includes all the dynamic rump kernel
components that were included when the binary is linked.  So, a long
story short, make only one pass through the objects to harvest all the
component entries, weed out the dupes, and initialize components from
an in-memory dupe-free list when so requested.
2013-03-08 19:04:27 +00:00
pooka
7b7946c688 Add interfaces that out-of-librumpuser hypercalls can use to unschedule
and reschedule themselves if they plan to block.
2013-03-01 18:15:36 +00:00
pooka
573b65f8df limit use of rumpuser.h to where it is meant to be used from 2013-03-01 13:52:31 +00:00
pooka
a3f7afe3bd As reported by several people, the signature of pthread_setname_np() varies
from one Linux distro to another (didn't suspect it to be *that* _np).
Comment out the call on Linux pending autoconf support.
2013-02-11 16:02:31 +00:00
pooka
16280deed5 Include sys/sysmacros.h on solaris for MIN/MAX. 2013-01-17 21:42:22 +00:00
pooka
4adce8f663 Use the /proc way for counting host cores on Cygwin. 2013-01-14 21:04:15 +00:00
pooka
e0f5e00388 Support Cygwin as a hypervisor. 2013-01-14 21:00:16 +00:00
pooka
44ba88ce59 .. and make it compile on said platforms. 2013-01-10 19:14:12 +00:00
pooka
a8f9daedd7 Provide an implementation of writewatchfile for platforms without kqueue
or inotify (it's a rather simple implementation ;)
2013-01-10 19:13:04 +00:00
pooka
1f06a056c7 FreeBSD and DragonFly also provide hosts cpus via sysctl hw.ncpu. 2012-12-14 10:48:48 +00:00
pooka
9a4570ee22 Apparently MAP_ANON mmap() on Linux requires MAP_PRIVATE to be specified
for the addr parameter to have a sane effect.  Make it so.
2012-12-13 15:35:09 +00:00
pooka
4c7d25c0e6 Support binaries which use DT_GNU_HASH instead of DT_HASH. 2012-12-11 21:16:22 +00:00
pooka
4fd1e9198b fix previous 2012-11-26 20:03:40 +00:00
pooka
48528ba2e9 One more thing required by DragonFly 2012-11-26 19:57:24 +00:00
pooka
149f3bccf4 Support DragonFly BSD. 2012-11-26 17:55:11 +00:00
pooka
0d8e694036 PTHREAD_PROCESS_SHARED private doesn't seem to work on DragonFly, so
init the spin lock _PRIVATE (we don't really care which it is).
2012-11-26 17:54:51 +00:00
pooka
303e3a3aa0 FreeBSD fixes.
from philip@freebsd.org
2012-11-26 17:03:15 +00:00
pooka
23a1592d75 const poison is the cure 2012-11-26 17:00:54 +00:00
pooka
2f56710909 Since SA_SETLEN() is used only for sockaddr_in, convert it to SIN_SETLEN()
to avoid compiler whining on breaking strict aliasing rules.
2012-11-26 16:30:14 +00:00
pooka
0163bf03f8 satisfy the slightly more picky clang 2012-11-22 21:23:08 +00:00
pooka
b65f40a8c1 export register_t to rump kernel users on solaris 2012-11-21 17:41:27 +00:00
pooka
6530621714 Fixes for Solarisa. 2012-11-18 19:29:40 +00:00
pooka
2b783d7193 Check return value of ftruncate(). Some versions of gcc give
warnings if I don't.
2012-11-14 09:22:58 +00:00
pooka
88593a2335 Actually define the klock/unlock pointers. Not having the storage
allocated for them created "interesting" effects with one compiler setup.
2012-11-06 18:33:00 +00:00
pooka
57b62be432 one more routine 2012-11-06 18:31:14 +00:00
pooka
2c32a204a7 implement mutex_owner() 2012-11-02 16:55:02 +00:00
pooka
cc24ac78d4 need rumpuser_mutex_init_kmutex() these days 2012-11-02 13:31:26 +00:00
pooka
8083a2e226 Start restoring the ability to run rump kernels on non-threading
hypervisors.

Step 1: make this compile again (it's not complete, but
at least it compiles).
2012-11-02 11:11:27 +00:00
pooka
edf42f21f8 Implement the writewatchfile routines for a Linux hypervisor. As a
result, the shmif network driver now works when hosted on Linux.
2012-10-10 11:15:57 +00:00
pooka
6bc4679626 call pthread_setname_np() on Linux too. 2012-10-08 18:02:04 +00:00
pooka
bf01f875b4 For the rumpsp protocol, don't assume that the bit representation of
errnos match on the client and server platforms (the syscall subprotocol
errnos are handled by the server compat code).
2012-09-21 14:33:03 +00:00
pooka
8b5f6f3669 Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
2012-09-14 16:29:21 +00:00
pooka
82e980c205 More fixes for Linux (or glibc, really). 2012-09-03 11:33:35 +00:00
pooka
c62329f7d3 Make librumphijack compile and work on Linux. Do not try to hijack
calls which are not supported on Linux and therefore cannot be
handled by the rump kernel side syscall emulation (not that they'd
be present in the calling binaries anyway).
2012-08-25 18:00:06 +00:00
pooka
3b3ffd7039 Once again, make the rump kernel hypercall layer work on Linux. 2012-07-27 09:09:05 +00:00
abs
9e66e6d75e Update old-style definitions to ANSI, remove a couple of register
definitions along the way. Fixed gcc 4.1 build (thank you vax)
2012-06-25 22:32:43 +00:00
matt
fa835e8c8b These directories default to WARNS?=5 2012-03-21 05:37:42 +00:00
joerg
a65b1aeb01 Disable reduced stack for now. It creates fallout I'm not willing to
deal with.
2012-03-09 21:03:09 +00:00
tls
f27d6532f5 Remove arc4random() and arc4randbytes() from the kernel API. Replace
arc4random() hacks in rump with stubs that call the host arc4random() to
get numbers that are hopefully actually random (arc4random() keyed with
stack junk is not).  This should fix some of the currently failing anita
tests -- we should no longer generate duplicate "random" MAC addresses in
the test environment.
2011-11-28 08:05:05 +00:00
joerg
70b0796a0d Ensure that rumpuser_thread_exit doesn't return. 2011-05-23 20:49:08 +00:00
pooka
f347b4496a make work on nb5 again 2011-03-22 22:27:33 +00:00
njoly
603f3daee7 Convert hashtab to Elf_Symindx type, and use it directly to get symbol
count. Remove now unused GETVECWORDn macro.

This is needed to make it work on alpha which use non-standard 64bit
values for the symbol hash table section, unlike all other archs.
2011-03-16 11:44:01 +00:00
pooka
00e34b229c Use sendmsg() instead multiple calls to sendto(). It behaves
slightly better in the multithreaded exec case in terms of partial
frames sent.  Plus, it's theoretically a little cheaper.

There's still a gray area with partial transfer from sendmsg(),
but I'm not sure I care enough about some academic scenario to
start fixing it (it basically needs an OOB exec signaller).
2011-03-08 15:34:37 +00:00
pooka
91240244df Nuke all threads belonging to a process calling exec before allowing
the exec handshake to return.

In addition to being The Right Thing To Do, fixes some nasty
conditions for CLOEXEC fd's (or at least does so in theory, I
couldn't create any problems although I tried).
2011-03-08 12:39:28 +00:00
pooka
20446f99b9 return correct value when reading a short frame 2011-03-08 10:02:01 +00:00
pooka
fc3b823359 use nwork-adjusted amount of idle workers to decide is they are truly idle. 2011-03-07 21:57:15 +00:00
pooka
3129d3ab75 Cleanup server socket before sending back "ok" for halt. Fixes
some occasionally-seen race conditions in tests which do server
restarts (e.g. the raidframe tests).
2011-02-15 16:10:41 +00:00
pooka
5e301bc45b support HANDSHAKE_EXEC 2011-02-15 10:37:07 +00:00
pooka
2ba7fe5525 A bunch of changes which essentially make sshd work with a hijacked
rump tcp/ip stack:

* sshd likes to fork and then re-exec itself
  ==> trap execve() and augment the env with the current parameters
      essential to a rump kernel (kernel communication fd, information
      about dup2'd file descriptors)

* sshd likes to play lots of games with pipes, socketpairs and dup{,2}()
  ==> make sure we do not close essential rump client descriptors:
      dup() them to a safe place, except for F_CLOSEM where we
      simply leave them alone.  also, partially solved by the above,
      make sure the process's set of rump kernel descriptors persists
      over exec()

* sshd likes to chdir() before exec
  ==> for unix-style rump_sp(7) sockets save the full path on the
      initial exec and use it afterwards.  thread the path through
      the environment in execve()
2011-02-14 14:56:23 +00:00
pooka
8e6ede8c05 Turn the "idle workers available" from a flag into a counter so
that we can finally avoid all races (*knock knock*).
2011-02-08 11:21:22 +00:00
pooka
15fa3c8c84 Support query of the partition size in case underlying device is
a wedge.  This still lacks the proplibistic query of the sector
size and just assumes 512.  It's good that we make asking a file's
size as simple as requiring one stat(), one open() and three (3)
different ioctls plus some proplist mumbojumbo.  I'm surprised it's
available at all by means other than #wish.

code mostly from Taylor R Campbell, rant from me.
2011-02-06 21:05:53 +00:00
pooka
627ff529aa Fix a race condition in the worker thread caching logic: if we got
two or more syscall requests before any worker thread ran, we might
not have enough threads to handle the requests.  In some scenarios
this could lead to a deadlock.
2011-02-06 18:25:48 +00:00
yamt
7597b0c1e6 fix indent. no functional changes. 2011-02-05 13:51:56 +00:00
pooka
dac4423feb Pass the value of getprogname() from the client to the server and
record it in p_comm.  This is nice for things like sockstat, since
they now display the client command name:

pain-rustique:43:~> rump.sockstat
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     xulrunner- 16     0 tcp    192.168.2.114.65507   204.152.190.12.80
root     xulrunner- 16     1 tcp    192.168.2.114.65501   204.152.190.12.80
root     xulrunner- 16     2 tcp    192.168.2.114.65500   204.152.190.12.80
root     xulrunner- 16     3 tcp    192.168.2.114.65499   204.152.190.12.80
root     xulrunner- 16     5 tcp    192.168.2.114.65498   204.152.190.12.80
root     xulrunner- 16     6 tcp    192.168.2.114.65497   204.152.190.12.80
root     socket     62     0 tcp6   *.http                *.*
root     socket     62     1 tcp    *.http                *.*
root     socket     63     0 tcp6   *.81                  *.*
root     socket     63     1 tcp    *.81                  *.*
2011-01-28 19:21:28 +00:00
pooka
19a57922d0 Add reconnect code to librumpclient. In case the connection to
the kernel server is lost, the client will now automatically attempt
to reconnect.

Among other things, this makes it possible to "reboot" and restart
the TCP/IP stack from under firefox without any perceivable less
of service.  If pages were loading at the time the TCP/IP server
was killed, there may be some broken links, but nothing a ctrl-r
cannot fix.
2011-01-24 17:47:51 +00:00
pooka
112941441d happiness is a quiet lint 2011-01-22 14:22:10 +00:00
pooka
3b79c0eb90 shush lint 2011-01-22 14:18:55 +00:00
pooka
1d9f8678bd In case sys_reboot() was called by a remote client, put the response
in the socket before we shut down.  This way the response to the
syscall travels to the caller and they know things worked correctly
instead of having to just assume.
2011-01-22 13:41:22 +00:00
pooka
3cc5cc6884 include pid of rump server in hostname 2011-01-20 15:00:12 +00:00
pooka
9fba158b8b Add RUMPSP_RAISE: the kernel sends a signal to the client. 2011-01-14 13:12:14 +00:00