看板 DFBSD_kernel 關於我們 聯絡資訊
: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@backplane.com>