im using register based IPC operation to transfer string of more than two double word. (32 bit x 2). how IPC handle this? it's the register copy is loop twice to transfer the data or fiasco automatically copy that data to memory and send to the receiver? -saufy --- l4-hackers-request@os.inf.tu-dresden.de wrote:
Send l4-hackers mailing list submissions to l4-hackers@os.inf.tu-dresden.de
To subscribe or unsubscribe via the World Wide Web, visit
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
or, via email, send a message with subject or body 'help' to l4-hackers-request@os.inf.tu-dresden.de
You can reach the person managing the list at l4-hackers-owner@os.inf.tu-dresden.de
When replying, please edit your Subject line so it is more specific than "Re: Contents of l4-hackers digest..."
Today's Topics:
1. Re: Failed to create a new task (Adam Lackorzynski) 2. Re: porting L4linux on minix3. (Adam Lackorzynski) 3. Re: Compiling Fiasco UX problems under Fedora 8 (Adam Lackorzynski) 4. Re: Compiling Fiasco UX problems under Fedora 8 (Olivier Landemarre)
----------------------------------------------------------------------
Message: 1 Date: Sun, 16 Mar 2008 22:37:39 +0100 From: Adam Lackorzynski <adam@os.inf.tu-dresden.de> Subject: Re: Failed to create a new task To: l4-hackers@os.inf.tu-dresden.de Message-ID: <20080316213739.GB5636@os.inf.tu-dresden.de> Content-Type: text/plain; charset=iso-8859-1
Hi,
Here's a diff of your program against a version that works, with comments:
--- x.c 2008-03-16 22:30:26.000000000 +0100 +++ x.c 2008-03-16 22:30:26.000000000 +0100 @@ -3,6 +3,7 @@ #include <l4/sys/ipc.h> #include <l4/rmgr/librmgr.h> #include <l4/sigma0/sigma0.h> +#include <l4/util/util.h>
#include <stdio.h>
@@ -41,14 +42,13 @@ l4_addr_t map_area = 0x60000000; l4_addr_t base; l4_umword_t rcv_fpage; - l4_umword_t snd_fpage;
res = l4_ipc_call(SIGMA0_ID, // thread id L4_IPC_SHORT_MSG, // send descriptor SIGMA0_REQ_FPAGE_ANY, // snd_dword0 - snd_fpage, // snd_dword1 + l4_fpage(0, L4_LOG2_PAGESIZE, 0, 0).fpage, // snd_dword1 L4_IPC_MAPMSG(map_area, L4_WHOLE_ADDRESS_SPACE),// rcv_desc - base, // *rcv_dword0 + &base, // *rcv_dword0 &rcv_fpage, // *rcv_dword1 timeout, &result);
Please fix compiler warnings, gcc is not issueing them just for fun. You've been giving an uninitialized value as an address to l4_ipc_call, so no wonder strange things happen.
@@ -75,26 +75,17 @@ enter_kdebug("FAILED in l4_ipc_wait: %d\n"); }
+ while(1) { l4_umword_t fault_addr = rcv_dword0 &~ 0x00000003; //rcv_dword0 & 0xFFFFFFFC
// mask lower bits for (write/grant) flags? l4_umword_t rw_addr = fault_addr | 0x00000002; // mask the 2 nd lower bits to set write flags
- while(1) { - - l4_snd_fpage_t fpage; - - fpage.snd_base = rw_addr; // do wee need to left shift the address??? - - //we can also use the function l4_fpage(address, size, write, grant) - fpage.fpage.fp.grant = 0; - fpage.fpage.fp.write = 1; - fpage.fpage.fp.page = rw_addr; - fpage.fpage.fp.size = L4_LOG2_PAGESIZE; //12 + l4_touch_rw((void *)rw_addr, 1);
Just to make sure the memory is really available.
res = l4_ipc_reply_and_wait(src_id, //dest_id
L4_IPC_SHORT_FPAGE, //send descriptor - fpage.snd_base, //snd_dword0 - fpage.fpage.fpage, //snd_dword1 - might change later to .fp + rw_addr & L4_PAGEMASK, //snd_dword0 + l4_fpage(rw_addr & L4_PAGEMASK, L4_LOG2_PAGESIZE, L4_FPAGE_RW, L4_FPAGE_MAP).fpage,
&src_id, //src_id
L4_IPC_SHORT_MSG, //rcv descriptor
&rcv_dword0, //rcv_dword0
I just aggregated the l4_fpage to the one line, more compact.
Adam -- Adam adam@os.inf.tu-dresden.de Lackorzynski http://os.inf.tu-dresden.de/~adam/
------------------------------
Message: 2 Date: Sun, 16 Mar 2008 22:54:59 +0100 From: Adam Lackorzynski <adam@os.inf.tu-dresden.de> Subject: Re: porting L4linux on minix3. To: l4-hackers@os.inf.tu-dresden.de Message-ID: <20080316215459.GC5636@os.inf.tu-dresden.de> Content-Type: text/plain; charset=iso-8859-1
On Thu Mar 13, 2008 at 11:26:52 +0530, Pravin wrote:
Adam Lackorzynski <adam@os.inf.tu-dresden.de> wrote:
Hi,
On Mon Mar 10, 2008 at 19:52:53 +0530, Pravin wrote:
I wanted to ask a question regarding the procedure followed in porting linux on L4 (L4Linux). I am exploring the possibility of porting Linux on Minix3 on similar lines.
I'd find it more interesting to see Minix on L4. Well, I had not considered that possibility much yet. I wanted to port Linux on minix to see if minix can work as a virtualizer I am not very clear about the advantages of porting minix of L4, can you put more light on it ?
I think that L4 is much more of a virtualizer than minix but that's just my opinion.
=== message truncated === ___________________________________________________________ Rise to the challenge for Sport Relief with Yahoo! For Good http://uk.promotions.yahoo.com/forgood/