[coyotos-dev] Endpoints and replies
Jonathan S. Shapiro
shap at eros-os.org
Tue Jan 17 17:31:10 EST 2006
[I am forwarding the following note on behalf of Norm Hardy, who
originally sent this to me privately.]
-------- Forwarded Message --------
From: Norman Hardy <norm at cap-lore.com>
To: Jonathan Shapiro <shap at cs.jhu.edu>
Subject: Exposed call count
Date: Tue, 17 Jan 2006 13:04:09 -0800
If there is or was a discussion of this on the coyotos mail list I
did not see it.
I would be glad to put this on that list (giving you credit) unless
you object.
You call the "call count" something else—I forget what.
I ran into a problem at the end of the note.
You propose to expose the call count and thus remove hair from the
kernel.
There are two aspects to this: (1) kernel semantics, (2) kernel
implementation costs.
The later subdivides into (2a) code size and (2b) code complexity
(2c) performance.
There is also the issue of new complexity in domain land.
As I understand the proposal the 3 kernel states would be simplified
by eliding waiting and available.
In their place would be a new state that was receptive to only some
subset of gate keys and
that subset would be defined by a subset of data byte (GPL (guarded
pay-load)) values.
Domain logic would somehow specify this subset.
Likewise start keys and resume keys would be elided to mere gate keys.
The call would specify a GPL value for a new key to the caller, much
as resume keys are
produced in the old plan.
The caller is advised to produce a distinct value upon each call if
he must guard against stale resumption.
I recall a vague proposal that we did not implement for Keykos, or
even write down.
It would have given priority on the stall queue to start keys whose
data byte value was greater than some fixed constant, say 192.
This provided an extremely simple priority scheme that was trivial to
specify and implement.
If the benefit had been more than hypothetical we would have
implemented it.
I see no problem in the caller specifying the subset of GPL values
via which it will accept messages.
It certainly need not be an arbitrary subset.
Indeed it might be all or singlton zot where zot is the GPL value in
the last call operation.
Allowing some slightly more general subsets might be strategic however.
Perhaps such generality should be deferred until concrete demand is
observed.
To solve the problem of overflow of GPL values one can use a sever
operation on the domain (process) root which would dissolve all
outstanding keys.
That would also dissolve the keys playing the role of start keys in
the old plan and that is bad.
Alternatively a node could have two sorts of allocation count, as it
has two in the old plan.
I would call these the front door key and the back door key.
Alas this is tending back to the disadvantages of the old plan.
Have you another idea here?
More information about the coyotos-dev
mailing list