SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
Genode OS Framework
 Programming Environment




         Norman Feske
<norman.feske@genode-labs.com>
Outline



1. Source tree overview

2. Build system

3. Run scripts

4. Inter-process communication

5. Client-server example




                  Genode OS Framework Programming Environment   2
Outline



1. Source tree overview

2. Build system

3. Run scripts

4. Inter-process communication

5. Client-server example




                  Genode OS Framework Programming Environment   3
Get the source code



Code is hosted at GitHub:

 https://github.com/genodelabs/genode

Clone the main repository:

 git clone https://github.com/genodelabs/genode.git

    Contains genuine Genode code only
    3rd-party code not included, must be downloaded




                  Genode OS Framework Programming Environment   4
Repositories




Foster modular code base instead of one big tree

For a given project, only a subset of repositories is relevant
→ Helps to focus attention to relevant parts
→ Clean organization defeats ad-hoc solutions




              Genode OS Framework Programming Environment        5
Repository shadowing



Set of used repositories deïŹned by build directory
→ Selected repositories form one logical source tree
(similar to unionfs)
 REPOSITORIES = <list-of-repo-directories>
Repositories can shadow each other
    target description ïŹles
    library description ïŹles
    include-search directories
Order is REPOSITORIES list is important
    Earlier entries shadow later entries



              Genode OS Framework Programming Environment   6
Repositories shadowing (II)




        Genode OS Framework Programming Environment   7
Repositories in practice




Tweak existing components without breaking existing code

Want to add code? → Simply introduce a new repository
    Can be hosted outside the mainline Genode tree
    Use a revision control system of your choice




             Genode OS Framework Programming Environment   8
Specs




Source repositories → coarse grained modularity
Challenges:
    Multiple kernels
    Multiple hardware platforms
    DiïŹ€erent ïŹ‚avours of implementations
    ifndef-endif yields frustration, messes up test coverage
 Build specs → ïŹne grained modularity




                 Genode OS Framework Programming Environment   9
Specs: Build targets express their needs



Examples:
    SpeciïŹc peripheral (device driver)
    Particular property of CPU architecture if code is not generic
        only 32-bit
        only arm v7a
    Licensing conditions
Example, target.mk ïŹle
             REQUIRES = x86
             ...




                 Genode OS Framework Programming Environment         10
Specs: Build directory deïŹnes build properties




Spec values characterize the build
Example <build-dir>/etc/specs.conf
            SPECS = genode foc_panda
High-level spec values reïŹned to low-level spec values




                  Genode OS Framework Programming Environment   11
Specs: ReïŹnement




       Genode OS Framework Programming Environment   12
Specs: Steering the build process



Traverse <repos>/mk/spec-<value>.mk ïŹles
    Platform-speciïŹc build settings (CFLAGS ...)
    Include more specialized spec-<value>.mk ïŹles


Match target’s REQUIRES against build-dir’s SPECS


Prefer specialized libraries:
<repo>/lib/mk/blit.mk                                         generic library
<repo>/lib/mk/x86 32/blit.mk                               specialized library



             Genode OS Framework Programming Environment                         13
Specs: BeneïŹts




→   No preprocessor-based conïŹguration
→   No artiïŹcial abstractions (architecture, platform, cpu, ...)
→   Easy to extend
→   Easy to conïŹgure




                    Genode OS Framework Programming Environment    14
Anatomy of a repository




Directory   Description
doc/        Documentation, speciïŹc for the repository
etc/        Default conïŹguration of the build process
include/    Globally visible header ïŹles
src/        Source codes and target build descriptions
lib/mk/     Library build descriptions




            Genode OS Framework Programming Environment   15
Repository relationships




        Genode OS Framework Programming Environment   16
Integration of 3rd-party source code




Download and integrate a kernel:

 make -C <genode-dir>/base-nova prepare

Works uniformly for all kernels!




                   Genode OS Framework Programming Environment   17
Integration of 3rd-party source code



Ported applications and libraries reside in libports and ports.
List available 3rd-party libraries:

 make -C libports

Download and integrate a set of libraries:

 make -C libports prepare PKG=’libc freetype’

...a lot to explore




                      Genode OS Framework Programming Environment   18
Outline



1. Source tree overview

2. Build system

3. Run scripts

4. Inter-process communication

5. Client-server example




                  Genode OS Framework Programming Environment   19
Tool chain



Needed because
    C++ support libraries normally require a libc
        We need C++ support
        We don’t want to depend on a libc
    Multi-threading support is OS-speciïŹc
        Linux TLS
    Limit varienty of tool-chain related errors
        Compiler versions
        Linux distributions
→ http://genode.org/download/tool-chain



                  Genode OS Framework Programming Environment   20
Build directory




<build-dir>/etc/build.conf

   DeïŹnes base/ location
   DeïŹnes source repositories to use
    REPOSITORIES = <list-of-repo-dirs>
   Make ïŹ‚ags
    MAKE += -j4




              Genode OS Framework Programming Environment   21
Build directory (II)




<build-dir>/etc/specs.conf

   Included after <repos>/etc/specs.conf
   DeïŹne build characteristics via spec values
    SPECS = genode foc_panda
   Defaults in base-<platform>/etc/specs.conf
   Extend spec values
    SPECS += i915




              Genode OS Framework Programming Environment   22
Build directory (III)




<build-dir>/Makefile
          symlink to
          <genode-dir>/tool/builddir/build.mk
Front end of the build system




                  Genode OS Framework Programming Environment   23
Build directory creation tool




<genode-dir>/tool/create builddir
Creates templates for a variety of supported platforms:

 create_builddir nova_x86_32 BUILD_DIR=/tmp/build

Revisit generated build.conf:
    Enable repositories
    Add make ïŹ‚ags as desired




                  Genode OS Framework Programming Environment   24
Building targets


Single target

 make <rel-dir-to-target>

Example:

 make drivers/atapi

    Looks for target.mk within <repos>/src/drivers/atapi
    Tests REQUIRES agains SPECS
    Builds all libraries the target depends on
    Builds target


                Genode OS Framework Programming Environment   25
Building targets (II)



Tree of targets

 make <rel-dir>

Example:

 make drivers

Builds all targets within <repos>/src/drivers.




                  Genode OS Framework Programming Environment   26
Building targets (III)




List of targets

 make <rel-dir> ...

Example:

 make core init drivers/timer

Builds all targets found in any of the speciïŹc src/ locations




                  Genode OS Framework Programming Environment   27
Outline



1. Source tree overview

2. Build system

3. Run scripts

4. Inter-process communication

5. Client-server example




                  Genode OS Framework Programming Environment   28
Typical work ïŹ‚ow




        Genode OS Framework Programming Environment   29
Run script

build "core init test/printf"
create_boot_directory
install_config {
  <config>
    <parent-provides>
      <service name="LOG"/>
    </parent-provides>
    <default-route>
      <any-service> <parent/> </any-service>
    </default-route>
    <start name="test-printf">
      <resource name="RAM" quantum="1M"/>
    </start>
  </config> }
build_boot_image "core init test-printf"
append qemu_args "-nographic -m 64"
run_genode_until {-1 = -1 = -1} 10

                Genode OS Framework Programming Environment   30
Run script (II)




Located at <repos>/run/<script-name>.run
Executable from within the build directory
 make run/<script-name>




           Genode OS Framework Programming Environment   31
Run script (III)



→ Single ïŹle describes a complete system scenario


→ One run script works across diïŹ€erent kernels


→ Great for bug reports


→ Run script + little work = automated test case



                 Genode OS Framework Programming Environment   32
Outline



1. Source tree overview

2. Build system

3. Run scripts

4. Inter-process communication

5. Client-server example




                  Genode OS Framework Programming Environment   33
Remote procedure calls (RPC)




        Genode OS Framework Programming Environment   34
Remote procedure calls: Classes




        Genode OS Framework Programming Environment   35
Remote procedure calls: New RPC object




        Genode OS Framework Programming Environment   36
Remote procedure calls: Invocation




        Genode OS Framework Programming Environment   37
Shared memory




       Genode OS Framework Programming Environment   38
Asynchronous notiïŹcations




        Genode OS Framework Programming Environment   39
Asynchronous notiïŹcations (II)




        Genode OS Framework Programming Environment   40
Mechanisms combined




RPC + shared memory
→ Synchronous bulk data (transaction)

Signalling + dataspace
→ Asynchronous bulk data (streaming)




            Genode OS Framework Programming Environment   41
Synchronous bulk data transfer




        Genode OS Framework Programming Environment   42
Asynchronous bulk data transfer




        Genode OS Framework Programming Environment   43
Packet stream example




        Genode OS Framework Programming Environment   44
Outline



1. Source tree overview

2. Build system

3. Run scripts

4. Inter-process communication

5. Client-server example




                  Genode OS Framework Programming Environment   45
Scenario overview




        Genode OS Framework Programming Environment   46
Classes overview




        Genode OS Framework Programming Environment   47
Create a new repository



Designated content:

 hello_tutorial
 hello_tutorial/include
 hello_tutorial/include/hello_session
 hello_tutorial/src
 hello_tutorial/src/hello
 hello_tutorial/src/hello/server
 hello_tutorial/src/hello/client




                 Genode OS Framework Programming Environment   48
Server interface




         Genode OS Framework Programming Environment   49
Server interface

#include <session/session.h>
#include <base/rpc.h>

namespace Hello {

    struct Session : public Genode::Session
    {
        static const char *service_name() { return "Hello"; }

         virtual void say_hello() = 0;
         virtual int add(int a, int b) = 0;

         GENODE_RPC(Rpc_say_hello, void, say_hello);
         GENODE_RPC(Rpc_add, int, add, int, int);
         GENODE_RPC_INTERFACE(Rpc_say_hello, Rpc_add);
    };
}

                    Genode OS Framework Programming Environment   50
Server-side interface implementation




        Genode OS Framework Programming Environment   51
Server-side interface implementation


#include <base/printf.h>
#include <hello_session/hello_session.h>
#include <base/rpc_server.h>

namespace Hello {

    struct Session_component : Genode::Rpc_object<Session>
    {
      void say_hello()
      {
        Genode::printf("I am here... Hello.n");
      }

         int add(int a, int b) { return a + b; }
    };
}


                      Genode OS Framework Programming Environment   52
Server-side root interface




         Genode OS Framework Programming Environment   53
Server-side root interface

#include <root/component.h>

namespace Hello {

    struct Root_component : Genode::Root_component<Session_component>
    {
      Session_component *_create_session(const char *args)
      {
        return new (md_alloc()) Session_component();
      }

         Root_component(Genode::Rpc_entrypoint *ep,
                        Genode::Allocator      *allocator)
         : Genode::Root_component<Session_component>(ep, allocator)
         { }
    };
}

                      Genode OS Framework Programming Environment       54
Server main program

#include <base/sleep.h>
#include <cap_session/connection.h>

int main(void)
{
  using namespace Genode;

    Cap_connection cap;
    Sliced_heap md_alloc(env()->ram_session(), env()->rm_session());

    enum { STACK_SIZE = 4096 };
    Rpc_entrypoint ep(&cap, STACK_SIZE, "hello_ep");

    Hello::Root_component hello_root(&ep, &md_alloc);
    env()->parent()->announce(ep.manage(&hello_root));
    sleep_forever();
    return 0;
}
                   Genode OS Framework Programming Environment         55
Server build description ïŹles




src/hello/server/target.mk
           TARGET = hello_server
           SRC_CC = main.cc
           LIBS   = cxx env server




              Genode OS Framework Programming Environment   56
Client main program




        Genode OS Framework Programming Environment   57
Client main program


#include   <base/env.h>
#include   <base/printf.h>
#include   <base/rpc_client.h>
#include   <hello_session/hello_session.h>

int main(void)
{
  using namespace Genode;

    Capability<Hello::Session>
      hello(env()->parent()->session<Hello::Session>("ram_quota=4K"));

    hello.call<Hello::Session::Rpc_say_hello>();
    printf("sum = %d",
           hello.call<Hello::Session::Rpc_add>(13, 14));
    return 0;
}

                   Genode OS Framework Programming Environment           58
Client-side convenience wrapper




        Genode OS Framework Programming Environment   59
Client-side convenience wrapper


#include <base/rpc_client.h>
#include <hello_session/hello_session.h>

namespace Hello {

    struct Session_client : Genode::Rpc_client<Session>
    {
      Session_client(Genode::Capability<Session> cap)
      : Genode::Rpc_client<Session>(cap) { }

         void say_hello() { call<Rpc_say_hello>(); }

         int add(int a, int b) { return call<Rpc_add>(a, b); }
    };
}


                      Genode OS Framework Programming Environment   60
Client-side connection object




        Genode OS Framework Programming Environment   61
Client-side connection object



#include <hello_session/client.h>
#include <base/connection.h>

namespace Hello {
  struct Connection : Genode::Connection<Session>, Session_client
  {
     Connection()
     :
       Genode::Connection<Hello::Session>(session("ram_quota=4K")),
       Session_client(cap())
     { }
  };
}




                  Genode OS Framework Programming Environment         62
SimpliïŹed client main program



#include <base/env.h>
#include <base/printf.h>
#include <hello_session/connection.h>

int main(void)
{
  using namespace Genode;

    Hello_connection hello;
    hello.say_hello();
    printf("sum = %d", hello.add(13, 14));
    return 0;
}




                   Genode OS Framework Programming Environment   63
Client build description ïŹle




src/hello/client/target.mk
           TARGET = hello_client
           SRC_CC = main.cc
           LIBS   = cxx env




              Genode OS Framework Programming Environment   64
Run script

build { core init hello }
create_boot_directory
install_config {
  <config>
    <parent-provides>
      <service name="CAP"/> <service name="LOG"/>
    </parent-provides>
    <default-route>
      <any-service> <parent/> <any-child/> </any-service>
    </default-route>
    <start name="hello_server">
      <resource name="RAM" quantum="1M"/>
      <provides> <service name="Hello"/> </provides>
    </start>
    <start name="hello_client">
      <resource name="RAM" quantum="1M"/>
    </start>
  </config>}
build_boot_image { core init hello_client hello_server }
run_genode_until forever

                   Genode OS Framework Programming Environment   65
Advanced features



Extending existing RPC interfaces

 GENODE_RPC_INTERFACE_INHERIT(Base_interface_type,
                              Rpc_func ...)

Throwing exceptions accross process boundaries

 GENODE_RPC_THROW(Rpc_unlink, void, unlink,
                  GENODE_TYPE_LIST(Permission_denied,
                                   Invalid_name,
                                   Lookup_failed),
                  Dir_handle, Name const &);




                  Genode OS Framework Programming Environment   66
Observations




RPC stub code generated by C++ compiler

No external tools needed

No language boundary to conquer

Type safety




              Genode OS Framework Programming Environment   67
Thank you



What we covered today                       Coming up next...
Programming environment                     Components
 1.   Source tree overview                    1. Classes of components
 2.   Build system                            2. UniïŹed conïŹguration
 3.   Run scripts                                concept
 4.   Inter-process communication             3. Session routing
 5.   Client-server example                   4. Components overview

                   More information and resources:
                       http://genode.org


                    Genode OS Framework Programming Environment          68

Weitere Àhnliche Inhalte

Was ist angesagt?

RHCE FINAL Questions and Answers
RHCE FINAL Questions and AnswersRHCE FINAL Questions and Answers
RHCE FINAL Questions and AnswersRadien software
 
Linux internals v4
Linux internals v4Linux internals v4
Linux internals v4Liran Ben Haim
 
Red Hat Certified engineer course
  Red Hat Certified engineer course   Red Hat Certified engineer course
Red Hat Certified engineer course Ali Abdo
 
THE CLR AND THE .NET FRAMEWORK, C#
THE CLR AND THE .NET FRAMEWORK, C#THE CLR AND THE .NET FRAMEWORK, C#
THE CLR AND THE .NET FRAMEWORK, C#MANOJ BURI
 
Portin g
Portin gPortin g
Portin gthebalabe
 
Reconstructing Gapz: Position-Independent Code Analysis Problem
Reconstructing Gapz: Position-Independent Code Analysis ProblemReconstructing Gapz: Position-Independent Code Analysis Problem
Reconstructing Gapz: Position-Independent Code Analysis ProblemAlex Matrosov
 
Usage Note of SWIG for PHP
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHPWilliam Lee
 
Autoconf&Automake
Autoconf&AutomakeAutoconf&Automake
Autoconf&Automakeniurui
 
Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3William Lee
 
Odoo command line interface
Odoo command line interfaceOdoo command line interface
Odoo command line interfaceJalal Zahid
 
A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)
A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)
A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)Matthias Brugger
 
Codendi Installation Guide
Codendi Installation GuideCodendi Installation Guide
Codendi Installation GuideCodendi
 
Linux unix-commands
Linux unix-commandsLinux unix-commands
Linux unix-commandsZeelogic Solu
 
Lecture 5 Kernel Development
Lecture 5 Kernel DevelopmentLecture 5 Kernel Development
Lecture 5 Kernel DevelopmentMohammed Farrag
 
Advanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAdvanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAlex Matrosov
 

Was ist angesagt? (20)

RHCE FINAL Questions and Answers
RHCE FINAL Questions and AnswersRHCE FINAL Questions and Answers
RHCE FINAL Questions and Answers
 
Linux internals v4
Linux internals v4Linux internals v4
Linux internals v4
 
Red Hat Certified engineer course
  Red Hat Certified engineer course   Red Hat Certified engineer course
Red Hat Certified engineer course
 
THE CLR AND THE .NET FRAMEWORK, C#
THE CLR AND THE .NET FRAMEWORK, C#THE CLR AND THE .NET FRAMEWORK, C#
THE CLR AND THE .NET FRAMEWORK, C#
 
Portin g
Portin gPortin g
Portin g
 
Reconstructing Gapz: Position-Independent Code Analysis Problem
Reconstructing Gapz: Position-Independent Code Analysis ProblemReconstructing Gapz: Position-Independent Code Analysis Problem
Reconstructing Gapz: Position-Independent Code Analysis Problem
 
Usage Note of SWIG for PHP
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHP
 
Autoconf&Automake
Autoconf&AutomakeAutoconf&Automake
Autoconf&Automake
 
Docker and the Oracle Database
Docker and the Oracle DatabaseDocker and the Oracle Database
Docker and the Oracle Database
 
Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3
 
Linux week7
Linux week7Linux week7
Linux week7
 
Odoo command line interface
Odoo command line interfaceOdoo command line interface
Odoo command line interface
 
Ch08
Ch08Ch08
Ch08
 
A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)
A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)
A War Story: Porting Android 4.0 to a Custom Board (ELCE 2012)
 
Codendi Installation Guide
Codendi Installation GuideCodendi Installation Guide
Codendi Installation Guide
 
Linux unix-commands
Linux unix-commandsLinux unix-commands
Linux unix-commands
 
Lecture 5 Kernel Development
Lecture 5 Kernel DevelopmentLecture 5 Kernel Development
Lecture 5 Kernel Development
 
Rh401 rhel5.2
Rh401 rhel5.2Rh401 rhel5.2
Rh401 rhel5.2
 
Linux IO
Linux IOLinux IO
Linux IO
 
Advanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAdvanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/Gapz
 

Andere mochten auch

Genode Compositions
Genode CompositionsGenode Compositions
Genode CompositionsVasily Sartakov
 
Introduction to Microkernels
Introduction to MicrokernelsIntroduction to Microkernels
Introduction to MicrokernelsVasily Sartakov
 
Operating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceOperating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceVasily Sartakov
 
Genode Architecture
Genode ArchitectureGenode Architecture
Genode ArchitectureVasily Sartakov
 
Memory, IPC and L4Re
Memory, IPC and L4ReMemory, IPC and L4Re
Memory, IPC and L4ReVasily Sartakov
 
ХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž Genode
ХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž GenodeХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž Genode
ХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž GenodeVasily Sartakov
 

Andere mochten auch (7)

Genode Compositions
Genode CompositionsGenode Compositions
Genode Compositions
 
Genode Components
Genode ComponentsGenode Components
Genode Components
 
Introduction to Microkernels
Introduction to MicrokernelsIntroduction to Microkernels
Introduction to Microkernels
 
Operating Systems Meet Fault Tolerance
Operating Systems Meet Fault ToleranceOperating Systems Meet Fault Tolerance
Operating Systems Meet Fault Tolerance
 
Genode Architecture
Genode ArchitectureGenode Architecture
Genode Architecture
 
Memory, IPC and L4Re
Memory, IPC and L4ReMemory, IPC and L4Re
Memory, IPC and L4Re
 
ХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž Genode
ХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž GenodeХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž Genode
ХДтДĐČая ĐżĐŸĐŽŃĐžŃŃ‚Đ”ĐŒĐ° ĐČ L4Re Đž Genode
 

Ähnlich wie Genode Programming

Implementing a build manager in Ada
Implementing a build manager in AdaImplementing a build manager in Ada
Implementing a build manager in AdaStephane Carrez
 
Docker Multi-arch All The Things
Docker Multi-arch All The ThingsDocker Multi-arch All The Things
Docker Multi-arch All The ThingsDocker, Inc.
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardAlex Thissen
 
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App FactoryRevolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App FactoryImesh Gunaratne
 
LOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdfLOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdfThninh2
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
DockerCon EU 2015 - Windows Server Containers
DockerCon EU 2015 - Windows Server ContainersDockerCon EU 2015 - Windows Server Containers
DockerCon EU 2015 - Windows Server ContainersArnaud Porterie
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)Shoaib Ghachi
 
Windows containers troubleshooting
Windows containers troubleshootingWindows containers troubleshooting
Windows containers troubleshootingAlexey Bokov
 
What should you know about Net Core?
What should you know about Net Core?What should you know about Net Core?
What should you know about Net Core?Damir Dobric
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
 
ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'a
ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'aĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'a
ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'acorehard_by
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemLinaro
 
Kubernetes - training micro-dragons without getting burnt
Kubernetes -  training micro-dragons without getting burntKubernetes -  training micro-dragons without getting burnt
Kubernetes - training micro-dragons without getting burntAmir Moghimi
 

Ähnlich wie Genode Programming (20)

Building
BuildingBuilding
Building
 
Implementing a build manager in Ada
Implementing a build manager in AdaImplementing a build manager in Ada
Implementing a build manager in Ada
 
Docker Multi-arch All The Things
Docker Multi-arch All The ThingsDocker Multi-arch All The Things
Docker Multi-arch All The Things
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
 
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App FactoryRevolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
.Net Core
.Net Core.Net Core
.Net Core
 
LOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdfLOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdf
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Toolchain
ToolchainToolchain
Toolchain
 
DockerCon EU 2015 - Windows Server Containers
DockerCon EU 2015 - Windows Server ContainersDockerCon EU 2015 - Windows Server Containers
DockerCon EU 2015 - Windows Server Containers
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
 
Windows containers troubleshooting
Windows containers troubleshootingWindows containers troubleshooting
Windows containers troubleshooting
 
What should you know about Net Core?
What should you know about Net Core?What should you know about Net Core?
What should you know about Net Core?
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'a
ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'aĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'a
ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐŸĐșŃ€ŃƒĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐșŃ€ĐŸŃŃĐșĐŸĐŒĐżĐžĐ»ŃŃ†ĐžĐž ĐżŃ€ĐŸĐ”ĐșŃ‚ĐŸĐČ ĐœĐ° ĐŸŃĐœĐŸĐČĐ” docker'a
 
C# tutorial
C# tutorialC# tutorial
C# tutorial
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating System
 
Introduction to Programming Lesson 01
Introduction to Programming Lesson 01Introduction to Programming Lesson 01
Introduction to Programming Lesson 01
 
Kubernetes - training micro-dragons without getting burnt
Kubernetes -  training micro-dragons without getting burntKubernetes -  training micro-dragons without getting burnt
Kubernetes - training micro-dragons without getting burnt
 

Mehr von Vasily Sartakov

ĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚Đž
ĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚ĐžĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚Đž
ĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚ĐžVasily Sartakov
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionVasily Sartakov
 
Защота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4Re
Защота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4ReЗащота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4Re
Защота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4ReVasily Sartakov
 
Hardware Errors and the OS
Hardware Errors and the OSHardware Errors and the OS
Hardware Errors and the OSVasily Sartakov
 
Genode OS Framework
Genode OS FrameworkGenode OS Framework
Genode OS FrameworkVasily Sartakov
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems HardeningVasily Sartakov
 
ĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnD
ĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnDĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnD
ĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnDVasily Sartakov
 
Trusted Computing Base
Trusted Computing BaseTrusted Computing Base
Trusted Computing BaseVasily Sartakov
 
Advanced Components on Top of L4Re
Advanced Components on Top of L4ReAdvanced Components on Top of L4Re
Advanced Components on Top of L4ReVasily Sartakov
 
ĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OC
ĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OCĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OC
ĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OCVasily Sartakov
 
ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011
ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011
ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011Vasily Sartakov
 
Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...
Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...
Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...Vasily Sartakov
 
ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČтра
ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČŃ‚Ń€Đ°ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČтра
ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČтраVasily Sartakov
 

Mehr von Vasily Sartakov (16)

ĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚Đž
ĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚ĐžĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚Đž
ĐœĐ”ĐčĐœŃŃ‚Ń€ĐžĐŒ Ń‚Đ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž ŃˆĐžŃ„Ń€ĐŸĐČĐ°ĐœĐœĐŸĐč ĐżĐ°ĐŒŃŃ‚Đž
 
RnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific RegionRnD Collaborations in Asia-Pacific Region
RnD Collaborations in Asia-Pacific Region
 
Защота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4Re
Защота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4ReЗащота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4Re
Защота ĐżĐ°ĐŒŃŃ‚Đž про ĐżĐŸĐŒĐŸŃ‰Đž NX-bit ĐČ ŃŃ€Đ”ĐŽĐ” L4Re
 
Hardware Errors and the OS
Hardware Errors and the OSHardware Errors and the OS
Hardware Errors and the OS
 
Intro
IntroIntro
Intro
 
Genode OS Framework
Genode OS FrameworkGenode OS Framework
Genode OS Framework
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems Hardening
 
ĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnD
ĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnDĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnD
ĐžŃĐŸĐ±Đ”ĐœĐœĐŸŃŃ‚Đž ĐĐ°Ń†ĐžĐŸĐœĐ°Đ»ŃŒĐœĐŸĐłĐŸ RnD
 
Trusted Computing Base
Trusted Computing BaseTrusted Computing Base
Trusted Computing Base
 
System Integrity
System IntegritySystem Integrity
System Integrity
 
Intro
IntroIntro
Intro
 
Advanced Components on Top of L4Re
Advanced Components on Top of L4ReAdvanced Components on Top of L4Re
Advanced Components on Top of L4Re
 
ĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OC
ĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OCĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OC
ĐŸŃ€ĐžĐŒĐ”ĐœĐ”ĐœĐžĐ” Fiasco.OC
 
ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011
ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011
ПроĐșĐ»Đ°ĐŽĐœĐ°Ń Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń‚ĐžĐșĐ° 6 (36) 2011
 
Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...
Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...
Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐČстраоĐČĐ°Đ”ĐŒĐŸĐč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹ ĐœĐ° базД ĐŒĐžĐșŃ€ĐŸŃĐŽĐ”Ń€ĐœĐŸĐč архОтДĐșтуры...
 
ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČтра
ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČŃ‚Ń€Đ°ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČтра
ĐžĐ±Ń€Đ°Đ·ĐŸĐČĐ°ĐœĐžĐ”, ĐœĐ°ŃƒĐșĐ°, Đ±ĐžĐ·ĐœĐ”Ń. ĐĄĐ”ĐłĐŸĐŽĐœŃ, Đ·Đ°ĐČтра, ĐżĐŸŃĐ»Đ”Đ·Đ°ĐČтра
 

KĂŒrzlich hochgeladen

UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxCeline George
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxPooja Bhuva
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxPooja Bhuva
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentationcamerronhm
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxDenish Jangid
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxRamakrishna Reddy Bijjam
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Pooja Bhuva
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxmarlenawright1
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxannathomasp01
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfDr Vijay Vishwakarma
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 

KĂŒrzlich hochgeladen (20)

UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 

Genode Programming

  • 1. Genode OS Framework Programming Environment Norman Feske <norman.feske@genode-labs.com>
  • 2. Outline 1. Source tree overview 2. Build system 3. Run scripts 4. Inter-process communication 5. Client-server example Genode OS Framework Programming Environment 2
  • 3. Outline 1. Source tree overview 2. Build system 3. Run scripts 4. Inter-process communication 5. Client-server example Genode OS Framework Programming Environment 3
  • 4. Get the source code Code is hosted at GitHub: https://github.com/genodelabs/genode Clone the main repository: git clone https://github.com/genodelabs/genode.git Contains genuine Genode code only 3rd-party code not included, must be downloaded Genode OS Framework Programming Environment 4
  • 5. Repositories Foster modular code base instead of one big tree For a given project, only a subset of repositories is relevant → Helps to focus attention to relevant parts → Clean organization defeats ad-hoc solutions Genode OS Framework Programming Environment 5
  • 6. Repository shadowing Set of used repositories deïŹned by build directory → Selected repositories form one logical source tree (similar to unionfs) REPOSITORIES = <list-of-repo-directories> Repositories can shadow each other target description ïŹles library description ïŹles include-search directories Order is REPOSITORIES list is important Earlier entries shadow later entries Genode OS Framework Programming Environment 6
  • 7. Repositories shadowing (II) Genode OS Framework Programming Environment 7
  • 8. Repositories in practice Tweak existing components without breaking existing code Want to add code? → Simply introduce a new repository Can be hosted outside the mainline Genode tree Use a revision control system of your choice Genode OS Framework Programming Environment 8
  • 9. Specs Source repositories → coarse grained modularity Challenges: Multiple kernels Multiple hardware platforms DiïŹ€erent ïŹ‚avours of implementations ifndef-endif yields frustration, messes up test coverage Build specs → ïŹne grained modularity Genode OS Framework Programming Environment 9
  • 10. Specs: Build targets express their needs Examples: SpeciïŹc peripheral (device driver) Particular property of CPU architecture if code is not generic only 32-bit only arm v7a Licensing conditions Example, target.mk ïŹle REQUIRES = x86 ... Genode OS Framework Programming Environment 10
  • 11. Specs: Build directory deïŹnes build properties Spec values characterize the build Example <build-dir>/etc/specs.conf SPECS = genode foc_panda High-level spec values reïŹned to low-level spec values Genode OS Framework Programming Environment 11
  • 12. Specs: ReïŹnement Genode OS Framework Programming Environment 12
  • 13. Specs: Steering the build process Traverse <repos>/mk/spec-<value>.mk ïŹles Platform-speciïŹc build settings (CFLAGS ...) Include more specialized spec-<value>.mk ïŹles Match target’s REQUIRES against build-dir’s SPECS Prefer specialized libraries: <repo>/lib/mk/blit.mk generic library <repo>/lib/mk/x86 32/blit.mk specialized library Genode OS Framework Programming Environment 13
  • 14. Specs: BeneïŹts → No preprocessor-based conïŹguration → No artiïŹcial abstractions (architecture, platform, cpu, ...) → Easy to extend → Easy to conïŹgure Genode OS Framework Programming Environment 14
  • 15. Anatomy of a repository Directory Description doc/ Documentation, speciïŹc for the repository etc/ Default conïŹguration of the build process include/ Globally visible header ïŹles src/ Source codes and target build descriptions lib/mk/ Library build descriptions Genode OS Framework Programming Environment 15
  • 16. Repository relationships Genode OS Framework Programming Environment 16
  • 17. Integration of 3rd-party source code Download and integrate a kernel: make -C <genode-dir>/base-nova prepare Works uniformly for all kernels! Genode OS Framework Programming Environment 17
  • 18. Integration of 3rd-party source code Ported applications and libraries reside in libports and ports. List available 3rd-party libraries: make -C libports Download and integrate a set of libraries: make -C libports prepare PKG=’libc freetype’ ...a lot to explore Genode OS Framework Programming Environment 18
  • 19. Outline 1. Source tree overview 2. Build system 3. Run scripts 4. Inter-process communication 5. Client-server example Genode OS Framework Programming Environment 19
  • 20. Tool chain Needed because C++ support libraries normally require a libc We need C++ support We don’t want to depend on a libc Multi-threading support is OS-speciïŹc Linux TLS Limit varienty of tool-chain related errors Compiler versions Linux distributions → http://genode.org/download/tool-chain Genode OS Framework Programming Environment 20
  • 21. Build directory <build-dir>/etc/build.conf DeïŹnes base/ location DeïŹnes source repositories to use REPOSITORIES = <list-of-repo-dirs> Make ïŹ‚ags MAKE += -j4 Genode OS Framework Programming Environment 21
  • 22. Build directory (II) <build-dir>/etc/specs.conf Included after <repos>/etc/specs.conf DeïŹne build characteristics via spec values SPECS = genode foc_panda Defaults in base-<platform>/etc/specs.conf Extend spec values SPECS += i915 Genode OS Framework Programming Environment 22
  • 23. Build directory (III) <build-dir>/Makefile symlink to <genode-dir>/tool/builddir/build.mk Front end of the build system Genode OS Framework Programming Environment 23
  • 24. Build directory creation tool <genode-dir>/tool/create builddir Creates templates for a variety of supported platforms: create_builddir nova_x86_32 BUILD_DIR=/tmp/build Revisit generated build.conf: Enable repositories Add make ïŹ‚ags as desired Genode OS Framework Programming Environment 24
  • 25. Building targets Single target make <rel-dir-to-target> Example: make drivers/atapi Looks for target.mk within <repos>/src/drivers/atapi Tests REQUIRES agains SPECS Builds all libraries the target depends on Builds target Genode OS Framework Programming Environment 25
  • 26. Building targets (II) Tree of targets make <rel-dir> Example: make drivers Builds all targets within <repos>/src/drivers. Genode OS Framework Programming Environment 26
  • 27. Building targets (III) List of targets make <rel-dir> ... Example: make core init drivers/timer Builds all targets found in any of the speciïŹc src/ locations Genode OS Framework Programming Environment 27
  • 28. Outline 1. Source tree overview 2. Build system 3. Run scripts 4. Inter-process communication 5. Client-server example Genode OS Framework Programming Environment 28
  • 29. Typical work ïŹ‚ow Genode OS Framework Programming Environment 29
  • 30. Run script build "core init test/printf" create_boot_directory install_config { <config> <parent-provides> <service name="LOG"/> </parent-provides> <default-route> <any-service> <parent/> </any-service> </default-route> <start name="test-printf"> <resource name="RAM" quantum="1M"/> </start> </config> } build_boot_image "core init test-printf" append qemu_args "-nographic -m 64" run_genode_until {-1 = -1 = -1} 10 Genode OS Framework Programming Environment 30
  • 31. Run script (II) Located at <repos>/run/<script-name>.run Executable from within the build directory make run/<script-name> Genode OS Framework Programming Environment 31
  • 32. Run script (III) → Single ïŹle describes a complete system scenario → One run script works across diïŹ€erent kernels → Great for bug reports → Run script + little work = automated test case Genode OS Framework Programming Environment 32
  • 33. Outline 1. Source tree overview 2. Build system 3. Run scripts 4. Inter-process communication 5. Client-server example Genode OS Framework Programming Environment 33
  • 34. Remote procedure calls (RPC) Genode OS Framework Programming Environment 34
  • 35. Remote procedure calls: Classes Genode OS Framework Programming Environment 35
  • 36. Remote procedure calls: New RPC object Genode OS Framework Programming Environment 36
  • 37. Remote procedure calls: Invocation Genode OS Framework Programming Environment 37
  • 38. Shared memory Genode OS Framework Programming Environment 38
  • 39. Asynchronous notiïŹcations Genode OS Framework Programming Environment 39
  • 40. Asynchronous notiïŹcations (II) Genode OS Framework Programming Environment 40
  • 41. Mechanisms combined RPC + shared memory → Synchronous bulk data (transaction) Signalling + dataspace → Asynchronous bulk data (streaming) Genode OS Framework Programming Environment 41
  • 42. Synchronous bulk data transfer Genode OS Framework Programming Environment 42
  • 43. Asynchronous bulk data transfer Genode OS Framework Programming Environment 43
  • 44. Packet stream example Genode OS Framework Programming Environment 44
  • 45. Outline 1. Source tree overview 2. Build system 3. Run scripts 4. Inter-process communication 5. Client-server example Genode OS Framework Programming Environment 45
  • 46. Scenario overview Genode OS Framework Programming Environment 46
  • 47. Classes overview Genode OS Framework Programming Environment 47
  • 48. Create a new repository Designated content: hello_tutorial hello_tutorial/include hello_tutorial/include/hello_session hello_tutorial/src hello_tutorial/src/hello hello_tutorial/src/hello/server hello_tutorial/src/hello/client Genode OS Framework Programming Environment 48
  • 49. Server interface Genode OS Framework Programming Environment 49
  • 50. Server interface #include <session/session.h> #include <base/rpc.h> namespace Hello { struct Session : public Genode::Session { static const char *service_name() { return "Hello"; } virtual void say_hello() = 0; virtual int add(int a, int b) = 0; GENODE_RPC(Rpc_say_hello, void, say_hello); GENODE_RPC(Rpc_add, int, add, int, int); GENODE_RPC_INTERFACE(Rpc_say_hello, Rpc_add); }; } Genode OS Framework Programming Environment 50
  • 51. Server-side interface implementation Genode OS Framework Programming Environment 51
  • 52. Server-side interface implementation #include <base/printf.h> #include <hello_session/hello_session.h> #include <base/rpc_server.h> namespace Hello { struct Session_component : Genode::Rpc_object<Session> { void say_hello() { Genode::printf("I am here... Hello.n"); } int add(int a, int b) { return a + b; } }; } Genode OS Framework Programming Environment 52
  • 53. Server-side root interface Genode OS Framework Programming Environment 53
  • 54. Server-side root interface #include <root/component.h> namespace Hello { struct Root_component : Genode::Root_component<Session_component> { Session_component *_create_session(const char *args) { return new (md_alloc()) Session_component(); } Root_component(Genode::Rpc_entrypoint *ep, Genode::Allocator *allocator) : Genode::Root_component<Session_component>(ep, allocator) { } }; } Genode OS Framework Programming Environment 54
  • 55. Server main program #include <base/sleep.h> #include <cap_session/connection.h> int main(void) { using namespace Genode; Cap_connection cap; Sliced_heap md_alloc(env()->ram_session(), env()->rm_session()); enum { STACK_SIZE = 4096 }; Rpc_entrypoint ep(&cap, STACK_SIZE, "hello_ep"); Hello::Root_component hello_root(&ep, &md_alloc); env()->parent()->announce(ep.manage(&hello_root)); sleep_forever(); return 0; } Genode OS Framework Programming Environment 55
  • 56. Server build description ïŹles src/hello/server/target.mk TARGET = hello_server SRC_CC = main.cc LIBS = cxx env server Genode OS Framework Programming Environment 56
  • 57. Client main program Genode OS Framework Programming Environment 57
  • 58. Client main program #include <base/env.h> #include <base/printf.h> #include <base/rpc_client.h> #include <hello_session/hello_session.h> int main(void) { using namespace Genode; Capability<Hello::Session> hello(env()->parent()->session<Hello::Session>("ram_quota=4K")); hello.call<Hello::Session::Rpc_say_hello>(); printf("sum = %d", hello.call<Hello::Session::Rpc_add>(13, 14)); return 0; } Genode OS Framework Programming Environment 58
  • 59. Client-side convenience wrapper Genode OS Framework Programming Environment 59
  • 60. Client-side convenience wrapper #include <base/rpc_client.h> #include <hello_session/hello_session.h> namespace Hello { struct Session_client : Genode::Rpc_client<Session> { Session_client(Genode::Capability<Session> cap) : Genode::Rpc_client<Session>(cap) { } void say_hello() { call<Rpc_say_hello>(); } int add(int a, int b) { return call<Rpc_add>(a, b); } }; } Genode OS Framework Programming Environment 60
  • 61. Client-side connection object Genode OS Framework Programming Environment 61
  • 62. Client-side connection object #include <hello_session/client.h> #include <base/connection.h> namespace Hello { struct Connection : Genode::Connection<Session>, Session_client { Connection() : Genode::Connection<Hello::Session>(session("ram_quota=4K")), Session_client(cap()) { } }; } Genode OS Framework Programming Environment 62
  • 63. SimpliïŹed client main program #include <base/env.h> #include <base/printf.h> #include <hello_session/connection.h> int main(void) { using namespace Genode; Hello_connection hello; hello.say_hello(); printf("sum = %d", hello.add(13, 14)); return 0; } Genode OS Framework Programming Environment 63
  • 64. Client build description ïŹle src/hello/client/target.mk TARGET = hello_client SRC_CC = main.cc LIBS = cxx env Genode OS Framework Programming Environment 64
  • 65. Run script build { core init hello } create_boot_directory install_config { <config> <parent-provides> <service name="CAP"/> <service name="LOG"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="hello_server"> <resource name="RAM" quantum="1M"/> <provides> <service name="Hello"/> </provides> </start> <start name="hello_client"> <resource name="RAM" quantum="1M"/> </start> </config>} build_boot_image { core init hello_client hello_server } run_genode_until forever Genode OS Framework Programming Environment 65
  • 66. Advanced features Extending existing RPC interfaces GENODE_RPC_INTERFACE_INHERIT(Base_interface_type, Rpc_func ...) Throwing exceptions accross process boundaries GENODE_RPC_THROW(Rpc_unlink, void, unlink, GENODE_TYPE_LIST(Permission_denied, Invalid_name, Lookup_failed), Dir_handle, Name const &); Genode OS Framework Programming Environment 66
  • 67. Observations RPC stub code generated by C++ compiler No external tools needed No language boundary to conquer Type safety Genode OS Framework Programming Environment 67
  • 68. Thank you What we covered today Coming up next... Programming environment Components 1. Source tree overview 1. Classes of components 2. Build system 2. UniïŹed conïŹguration 3. Run scripts concept 4. Inter-process communication 3. Session routing 5. Client-server example 4. Components overview More information and resources: http://genode.org Genode OS Framework Programming Environment 68