IRQ request from server to client and server.loop()

cem akpolat akpolatcem at gmail.com
Fri Dec 20 11:57:48 CET 2013


On 19 Dec 2013, at 23:55, Adam Lackorzynski <adam at os.inf.tu-dresden.de> wrote:

> Hi,
Hi Adam,

> 
> On Thu Dec 19, 2013 at 02:03:33 +0100, cem akpolat wrote:
>> On 19 Dec 2013, at 01:04, cem akpolat <akpolatcem at gmail.com> wrote:
>>> On 19 Dec 2013, at 00:36, Adam Lackorzynski <adam at os.inf.tu-dresden.de> wrote:
>>>> On Wed Dec 18, 2013 at 12:08:39 +0100, cem akpolat wrote:
>>>>> I am quite new to the microkernel concept and I am trying to somehow
>>>>> build an IRQ mechanism between client and server. There are two
>>>>> questions that I want to ask:
>>>>> 
>>>>> 1- Is it possible to receive an IRQ message being sent by Server on
>>>>> the client and handle it? I tried to apply that on the shared_ds
>>>>> examples. However what I see is the IRQ registration could be done
>>>>> only on the server side. How can a client, in a shared memory
>>>>> case,receive an IRQ request from server and how can a server send an
>>>>> IRQ request (in other words trigger an IRQ) to the client.
>>>> 
>>>> For something such as shared memory, typically two IRQs are used, one
>>>> for each direction. So both sides can trigger the other and also receive
>>>> notifications.
>> 
>> I have forgotten to mention on your explanation, you mean actually
>> that I should also use a server_object on the client side for
>> receiving IRQ.
>> 
>>> This is actually the point that I have attempted to figure out until
>>> now. We see an example for server side for the registration of IRQ
>>> object.  However there is no such a thing on the client side. If
>>> there is, I couldn’t find it which means that I have to keep reading
>>> the code.  The simple question is actually how we can listen IRQ
>>> request on the cline side, especially in which source code should I
>>> search the response?
> 
> Shared memory is typically between partners of the same type, so both
> typically have, abstractly, some event reception facility. Contrary for
> a typical client+server setup, the server does not request anything from
> the client.
> Now you could use a predefined server-loop for implementing the shared
> memory but you might also want to look at the shmc library
> (+ examples/libs/shmc) which wraps shared memory handling for easier
> use. Other location to look at could be the l4shmnet driver in L4Linux
> that implements network via shared memory.


I habe already tried to run the example locating under examples/lib/shmc, however, somehow the compiled code could’n be loaded by ned. It is printed out
Ned: loading file: ‘rom/shmc.lua’ and stays there. I have thought that it might be possible that I don’t give the right parameter in the lua script, but there is actually one parameter to given is the name of the compiled file which is “rom/ex_shmc”. Should I add some other parameters or the problem could be related to other things?

> 
>>>>> 2- How can we remove or disable the server.loop mechanism? What is the
>>>>> role of this function?
>>>> 
>>>> This function implements the receiving part of a server and dispatches
>>>> incoming messages into the server functions that you're probably seen in
>>>> the examples. If you do not want to use that server-loop functionality,
>>>> for example, because it does not fit your needs, you just do something
>>>> different replacing the server.loop() call. Is that your intention?
>>>> 
>>> 
>>> I have seen the loop code and its working mechanism as well as have
>>> noticed how to manipulate it. Honestly, the code is in a
>>> considerable manner huge and it is quite easy to muddle the whole
>>> thing. Probably, I would change this server loop according to my
>>> conditions. 
> 
> It's built with some hooks that can be used to adapt it to specific
> requirements if wanted.
> 
> 
> 
> Adam
> -- 
> Adam                 adam at os.inf.tu-dresden.de
>  Lackorzynski         http://os.inf.tu-dresden.de/~adam/





More information about the l4-hackers mailing list