Re: Question about cross core IPC

Adam Lackorzynski <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hi,

On Sun Jun 01, 2014 at 05:15:06 -0800, Yuxin Ren wrote:
> I am learning the IPC code in the Fiasco kernel. I have some questions here.
> 
> If the receiver is not ready, we will add the sender to the sender_list.
> But I did find any lock to protect the sender_list. So if two threads at
> different cores try to add themselves to the sender_list at the same time,
> how can we guarantee the we are safe to do so?

So if there's no lock then the data structure will only ever be
manipulated by a single context (and preemption disabled as required).

> When sender and receiver are at different cores, we have to use IPI to
> communicate. Where is the code on IPC path to use IPI? I imagine the code
> around IPI should be complex, so it is great if someone can tell me the
> logic about it, especially about how we protect data structures, using
> locks or any other lock-free algorithm.

Ipi is the base class that implements IPI functionality. So for example
see for Ipi::send in context.cpp. Around that are functions that allow
to call functions on remote cores etc, also in context.cpp.



Adam
-- 
Adam                 [email protected]
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.