Change proc_mgmt/pending_clients.h to use reply queues instead of hashtables.
authorRazvan Damachi <razvan.damachi@gmail.com>
Thu, 13 Jul 2017 17:50:59 +0000 (19:50 +0200)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Thu, 31 Aug 2017 14:35:09 +0000 (16:35 +0200)
commit649deefe6a34feabafeb322fc2e39015145eb030
treec9061762f3b0ecbff2f1ce31897dd7255a9518ce
parent2b03afffdd8ac2dee54c18fe51281df84dfa5b84
Change proc_mgmt/pending_clients.h to use reply queues instead of hashtables.

The process manager now enqueues a new client to send a reply to for every
request it sends to a spawnd. This happens for every spawnd instance (the
process manager has a "send" queue and a "receive" queue for every spawnd
instance it knows of -- the latter is now used for pending clients).

Whenever a new reply from spawnd is received, the process manager now pops the
next expected client to reply to from the receive queue, instead of retrieving
it from a hashtable. This approach is faster, as it does not rely on asking the
monitor to identify caps in order to retrieve pending clients from hashtables.

However, this approach assumes:
1) that spawnd is single-threaded & event-based;
2) that Flounder messages arrive in-order (Barrelfish seems to guarantee this).

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>
if/spawn.if
usr/proc_mgmt/Hakefile
usr/proc_mgmt/domain.c
usr/proc_mgmt/pending_clients.c [deleted file]
usr/proc_mgmt/pending_clients.h
usr/proc_mgmt/service.c
usr/proc_mgmt/spawnd_state.c
usr/proc_mgmt/spawnd_state.h
usr/spawnd/service.c