drain IPI FIFO

Matthew Dillon dillon at apollo.backplane.com
Tue Aug 31 17:02:43 PDT 2004


:Hi,
:
:I'm reading the lwkt source codes.
:In "lwkt_send_ipiq(globaldata_t target, ipifunc_t func, void *arg)",
:there are these lines:
:
:while (ip->ip_windex - ip->ip_rindex > MAXCPUFIFO / 4) {
:...
:lwkt_process_ipiq();
:}
:
:and in " lwkt_process_ipiq()", there are:
:
: while (lwkt_process_ipiq1(&ip[gd->gd_cpuid], NULL));
:
:To summarize, when the FIFO from CPU-A to CPU-B is almost full, A
:starts to drain all the FIFO from other CPUs to itself? I would expect
:B to drain the FIFO from A to B while A holds off a little while.
:
:Thanks,
:Bin

    A has no control over when B drains the A->B fifo.  All A can do
    is make sure that it doesn't deadlock trying to send a message to
    B if B happens to also be trying to send a message to A.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Kernel mailing list