On Feb 7, 2008 2:11 AM, Matthew Dillon <[EMAIL PROTECTED]> wrote: > > :Hi all, > : > :In tcp_timer_2msl() we need to dispatch tcp_close() to the correct CPU > :instead of calling it directly: > :http://leaf.dragonflybsd.org/~sephe/tcp_timer.c.diff > : > :Best Regards, > :sephe > > It should already be on the correct cpu since the callout API is > all cpu localized. The only other entry point is via the pru_* > dispatch but I'm pretty sure that is cpu localized via > kern/uipc_msg.c. > > If you haven't already, I recommend we assert that it is on the > correct cpu rather then route it to the correct cpu (which it > should already be on).
If I added code in tcp_timer_before tcp_close() to printf mycpuid and tp->tt_cpu, I got 1 for mycpuid and 0 for tp->tt_cpu. > > However, even though it will be on the correct cpu there could be > a threading issue... it won't be in the same thread as the tcp > protocol thread. The threads are not preemptive but the could > still be a problem. Umm, yeah. Best Regards, sephe -- Live Free or Die
