Hello All,

I have been playing with ULE in 8.0 and while staring at tdq_notify noticed an 
interesting (and what seems like a typo) problem.
The intention of the function is obvious, send an IPI to notify the remote CPU 
of some new piece of work. In the case where there is no IPI currently pending 
on the target CPU and this thread should be preempting what's running there, 
the code checks in td (passed in as a parameter) is the IDLE thread 
(TDF_IDLETD). If so, it checks the state and sees if idle is RUNNING and if so 
figures it will notice this new work and we don't really need to send an 
expensive IPI. However, why would td (parameter) ever be the IDLE thread? It 
almost seems like this check will always fail and we end up sending a hard IPI 
to the target CPU which works, but may not be needed. May be we wanted to use 
PCPU->curthread instead of td?

Thanks
Ravi
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to