In order to minimize latency, all netgraph operations are functional.
That is, data and control messages are delivered by making function calls
rather than by using queues and mailboxes.
Yes, that's misleading... I've fixed it.
Actually, it's not completely the way you want it yet. As it stands
now, when you send an mbuf, you have the option of either sending
it directly (ie, functionally) or sending it by queueing it for
However, there's no way as the *receiving node* to say, "I want
all data sent to me to be delivered by qeueuing". So all sending
nodes would have to "cooperate".
This ability would be easy to add and something we'll probably do
now that you've pointed it out. :-)
I thought about this some time ago.
Just add a method called "queued receive".. (rcvdataq).
In most nodes this is filled out just the same as the rcvdata
(or the dequeuer might check for a NULL and use rcvdata instead)
In the case where node wants to force queuing, the normal
rcvdata method simply calls ng_queue_data() as soon as it's called.
The data is then queued and at dequeue time is fed in through rcvdataq()
which actually accepts tha data.
Note, that messages can also be queued. so a similar method may be used
Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
To Unsubscribe: send mail to majo...@FreeBSD.org
with "unsubscribe freebsd-isdn" in the body of the message