[Barrelfish-users] requesting for Help

Simon Gerber simon.gerber at inf.ethz.ch
Mon Jun 4 09:06:53 CEST 2018


Hi Ben,

I've put answers to your questions inline below.

On 02.06.2018 16:16, ben eslami wrote:
> Hi again.
> I used xmpl-msg. Here is my procedures:
> 1- ../hake/hake.sh -s .. -a x86_64
> 2- make x86_64/sbin/examples/xmpl-msg
> but in the second stage, I encounter this error which is showed in attachment.

You can fix the compilation error by changing the signature of rx_msg_string to

static void rx_msg_string(struct xmplmsg_binding *b, const char *str)


> 
> If someone knows how to fix this, I would appreciate in advance.
> 
> On Sat, Jun 2, 2018 at 3:46 PM, ben eslami <beneslami72 at gmail.com <mailto:beneslami72 at gmail.com>> wrote:
> 
>         Hi all,
>     I have decided to run simple Hello World program using IDC. 
>     I follow the document 'TN-018-PracticalGuide' to implement the simple scenario. but I have some questions and one problem that I face every time I do procedures:
>     ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
>     Question 1:First of all, I've created a folder in usr/ directory called myapp. Inside of it, I have some C files and a Hakefile such that :
>     myapp.c -> main of my program
>     start_server.c -> server code
>     start_client.c -> client code
>     Hakefile
>     and menu.lst.
>     Should I type all these C codes just in one file?

I'm not sure what you mean by this question. You should structure your application in whatever way you would usually structure a C application. The simplest case is show-cased in xmpl-msg, where you have a single C file which contains all the application code.  In the Hakefile you need to have a "build application" block which refers to all the C files that are necessary to build the application. 

>     -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>     Question 2: I have to include some files to my codes as the document says  like `barrelfish.h' and 'nameservice_client.h`. As my codes are in usr/myapp/ directory, should I include these headers like this 
>     #include <../../include/barrelfish/barrelfish.h>
>     #include <../../include/barrelfish/nameservice_client.h>>     

The build system (hake) adds a number of include paths to each call to gcc, so you can simply use
#include <barrelfish/barrelfish.h>
#include <barrelfish/nameservice_client.h>

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>     Problem: When I complete all the documents instructions, I run `../hake/hake.sh -s .. -a x86_64' in build directory, but I see outputs like this:
>     Makefile:7127: x86_64/usr/myapp/_for_app_myapp/myapp_flounder_bindings.o.depend: No such file or directory
>     Makefiel:7221: x86_64/usr/myapp/_for_app_myapp/start_client.o.depend: No such file or directory 
>     Makefiel:7238: x86_64/usr/myapp/_for_app_myapp/start_server.o.depend: No such file or directory  
>     make:*** No rule to make target 'x86_64/include/if/myapp_defs.h', needed by 'x86_64/usr/myapp/_for_app_myapp/start_server.o.depend'. stop.
>     ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
> 
> 
> 
> 
>     I assume myapp_defs.h is not created when I define an interface called hello.if and append "hello"  in if/Hakefile. 
>     I would be happy if you could help me.

If you have an interface called hello.if and append hello in if/Hakefile, "hello_defs.h" will be generated. That's the file you'll have to include to use the interface specified in hello.if. Note that you'll also have to add flounderBindings = [ "hello" ] in your application's Hakefile (cf. usr/examples/xmpl-msg/Hakefile).

Best,
-- Simon

> 
>     Thank you 
> 
>     On Wed, Apr 4, 2018 at 11:21 AM, Reto Achermann <reto.achermann at inf.ethz.ch <mailto:reto.achermann at inf.ethz.ch>> wrote:
> 
>         Dear Ben,
> 
>         please always write to the list. Answers inline below.
> 
>         -- Reto
> 
>         On 04/03/2018 11:33 AM, ben eslami wrote:
> 
>                Dear Reto
>             I am so sorry to email you directly, but I've stuck in a bad situation.
>             I understand what you said about running an app on Barrelfish, but there are still some problems.
> 
>             1- I wrote a Hakefile in 'usr/example/xmpl-hello/Hakefile' like this:
>             [ build application {target = {"examples/xmpl-hello", cFiles = ["hello.c"] } }
> 
> 
>         seems good to me.
> 
> 
>             2- I need to tell Hake to include this when building the Makefile. It means I have to add the created Hakefile to 'platforms/Hakefile' in order to automatically build the app. So the problem is where should I put the address of the created Hakefile in 'platform/Hakefile' ? There are several fields and I can see the address of the created Hakefile in field 'modules_xmpl'. So I assume there is no need to add anything in 'platform/Hakefile'. and run '../hake/hake.sh -s .. -a x86_64' in build dir.
> 
> 
>         Yes, you are right, if you use examples/xmpl-hello, this is already added in modules_xmpl. The command for runnin hake is fine too. Yous should be able to do make x86_64/sbin/examples/xmpl-hello now.
> 
>         In general, for new modules, you can add just them to 'modules_x86_64'. (for x86_64)
> 
>             3- Weh I run '../hake/hake.sh -s .. -a x86_64' , there is a Makefile appeared in build directory. I can see the path './x86_64/usr/examples/xmpl-hello/_for_app_examples/xmpl-hello/hello.o' and other similar paths for hello.s and hello.o.depend inside Makefile. So I assume the app is ready to be built. Now I run 'make -j 4 X86_64_Basic'
> 
> 
>         Not exactly, when you look at the platform directive in the platforms/Hakefile, you see that the 'modules_xmpl' are part of the X86_64_Full. So you need to run make X86_64_Full in order to build the examples.
> 
> 
> 
>             4-Now in this stage, I look for built/platform/x86/menu.lst.x86_64, but there is nothing there until I run 'make qemu_x86_64'. I realized that menu.lst is built after running 'make qemu_x86_64'. So I open 'built/platform/x86/menu.lst.x86_64' and add 'module  >
> 
>         /x86_64/usr/examples/xmpl-hello/_for_app_examples/xmpl-hello/hello.o.depend'.
> 
>         No, you need to add the targets as defined in the hake file.
> 
>         module /x86_64/sbin/examples/xmpl-hello
> 
>         Also note, that make qemu_x86_64 will only build the modules defined in modules_x86_64 and modules_generic.
> 
> 
>             I understand your instructions as like above but I got nothing. I was wondering if you could explain in more detail please.
> 
>             Regards,
>             Ben
> 
> 
>             On Mon, Apr 2, 2018 at 11:44 PM, Reto Achermann <reto.achermann at inf.ethz.ch <mailto:reto.achermann at inf.ethz.ch> <mailto:reto.achermann at inf.ethz.ch <mailto:reto.achermann at inf.ethz.ch>>> wrote:
> 
>                 Dear Ben,
> 
>                 When you like run something on Barrelfish a few things need to be in
>                 place
> 
>                 1) You need to write a Hakefile, which contains the target to be
>                 built and how it is built.
> 
>                 2) Then you need to tell Hake to include this when building the
>                 Makefile, This is done by re-running hake. After this step you can
>                 actually type 'make x86_64/sbin/<target>' assuming you want to build
>                 it for x86.
> 
>                 2) In order to have it build automatically when you type 'make
>                 X86_64_Basic' or 'make qemu_x86_64' you need to add it to the list
>                 of targets in platforms/Hakefile.
> 
>                 3) You need to tell grub or qemu to load your binary. For this you
>                 will need to add it to the menu.lst used by grub or qemu. In case of
>                 qemu, its located in $build/platforms/x86/ (again for x86 platforms)
> 
>                 4) then your program will either run directly after Barrelfish has
>                 booted or you can type <target> in Fish.
> 
>                 -- Reto
> 
> 
> 
>                 On 02/04/18 18:58, ben eslami wrote:
> 
>                     There is some examples in usr/examples/. As a first step, I want
>                     to run xmpl-hello.
>                     -what I should do is first I should introduce xmpl-hello to
>                     Hakefile in platform/Hakefile, but I can see "modules_xmpl" that
>                     contains all of examples including xmpl-hello. So I assume there
>                     is no need to add xmpl-hello to the Hakefile. Am I right or not?
>                     - The second thing I should do is to add "module
>                     build/x86_64/sbin/examples/xmpl-hello" to
>                     build/platform/x86/menu.lst.x86_64, but there is nothing in
>                     build/x86_64/sbin/examples. Should I copy examples from
>                     usr/examples to build/x86_64/sbin/examples ??
> 
>                     Could anyone pleeeaase help me ?
> 
>                     On Mon, Apr 2, 2018 at 4:13 PM, ben eslami
>                     <beneslami72 at gmail.com <mailto:beneslami72 at gmail.com> <mailto:beneslami72 at gmail.com <mailto:beneslami72 at gmail.com>>
>                     <mailto:beneslami72 at gmail.com <mailto:beneslami72 at gmail.com> <mailto:beneslami72 at gmail.com <mailto:beneslami72 at gmail.com>>>>
>                     wrote:
> 
>                          Hi
>                          Can anyone please help me to run "hello world" in BarrelFish?
>                          I think the tutorial is not up to date.
> 
>                          Thanks
> 
>                          On Sat, Mar 17, 2018 at 6:13 PM, ben eslami
>                     <beneslami72 at gmail.com <mailto:beneslami72 at gmail.com> <mailto:beneslami72 at gmail.com <mailto:beneslami72 at gmail.com>>
>                          <mailto:beneslami72 at gmail.com <mailto:beneslami72 at gmail.com>
>                     <mailto:beneslami72 at gmail.com <mailto:beneslami72 at gmail.com>>>> wrote:
> 
>                              -in the file platform/Hakefile, there are some
>                     sections. In section of
>                              modules_common, I should add the following line
>                              "/sbin/examples/xmpl-hello", but in section
>                     modules_xmpl, the mentioned
>                              line exists. Is this correct or I should add in the
>                     sections of
>                              "modules_common" and "modules_x86_64"
> 
>                              -in the file build/platform/x86/menu.lst.x86_64, I
>                     added the following
>                              line " module /x86_64/sbin/examples/xmpl-hello in the
>                     General user
>                              domain section.
> 
>                              "../hake/hake.sh -s .. -a x86_64" and "make -j 4
>                     X86_64_Basic" are run
>                              without error. But "make qemu_x86_64" encounters this
>                     error:
>                              Failed to open file 'x86_64/sbin/examples/xmpl-hello
> 
>                              what should I do now ?
> 
>                              On Sat, Mar 17, 2018 at 3:00 PM, Joel Busch
>                     <buschjo at student.ethz.ch <mailto:buschjo at student.ethz.ch> <mailto:buschjo at student.ethz.ch <mailto:buschjo at student.ethz.ch>>
>                              <mailto:buschjo at student.ethz.ch <mailto:buschjo at student.ethz.ch>
> 
>                     <mailto:buschjo at student.ethz.ch <mailto:buschjo at student.ethz.ch>>>> wrote:
> 
>                                  Hello Ben
> 
>                                  This is actually one I can help with I think,
>                     because I ran into
>                                  some of the same roadblocks.
> 
>                     symbolic_targets.mk <http://symbolic_targets.mk> <http://symbolic_targets.mk>
>                     <http://symbolic_targets.mk> does no longer
>                                  exists, instead you can add modules to the file
>                     platforms/Hakefile
>                                  there are different sections just make sure you use
>                     the one that's
>                                  generic or the one specific to the architecture you
>                     want to run on.
> 
>                                  The menu.lst is now platform specific and you can
>                     either change the
>                                  one generated during hake in
>                     build/platforms/<arch>/menu.ls <http://menu.ls> <http://menu.ls>
>                                  <http://menu.ls>t.<plat> or the one that is read
>                     during the hake
>                                  process in hake/menu.lst.<plat>, in your case
>                     <arch> is x86 and
>                                  <plat> is x86_64.
> 
>                                  And yes the make target sim doesn't exist anymore
>                     and qemu_x86_64 is
>                                  what you want to use instead.
> 
>                                  Best Regards,
>                                  Joel Busch
> 
> 
>                                  On 17.03.2018 11:10, ben eslami wrote:
> 
>                                      Dear folks,
>                                      -after booting Barrelfish, I tend to run "hello
>                         world". According
>                                      to
>                         "http://wiki.barrelfish.org/Programming_for_Barrelfish <http://wiki.barrelfish.org/Programming_for_Barrelfish>
>                         <http://wiki.barrelfish.org/Programming_for_Barrelfish <http://wiki.barrelfish.org/Programming_for_Barrelfish>>
>                                                 <http://wiki.barrelfish.org/Programming_for_Barrelfish <http://wiki.barrelfish.org/Programming_for_Barrelfish>
>                         <http://wiki.barrelfish.org/Programming_for_Barrelfish <http://wiki.barrelfish.org/Programming_for_Barrelfish>>>",
>                         To get
>                                      Hake to include a target for the hello world
>                         program in the
>                                      generated Makefile, we must first add the
>                         target to the
>                         symbolic_targets.mk <http://symbolic_targets.mk> <http://symbolic_targets.mk>
>                         <http://symbolic_targets.mk> file, located in
>                                      the build directory. But I don't have this
>                         file. should I create
>                                      it first?
> 
>                                      -Suppose I created "symbolic_targets.mk <http://symbolic_targets.mk>
>                         <http://symbolic_targets.mk>
>                                      <http://symbolic_targets.mk>" in build/ , then
>                         I did
>                                      "../hake/hake.sh -s .. -a  x86_64" in build/
>                         directory. After
>                                      this, i run "make -j 8 X86_64_Basic" to compile
>                         Hello World file.
>                                      But fir I should append "module
>                         /x86_64/sbin/examples/xmpl-hello"
>                                      in menu.lst, but I don't see any file named
>                         menu.lst either.
>                                      Should I create this first also ?
> 
>                                      -After all of these, I should run make sim.
>                         Does this mean that I
>                                      should run "make qemu_x86_64?
> 
>                                      Thank you
> 
> 
> 
> 
>                                      _______________________________________________
>                                      Barrelfish-users mailing list
>                         Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>
>                         <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>>
>                                      <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>
>                         <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>>>
>                         https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>                         <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>>
>                                                 <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>                         <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>>>
> 
> 
> 
>                                  _______________________________________________
>                                  Barrelfish-users mailing list
>                     Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>
>                     <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>>
>                                  <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>
>                     <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>>>
>                     https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>                     <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>>
>                                         <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>                     <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>>>
> 
> 
> 
> 
> 
> 
>                     _______________________________________________
>                     Barrelfish-users mailing list
>                     Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>
>                     <mailto:Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>>
>                     https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>                     <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>>
> 
> 
> 
>         -- 
>         Reto Achermann,
>         http://people.inf.ethz.ch/acreto <http://people.inf.ethz.ch/acreto>
> 
> 
> 
> 
> 
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
> 


More information about the Barrelfish-users mailing list