On Wed Jun 04, 2014 at 11:48:44 -0400, Yuxin Ren wrote:
Thank you for your reply. But I think you misunderstand my questions.
First, my question is whether there is a lock. Are you sure there is no lock for sender_list? I think the data has to be manipulated by multiple context as we can send to the same receiver at the same time in different cores. Of course there may be not lock even for multicore, but I do not think only disable interrupt is enough. If there is no lock, I want to know how they do cross core synchronization without locks.
There's no lock as the list is only changed in the receivers context.
Second, IPI operations are useful for me. But I also want to know the code on IPC path to use IPI. Can you tell me where is the code on IPC path to invoke IPI operations?
Please look for Ipi::send() calls in context.cpp and thread.cpp. However, IPC uses a "remote request" functionality which in turn does use IPIs.
Adam