os/include/nic: API transition (fix 'deprecated' warnings)

...and adaptation of the users of 'Nic::Root' and 'Nic::Session_component'
to the modified interface.

Issue #1987
This commit is contained in:
Christian Prochaska 2017-01-13 16:52:53 +01:00 committed by Norman Feske
parent a63217b216
commit 9be07d2244
14 changed files with 111 additions and 79 deletions

View File

@ -6,23 +6,24 @@
*/ */
/* /*
* Copyright (C) 2011-2013 Genode Labs GmbH * Copyright (C) 2011-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
*/ */
/* Genode */ /* Genode */
#include <base/component.h>
#include <base/env.h> #include <base/env.h>
#include <base/heap.h>
#include <base/sleep.h> #include <base/sleep.h>
#include <base/log.h> #include <base/log.h>
#include <cap_session/connection.h>
#include <nic/component.h> #include <nic/component.h>
#include <nic/root.h> #include <nic/root.h>
#include <os/server.h>
#include <dde_ipxe/nic.h> #include <dde_ipxe/nic.h>
using namespace Genode;
class Ipxe_session_component : public Nic::Session_component class Ipxe_session_component : public Nic::Session_component
{ {
@ -101,8 +102,10 @@ class Ipxe_session_component : public Nic::Session_component
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Server::Entrypoint &ep) Server::Entrypoint &ep)
: Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep) : Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep)
{ {
instance = this; instance = this;
@ -137,29 +140,23 @@ Ipxe_session_component *Ipxe_session_component::instance;
struct Main struct Main
{ {
Server::Entrypoint &ep; Env &_env;
Nic::Root<Ipxe_session_component> root {ep, *Genode::env()->heap() }; Heap _heap { _env.ram(), _env.rm() };
Main(Server::Entrypoint &ep) : ep(ep) Nic::Root<Ipxe_session_component> root {_env, _heap };
Main(Env &env) : _env(env)
{ {
Genode::log("--- iPXE NIC driver started ---"); Genode::log("--- iPXE NIC driver started ---");
Genode::log("-- init iPXE NIC"); Genode::log("-- init iPXE NIC");
int cnt = dde_ipxe_nic_init(&ep); int cnt = dde_ipxe_nic_init(&_env.ep());
Genode::log(" number of devices: ", cnt); Genode::log(" number of devices: ", cnt);
Genode::env()->parent()->announce(ep.manage(root)); _env.parent().announce(_env.ep().manage(root));
} }
}; };
void Component::construct(Genode::Env &env) { static Main main(env); }
/************
** Server **
************/
namespace Server {
char const *name() { return "nic_drv_ep"; }
size_t stack_size() { return 16*1024*sizeof(long); }
void construct(Entrypoint &ep) { static Main server(ep); }
}

View File

@ -1,3 +1,3 @@
TARGET = nic_drv TARGET = nic_drv
LIBS = base server dde_ipxe_nic LIBS = base dde_ipxe_nic
SRC_CC = main.cc SRC_CC = main.cc

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (C) 2012-2013 Genode Labs GmbH * Copyright (C) 2012-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -180,9 +180,11 @@ class Usb_nic::Session_component : public Nic::Session_component
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Genode::Entrypoint &ep, Genode::Entrypoint &ep,
Device *device) Device *device)
: Nic::Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep), : Nic::Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep),
_device(device) _device(device)
{ _device->session(this); } { _device->session(this); }
@ -257,7 +259,7 @@ class Root : public Root_component
return new (Root::md_alloc()) return new (Root::md_alloc())
Usb_nic::Session_component(tx_buf_size, rx_buf_size, Usb_nic::Session_component(tx_buf_size, rx_buf_size,
Lx::Malloc::mem(), Lx::Malloc::mem(),
_env.ram(), _env.ram(), _env.rm(),
_env.ep(), _device); _env.ep(), _device);
} }

View File

@ -6,7 +6,7 @@
*/ */
/* /*
* Copyright (C) 2012-2016 Genode Labs GmbH * Copyright (C) 2012-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -92,8 +92,10 @@ class Wifi_session_component : public Nic::Session_component
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Server::Entrypoint &ep, net_device *ndev) Server::Entrypoint &ep, net_device *ndev)
: Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep), : Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep),
_ndev(ndev) _ndev(ndev)
{ {
_ndev->lx_nic_device = this; _ndev->lx_nic_device = this;
@ -198,7 +200,7 @@ class Root : public Genode::Root_component<Wifi_session_component,
session = new (md_alloc()) session = new (md_alloc())
Wifi_session_component(tx_buf_size, rx_buf_size, Wifi_session_component(tx_buf_size, rx_buf_size,
*md_alloc(), *md_alloc(),
_env.ram(), _env.ram(), _env.rm(),
_env.ep(), device); _env.ep(), device);
return session; return session;
} }

View File

@ -6,7 +6,7 @@
*/ */
/* /*
* Copyright (C) 2015 Genode Labs GmbH * Copyright (C) 2015-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -34,13 +34,15 @@ class Nic::Communication_buffers
Nic::Packet_allocator _rx_packet_alloc; Nic::Packet_allocator _rx_packet_alloc;
Genode::Attached_ram_dataspace _tx_ds, _rx_ds; Genode::Attached_ram_dataspace _tx_ds, _rx_ds;
Communication_buffers(Genode::Allocator &rx_block_md_alloc, Communication_buffers(Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::size_t tx_size, Genode::size_t rx_size) Genode::Region_map &region_map,
Genode::size_t tx_size,
Genode::size_t rx_size)
: :
_rx_packet_alloc(&rx_block_md_alloc), _rx_packet_alloc(&rx_block_md_alloc),
_tx_ds(&ram_session, tx_size), _tx_ds(ram_session, region_map, tx_size),
_rx_ds(&ram_session, rx_size) _rx_ds(ram_session, region_map, rx_size)
{ } { }
}; };
@ -90,11 +92,13 @@ class Nic::Session_component : Communication_buffers, public Session_rpc_object
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Server::Entrypoint &ep) Server::Entrypoint &ep)
: :
Communication_buffers(rx_block_md_alloc, ram_session, Communication_buffers(rx_block_md_alloc, ram_session, region_map,
tx_buf_size, rx_buf_size), tx_buf_size, rx_buf_size),
Session_rpc_object(_tx_ds.cap(), Session_rpc_object(region_map,
_tx_ds.cap(),
_rx_ds.cap(), _rx_ds.cap(),
&_rx_packet_alloc, ep.rpc_ep()), &_rx_packet_alloc, ep.rpc_ep()),
_ep(ep) _ep(ep)

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (C) 2015 Genode Labs GmbH * Copyright (C) 2015-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -18,6 +18,7 @@
#include <root/component.h> #include <root/component.h>
namespace Nic { namespace Nic {
using namespace Genode;
template <class SESSION_COMPONENT> class Root; template <class SESSION_COMPONENT> class Root;
}; };
@ -29,7 +30,8 @@ class Nic::Root : public Genode::Root_component<SESSION_COMPONENT,
{ {
private: private:
Server::Entrypoint &_ep; Env &_env;
Allocator &_md_alloc;
protected: protected:
@ -59,16 +61,17 @@ class Nic::Root : public Genode::Root_component<SESSION_COMPONENT,
return new (Root::md_alloc()) return new (Root::md_alloc())
SESSION_COMPONENT(tx_buf_size, rx_buf_size, SESSION_COMPONENT(tx_buf_size, rx_buf_size,
*env()->heap(), _md_alloc,
*env()->ram_session(), _env.ram(),
_ep); _env.rm(),
_env.ep());
} }
public: public:
Root(Server::Entrypoint &ep, Genode::Allocator &md_alloc) Root(Genode::Env &env, Genode::Allocator &md_alloc)
: Genode::Root_component<SESSION_COMPONENT, Genode::Single_client>(&ep.rpc_ep(), &md_alloc), : Genode::Root_component<SESSION_COMPONENT, Genode::Single_client>(&env.ep().rpc_ep(), &md_alloc),
_ep(ep) _env(env), _md_alloc(md_alloc)
{ } { }
}; };

View File

@ -6,7 +6,7 @@
*/ */
/* /*
* Copyright (C) 2015 Genode Labs GmbH * Copyright (C) 2015-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -460,11 +460,13 @@ namespace Genode
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Server::Entrypoint &ep, Server::Entrypoint &ep,
addr_t const base, size_t const size, const int irq) addr_t const base, size_t const size, const int irq)
: :
Genode::Attached_mmio(base, size), Genode::Attached_mmio(base, size),
Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep), Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep),
_irq(irq), _irq(irq),
_irq_handler(ep, *this, &Cadence_gem::_handle_irq), _irq_handler(ep, *this, &Cadence_gem::_handle_irq),
_phy(*this) _phy(*this)

View File

@ -5,17 +5,17 @@
*/ */
/* /*
* Copyright (C) 2015 Genode Labs GmbH * Copyright (C) 2015-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
*/ */
/* Genode includes */ /* Genode includes */
#include <base/component.h>
#include <base/heap.h>
#include <base/sleep.h> #include <base/sleep.h>
#include <cap_session/connection.h>
#include <drivers/board_base.h> #include <drivers/board_base.h>
#include <os/server.h>
#include <nic/xml_node.h> #include <nic/xml_node.h>
#include <nic/root.h> #include <nic/root.h>
@ -23,7 +23,14 @@
#include "cadence_gem.h" #include "cadence_gem.h"
class Gem_session_component namespace Server {
using namespace Genode;
class Gem_session_component;
struct Main;
}
class Server::Gem_session_component
: :
public Cadence_gem public Cadence_gem
{ {
@ -32,9 +39,11 @@ class Gem_session_component
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Server::Entrypoint &ep) Server::Entrypoint &ep)
: :
Cadence_gem(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep, Cadence_gem(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep,
Board_base::EMAC_0_MMIO_BASE, Board_base::EMAC_0_MMIO_BASE,
Board_base::EMAC_0_MMIO_SIZE, Board_base::EMAC_0_MMIO_SIZE,
Board_base::EMAC_0_IRQ) Board_base::EMAC_0_IRQ)
@ -61,20 +70,19 @@ class Gem_session_component
} }
}; };
namespace Server { struct Main; }
struct Server::Main struct Server::Main
{ {
Entrypoint &ep; Env &_env;
Nic::Root<Gem_session_component> nic_root{ ep, *Genode::env()->heap() }; Heap _heap { _env.ram(), _env.rm() };
Main(Entrypoint &ep) : ep(ep) Nic::Root<Gem_session_component> nic_root{ _env, *Genode::env()->heap() };
Main(Env &env) : _env(env)
{ {
Genode::env()->parent()->announce(ep.manage(nic_root)); _env.parent().announce(_env.ep().manage(nic_root));
} }
}; };
void Component::construct(Genode::Env &env) { static Server::Main main(env); }
char const * Server::name() { return "nic_ep"; }
size_t Server::stack_size() { return 16*1024*sizeof(long); }
void Server::construct(Entrypoint &ep) { static Main main(ep); }

View File

@ -1,5 +1,5 @@
REQUIRES = cadence_gem REQUIRES = cadence_gem
TARGET = nic_drv TARGET = nic_drv
SRC_CC = main.cc SRC_CC = main.cc
LIBS = base server config LIBS = base config
INC_DIR += $(PRG_DIR) INC_DIR += $(PRG_DIR)

View File

@ -6,7 +6,7 @@
*/ */
/* /*
* Copyright (C) 2011-2016 Genode Labs GmbH * Copyright (C) 2011-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -304,7 +304,7 @@ class Lan9118 : public Nic::Session_component
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Env &env) Genode::Env &env)
: Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, : Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
env.ram(), env.ep()), env.ram(), env.rm(), env.ep()),
_mmio(env, mmio_base, mmio_size), _mmio(env, mmio_base, mmio_size),
_reg_base(_mmio.local_addr<Genode::uint32_t>()), _reg_base(_mmio.local_addr<Genode::uint32_t>()),
_irq(env, irq), _irq(env, irq),

View File

@ -17,13 +17,15 @@
*/ */
/* /*
* Copyright (C) 2011-2013 Genode Labs GmbH * Copyright (C) 2011-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
*/ */
/* Genode */ /* Genode */
#include <base/component.h>
#include <base/heap.h>
#include <base/thread.h> #include <base/thread.h>
#include <base/log.h> #include <base/log.h>
#include <nic/root.h> #include <nic/root.h>
@ -38,7 +40,11 @@
#include <net/if.h> #include <net/if.h>
#include <linux/if_tun.h> #include <linux/if_tun.h>
namespace Server { struct Main; } namespace Server {
using namespace Genode;
struct Main;
}
class Linux_session_component : public Nic::Session_component class Linux_session_component : public Nic::Session_component
@ -193,9 +199,11 @@ class Linux_session_component : public Nic::Session_component
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Server::Entrypoint &ep) Server::Entrypoint &ep)
: :
Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep), Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep),
_tap_fd(_setup_tap_fd()), _rx_thread(_tap_fd, _packet_stream_dispatcher) _tap_fd(_setup_tap_fd()), _rx_thread(_tap_fd, _packet_stream_dispatcher)
{ {
/* try using configured MAC address */ /* try using configured MAC address */
@ -223,16 +231,15 @@ class Linux_session_component : public Nic::Session_component
struct Server::Main struct Server::Main
{ {
Entrypoint &ep; Env &_env;
Nic::Root<Linux_session_component> nic_root{ ep, *Genode::env()->heap() }; Heap _heap { _env.ram(), _env.rm() };
Main(Entrypoint &ep) : ep(ep) Nic::Root<Linux_session_component> nic_root { _env, _heap };
Main(Env &env) : _env(env)
{ {
Genode::env()->parent()->announce(ep.manage(nic_root)); _env.parent().announce(_env.ep().manage(nic_root));
} }
}; };
void Component::construct(Genode::Env &env) { static Server::Main main(env); }
char const * Server::name() { return "nic_ep"; }
Genode::size_t Server::stack_size() { return 16*1024*sizeof(long); }
void Server::construct(Entrypoint &ep) { static Main main(ep); }

View File

@ -1,4 +1,4 @@
TARGET = nic_drv TARGET = nic_drv
REQUIRES = linux REQUIRES = linux
LIBS = lx_hybrid config server LIBS = lx_hybrid config
SRC_CC = main.cc SRC_CC = main.cc

View File

@ -7,7 +7,7 @@
*/ */
/* /*
* Copyright (C) 2009-2013 Genode Labs GmbH * Copyright (C) 2009-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -49,10 +49,11 @@ class Nic_loopback::Session_component : public Nic::Session_component
size_t const rx_buf_size, size_t const rx_buf_size,
Allocator &rx_block_md_alloc, Allocator &rx_block_md_alloc,
Ram_session &ram_session, Ram_session &ram_session,
Region_map &region_map,
Entrypoint &ep) Entrypoint &ep)
: :
Nic::Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, Nic::Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, ep) ram_session, region_map, ep)
{ } { }
Nic::Mac_address mac_address() override Nic::Mac_address mac_address() override
@ -146,6 +147,7 @@ class Nic_loopback::Root : public Root_component<Session_component>
Entrypoint &_ep; Entrypoint &_ep;
Ram_session &_ram; Ram_session &_ram;
Region_map &_rm;
protected: protected:
@ -172,15 +174,18 @@ class Nic_loopback::Root : public Root_component<Session_component>
} }
return new (md_alloc()) Session_component(tx_buf_size, rx_buf_size, return new (md_alloc()) Session_component(tx_buf_size, rx_buf_size,
*md_alloc(), _ram, _ep); *md_alloc(), _ram, _rm, _ep);
} }
public: public:
Root(Entrypoint &ep, Ram_session &ram, Allocator &md_alloc) Root(Entrypoint &ep,
Ram_session &ram,
Region_map &rm,
Allocator &md_alloc)
: :
Root_component<Session_component>(&ep.rpc_ep(), &md_alloc), Root_component<Session_component>(&ep.rpc_ep(), &md_alloc),
_ep(ep), _ram(ram) _ep(ep), _ram(ram), _rm(rm)
{ } { }
}; };
@ -191,7 +196,7 @@ struct Nic_loopback::Main
Heap _heap { _env.ram(), _env.rm() }; Heap _heap { _env.ram(), _env.rm() };
Nic_loopback::Root _root { _env.ep(), _env.ram(), _heap }; Nic_loopback::Root _root { _env.ep(), _env.ram(), _env.rm(), _heap };
Main(Env &env) : _env(env) Main(Env &env) : _env(env)
{ {

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (C) 2014-2015 Genode Labs GmbH * Copyright (C) 2014-2017 Genode Labs GmbH
* *
* This file is part of the Genode OS framework, which is distributed * This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
@ -134,8 +134,10 @@ class Openvpn_component : public Tuntap_device,
Genode::size_t const rx_buf_size, Genode::size_t const rx_buf_size,
Genode::Allocator &rx_block_md_alloc, Genode::Allocator &rx_block_md_alloc,
Genode::Ram_session &ram_session, Genode::Ram_session &ram_session,
Genode::Region_map &region_map,
Genode::Entrypoint &ep) Genode::Entrypoint &ep)
: Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep) : Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc,
ram_session, region_map, ep)
{ {
char buf[] = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x01 }; char buf[] = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x01 };
_mac_addr = Nic::Mac_address((void*)buf); _mac_addr = Nic::Mac_address((void*)buf);
@ -236,7 +238,7 @@ class Root : public Genode::Root_component<Openvpn_component, Genode::Single_cli
Openvpn_component *component = new (Root::md_alloc()) Openvpn_component *component = new (Root::md_alloc())
Openvpn_component(tx_buf_size, rx_buf_size, Openvpn_component(tx_buf_size, rx_buf_size,
_heap, _heap,
_env.ram(), _env.ram(), _env.rm(),
_env.ep()); _env.ep());
/** /**
* Setting the pointer in this manner is quite hackish but it has * Setting the pointer in this manner is quite hackish but it has