Hi,
I am back with my problem with UTCB IPC. To sum up the context :
I use pure l4env applications. Here is the scenario between my server
and my client :
1. client makes an UTCB IPC to manager. Manager does an
l4rm_area_reserve, creates a rcv_fpage, creates worker and sends back
worker thread id to client.
2. client allocates memory and associated flexpage and sends it to server.
3. UTCB IPC is sent to worker with 3 parameters :
- on client side : utcb->values=0xbff00200: arg1=0x2 arg2=…
[View More]0x1 arg3=0x6
- on server side : utcb->values=0xbff00200: arg1=0x241401 arg2=0x0
arg3=0x7069776c
It seems that 0xbff00200 is not mapped on the same memory on client
and server side. As there is no problem for first IPC (utcb->values is
also 0xbff00200), is there any potential problem with flexpage ?
As utcb->values is still the same, what happens if several threads try
to make UTCB IPC ?
Another question : when I link my application with liblogserver.a, I
have strange logs :
.rm.sem.mainMain function returned.
It seems that .rm .sem and .main are added by l4env, but I didn't find where.
Regards
Marc
[View Less]
Hello
I have problems in understanding short ipc and direct long IPC. Just want to
know that is it implementing register short IPC with direct long IPC
implementation is the same. Unlike indirect long IPC, we must use the
message header (strdope, send dope and size dope) . Do i must also use the
message structure for implementing direct long ipc or i just use the same
implementation on short register message (L4_IPC_SHORT_MSG)? Im kinda
confuse and unsure of this issue due to unproper theory …
[View More]understanding. Like
indirect IPC, i can understand that the memory that saves the message is
only being reffered by both threads that wish to communicate by referring
the memory address of the message. Unlike direct long IPC message, what I do
understand is that each thread has a copy of the message at the threads
respective user space. However, I dont know how to copy the message from one
thread user space to the other threads user space using IPC call. But if the
implementation of the direct long IPC is as the same as the register
message(L4_IPC_SHORT_MSG), then i think I can imagine the flow. Thank you
and your help is highly appreciated.
--
View this message in context: http://www.nabble.com/direct-IPC-VS-Short-IPC-tp16247387p16247387.html
Sent from the L4 mailing list archive at Nabble.com.
[View Less]
hi all, i still failed to load another task using run-l4
here is my later config file
#hello.cfg
verbose 0
modpath "/boot/l4linux_2"
task "hello" ""
i alos tried
#hello.cfg
verbose 0
modpath "(hd0,5)/boot/l4linux_2"
task "hello" ""
for your info my boot partition is in extended partition.
at l4linux terminal
i run this command:
./run-l4 --fprov=BMODFS "hello.cfg"
and
./run-l4 --fprov "BMODFS" "hello.cfg"
and i also put hello in menu.lst.
and it still failed to load hello
as an …
[View More]alternative can u guys help me give an example of working:
menu.lst
config file to pass to bmodfs
command line to execute in l4linux
----- Original Message ----
> From: Adam Lackorzynski <adam(a)os.inf.tu-dresden.de>
> To: l4-hackers(a)os.inf.tu-dresden.de
> Sent: Wednesday, March 12, 2008 7:59:59 PM
> Subject: Re: run-l4 - to start another task
>
>
> On Tue Mar 11, 2008 at 20:55:51 -0700, ahmad kamal wrote:
> > i've been trying to load another l4 task using run-l4 in l4linux, but i've got
> error
> >
> > the error is -8(cannot a find module)
> >
> > here is my conf file
> >
> > #launch.conf
> >
> > verbose 0
> > modpath "(hd0,2)/boot/l4app"
> >
> >
> > task "hello"
> >
> >
> > and here is the cmd i run:
> >
> > run-l4 --fprov "BMODFS" "(hd0,2)/boot/l4app/launch.conf"
>
> When using bmodfs you do not need to specify a path.
>
> > here are few question:
> >
> > do i need to load run-l4 during boot time, in other words do i need to define
> it in menu.lst?
>
> No, run-l4 is a Linux program, it only works in L4Linux.
>
> > do i need to load the task i would like to call using run-l4 during boot time?
>
> The binary needs to be available at the file provider you're using. So
> when using bmodfs the binary needs to be loaded in menu.lst as a data
> module for bmodfs (basically as usual).
>
>
> Adam
> --
> Adam adam(a)os.inf.tu-dresden.de
> Lackorzynski http://os.inf.tu-dresden.de/~adam/
>
> _______________________________________________
> l4-hackers mailing list
> l4-hackers(a)os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping
[View Less]
hi,
the problem is solved, thanks everybody :)
----- Original Message ----
> From: Adam Lackorzynski <adam(a)os.inf.tu-dresden.de>
> To: l4-hackers(a)os.inf.tu-dresden.de
> Sent: Tuesday, March 25, 2008 1:08:10 AM
> Subject: Re: Failed to create a new task
>
>
> On Fri Mar 21, 2008 at 02:06:49 -0700, ahmad kamal wrote:
> > one more things, after task creation succeed, i'm a bit curious, why
> > it doesn't run the new task, it runs the first thread n …
[View More]pager only.
>
> So, do you mind to post your updated program again so that I can check.
>
>
>
> Adam
> --
> Adam adam(a)os.inf.tu-dresden.de
> Lackorzynski http://os.inf.tu-dresden.de/~adam/
>
> _______________________________________________
> l4-hackers mailing list
> l4-hackers(a)os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
[View Less]
good day
Im totally newbie to l4, but my aim is to develop source level debugger for
our system built on top of L4. So the procedure for source level debugger is
common and may be presented in following steps:
1) Cause undef exception from user task (using undef instruction)
2) Catch it by undef exception handler
3) Save CPU registers
4) Suspend running thread. Suspension must be performed by my code - not by
l4 system code.
5) Continue execution with next scheduled thread
But untill now …
[View More]i have no ideas how to suspend thead by my self. I even cant
find l4 code responsible for thread suspension.
Does anyone knows where can i find suspention procedure in l4 code?
Probably someone has code snippets for such kind of actions?
thanks in advance
--
View this message in context: http://www.nabble.com/Debugger-on-top-of-L4-tp16180942p16180942.html
Sent from the L4 mailing list archive at Nabble.com.
[View Less]
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(a)os.inf.tu-dresden.de wrote:
> Send l4-hackers mailing list submissions to
> l4-hackers(a)os.inf.tu-dresden.de
>
> To subscribe or unsubscribe via the World Wide Web,
> visit
>
>
http://…
[View More]os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
> or, via email, send a message with subject or body
> 'help' to
> l4-hackers-request(a)os.inf.tu-dresden.de
>
> You can reach the person managing the list at
> l4-hackers-owner(a)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(a)os.inf.tu-dresden.de>
> Subject: Re: Failed to create a new task
> To: l4-hackers(a)os.inf.tu-dresden.de
> Message-ID:
> <20080316213739.GB5636(a)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(a)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(a)os.inf.tu-dresden.de>
> Subject: Re: porting L4linux on minix3.
> To: l4-hackers(a)os.inf.tu-dresden.de
> Message-ID:
> <20080316215459.GC5636(a)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(a)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/
[View Less]
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;
…
[View More]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.
one more things, after task creation succeed, i'm a bit curious, why it doesn't run the new task, it runs the first thread n pager only.
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
[View Less]
----- Original Message ----
From: Adam Lackorzynski <adam(a)os.inf.tu-dresden.de>
To: l4-hackers(a)os.inf.tu-dresden.de
Sent: Monday, March 17, 2008 5:37:39 AM
Subject: Re: Failed to create a new task
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…
[View More]>
+#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.
>> thanks for the tips.
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping
[View Less]
Hello
Currently im studying IPC for L4/fiasco. I opened the exercise solution from
dresden and try to study the coding and its flow. So far, i manage to
understand but there is one part that im not certain which is the
L4_IPC_DOPE(). As stated in the exercise solution, the L4_IPC_DOPE is
initiated as L4_IPC_DOPE(0,1) which is assigned to the l4_msgdope_t
structure:-
typedef struct
{
l4_msgdope_t size_dope;
}message_t; <---there are other variables initialize in this structure but i
…
[View More]just shorten it to the issue.
message_t m;
m->size_dope = L4_IPC_DOPE(0,1);
I would like to know, what does this call (L4_IPC_DOPE) do and which file
does this function is located. Is it in types.h? Hope anyone can assist me
since im new in this field. Thanks.
--
View this message in context: http://www.nabble.com/L4_IPC_DOPE%28%29-understanding-tp16091914p16091914.h…
Sent from the L4 mailing list archive at Nabble.com.
[View Less]