Hi all,
I think the solution to the communication of an application on l4linux with an application on l4re would be to implement an ipc stream in the character device module in the l4linux kernel to communicate with the IPC stream on l4re application. the Problem now is l4linux modules are in C and the l4re application is in C++, is this a good idea to start searching in it or its a dead end and maybe someone would have a better idea to work on ?
Ahmed Makkawi
On Tue Mar 08, 2016 at 17:05:05 +0100, Ahmed Makkawi wrote:
I think the solution to the communication of an application on l4linux with an application on l4re would be to implement an ipc stream in the character device module in the l4linux kernel to communicate with the IPC stream on l4re application. the Problem now is l4linux modules are in C and the l4re application is in C++, is this a good idea to start searching in it or its a dead end and maybe someone would have a better idea to work on ?
That's one way of doing it, and yes, one needs to bridge from the Linux driver to the L4Re world. There are several examples in L4Linux where Linux drivers use L4 IPC to communicate with L4Re services. Most L4Re services also have a C interface, exactly for the reason that they can be used by C code. Doing such a C variant is reasonably easy, look for example in pkg/l4re-core/l4re_c for how it is done. For Linux drivers, any under drivers/ directory with 'l4' in the file name should provide insights how it is used.
Adam
Am 2016-03-10 00:36, schrieb Adam Lackorzynski:
On Tue Mar 08, 2016 at 17:05:05 +0100, Ahmed Makkawi wrote:
I think the solution to the communication of an application on l4linux with an application on l4re would be to implement an ipc stream in the character device module in the l4linux kernel to communicate with the IPC stream on l4re application. the Problem now is l4linux modules are in C and the l4re application is in C++, is this a good idea to start searching in it or its a dead end and maybe someone would have a better idea to work on ?
That's one way of doing it, and yes, one needs to bridge from the Linux driver to the L4Re world. There are several examples in L4Linux where Linux drivers use L4 IPC to communicate with L4Re services. Most L4Re services also have a C interface, exactly for the reason that they can be used by C code. Doing such a C variant is reasonably easy, look for example in pkg/l4re-core/l4re_c for how it is done. For Linux drivers, any under drivers/ directory with 'l4' in the file name should provide insights how it is used.
Adam
Hi Adam,
i struggling on the same problem. And i guess we'd prefer a clean C solution instead of mixing C++ in the Linux driver.
As mentioned in an earlier post [1] i looked at several IPC examples in src/l4/pkg/examples written in C. I tried to adopt this, but failed (see earlier post).
Is it even possible to use that L4re-App IPC C-Code in a L4Linux driver?
You also mentioned L4XV_FN* wrappers. What are they for and when to use them?
Anyway, i've looked up all l4linux/drivers with 'l4' in its name but, haven't found a proper example. Can you please point a concrete example, where an L4Linux-Driver acts as a Client to an L4re-Server?
Thank you,
ba_f
[1] http://os.inf.tu-dresden.de/pipermail/l4-hackers/2016/007767.html
Hi,
On 03/15/2016 05:20 PM, ba_f wrote:
Am 2016-03-10 00:36, schrieb Adam Lackorzynski:
On Tue Mar 08, 2016 at 17:05:05 +0100, Ahmed Makkawi wrote:
I think the solution to the communication of an application on l4linux with an application on l4re would be to implement an ipc stream in the character device module in the l4linux kernel to communicate with the IPC stream on l4re application. the Problem now is l4linux modules are in C and the l4re application is in C++, is this a good idea to start searching in it or its a dead end and maybe someone would have a better idea to work on ?
That's one way of doing it, and yes, one needs to bridge from the Linux driver to the L4Re world. There are several examples in L4Linux where Linux drivers use L4 IPC to communicate with L4Re services. Most L4Re services also have a C interface, exactly for the reason that they can be used by C code. Doing such a C variant is reasonably easy, look for example in pkg/l4re-core/l4re_c for how it is done. For Linux drivers, any under drivers/ directory with 'l4' in the file name should provide insights how it is used.
Adam
Hi Adam,
i struggling on the same problem. And i guess we'd prefer a clean C solution instead of mixing C++ in the Linux driver.
As mentioned in an earlier post [1] i looked at several IPC examples in src/l4/pkg/examples written in C. I tried to adopt this, but failed (see earlier post).
Is it even possible to use that L4re-App IPC C-Code in a L4Linux driver?
Yes. See for example drivers/tty/serial/l4ser.c and the usage of l4_vcon_write
You also mentioned L4XV_FN* wrappers. What are they for and when to use them?
This macro wraps a semaphore around the IPC call. Otherwise multiple concurrent function calls may mess up the UTCB.
Anyway, i've looked up all l4linux/drivers with 'l4' in its name but, haven't found a proper example. Can you please point a concrete example, where an L4Linux-Driver acts as a Client to an L4re-Server?
l4ser.c and l4fb.c. Both drivers use L4Re APIs to communicate with L4Re services.
Matthias.
l4-hackers@os.inf.tu-dresden.de