Remove nit_log

This commit is contained in:
Ehmry - 2019-03-16 17:46:37 +01:00
parent 60f597431a
commit 8537b8f139
5 changed files with 0 additions and 344 deletions

View File

@ -1,14 +0,0 @@
include_rules
PKGS = vfs genode-gems genode-os genode-base genode-prg
: foreach *.cc |> $(CC) `pkg-config --cflags $(PKGS)` -c %f -o %o |> %B.o {objs}
: {objs} |> $(LD) `pkg-config --libs $(PKGS)` %f -o %o |> %d {binary}
: {binary} |> !strip_to_depot |>
: archives | {binary} |> !archives_to_depot |> {package}
: runtime | {binary} |> !runtime_to_depot |> {package}
: |> !publish_bin |>
: |> !publish_pkg |>

View File

@ -1,2 +0,0 @@
@SDK_USER@/src/vfs/@SDK_VERSION@
@DEPOT_USER@/src/nit_log/@DEPOT_VERSION@

View File

@ -1,166 +0,0 @@
#include "session_requests.h"
/* gems includes */
#include <gems/vfs.h>
#include <gems/vfs_font.h>
/* Genode includes */
#include <nitpicker_session/connection.h>
#include <framebuffer_session/connection.h>
#include <base/component.h>
#include <base/attached_rom_dataspace.h>
#include <base/log.h>
#include <base/heap.h>
#include <os/pixel_rgb565.h>
#include <os/surface.h>
#include <nitpicker_gfx/tff_font.h>
#include <nitpicker_gfx/box_painter.h>
#include <log_session/connection.h>
#include <root/component.h>
#include <base/component.h>
#include <base/session_label.h>
#include <base/heap.h>
#include <base/log.h>
#include <util/list.h>
namespace Nit_log {
using namespace Genode;
typedef Surface_base::Point Point;
typedef Surface_base::Area Area;
typedef Surface_base::Rect Rect;
struct Canvas;
class Session_component;
struct Main;
typedef Genode::Id_space<Session_component> Session_space;
}
struct Nit_log::Canvas
{
Genode::Env &_env;
Heap _heap { _env.ram(), _env.rm() };
Attached_rom_dataspace _config { _env, "config" };
Root_directory _root { _env, _heap, _config.xml().sub_node("vfs") };
Vfs_font _font { _heap, _root, "fonts/text/regular" };
Nitpicker::Connection _nitpicker { _env };
Framebuffer::Session &_fb { *_nitpicker.framebuffer() };
Dataspace_capability _fb_ds_cap()
{
_nitpicker.buffer(_nitpicker.mode(), false);
return _fb.dataspace();
}
Attached_dataspace _fb_ds { _env.rm(), _fb_ds_cap() };
Nitpicker::Session::View_handle _view { _nitpicker.create_view() };
typedef Pixel_rgb565 PT;
Surface_base::Area _size { (unsigned)_fb.mode().width() >> 2,
(unsigned)_fb.mode().height() >> 2 };
Surface<PT> _surface { _fb_ds.local_addr<PT>(), _size };
void _refresh() { _fb.refresh(0, 0, _size.w(), _size.h()); }
Canvas(Genode::Env &env) : _env(env)
{
_nitpicker.enqueue<Nitpicker::Session::Command::Geometry>(
_view, Rect(Point(0, 0), _size));
_nitpicker.enqueue<Nitpicker::Session::Command::To_front>(
_view, Nitpicker::Session::View_handle());
_nitpicker.execute();
_surface.clip(Rect(Point(0, 0), _size));
}
};
class Nit_log::Session_component final : public Rpc_object<Log_session>
{
private:
Session_space::Element _sessions_elem;
Session_label const _label;
public:
Session_component(Session_space &space,
Session_space::Id id,
Session_label const &label)
:
_sessions_elem(*this, space, id),
_label(label)
{
}
size_t write(Log_session::String const &msg) override
{
log(msg.string());
return msg.size();
}
};
struct Nit_log::Main final : Session_request_handler
{
Genode::Env &_env;
Canvas _canvas { _env };
Sliced_heap _session_heap { _env.pd(), _env.rm() };
Session_space _sessions { };
Session_requests_rom session_requests { _env, *this };
Main(Genode::Env &env) : _env(env) { }
void handle_session_create(Session_state::Name const &name,
Parent::Server::Id pid,
Session_state::Args const &args) override
{
if (name != "LOG") throw Service_denied();
Session_space::Id const id { pid.value };
Session_label const label = label_from_args(args.string());
Session_component *session = new (_session_heap)
Session_component(_sessions, id, label);
_env.parent().deliver_session_cap(pid, _env.ep().manage(*session));
}
void handle_session_upgrade(Parent::Server::Id,
Session_state::Args const &) override
{ }
void handle_session_close(Parent::Server::Id pid) override
{
Session_space::Id id { pid.value };
_sessions.apply<Session_component&>(
id, [&] (Session_component &session)
{
_env.ep().dissolve(session);
destroy(_session_heap, &session);
_env.parent().session_response(pid, Parent::SESSION_CLOSED);
});
}
};
void Component::construct(Genode::Env &env)
{
static Nit_log::Main inst(env);
}

View File

@ -1,25 +0,0 @@
<runtime ram="8M" caps="128" binary="nit_log">
<requires>
<file_system label="fonts"/>
<nitpicker/>
</requires>
<provides> <log/> </provides>
<content>
<rom label="nit_log"/>
<rom label="libc.lib.so"/>
<rom label="libm.lib.so"/>
<rom label="vfs.lib.so"/>
</content>
<config>
<vfs>
<dir name="fonts">
<fs label="fonts"/>
</dir>
</vfs>
</config>
</runtime>

View File

@ -1,137 +0,0 @@
/*
* \brief Utilities for handling the 'session_requests' ROM
* \author Emery Hemingway
* \date 2018-04-08
*/
/*
* Copyright (C) 2018 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef __SESSION_REQUESTS_H_
#define __SESSION_REQUESTS_H_
#include <base/attached_rom_dataspace.h>
#include <base/session_state.h>
#include <base/component.h>
namespace Genode {
struct Session_request_handler;
class Session_requests_rom;
};
struct Genode::Session_request_handler : Interface
{
virtual void handle_session_create(Session_state::Name const &,
Parent::Server::Id,
Session_state::Args const &) = 0;
virtual void handle_session_upgrade(Parent::Server::Id,
Session_state::Args const &) { }
virtual void handle_session_close(Parent::Server::Id) = 0;
};
class Genode::Session_requests_rom : public Signal_handler<Session_requests_rom>
{
private:
Parent &_parent;
Session_request_handler &_requests_handler;
Attached_rom_dataspace _parent_rom;
void _process()
{
_parent_rom.update();
Xml_node requests = _parent_rom.xml();
auto const create_fn = [&] (Xml_node request)
{
Parent::Server::Id const id {
request.attribute_value("id", ~0UL) };
typedef Session_state::Name Name;
typedef Session_state::Args Args;
Name name { };
Args args { };
try {
name = request.attribute_value("service", Name());
args = request.sub_node("args").decoded_content<Args>();
} catch (...) {
Genode::error("failed to parse request ", request);
return;
}
try { _requests_handler.handle_session_create(name, id, args); }
catch (Service_denied) {
_parent.session_response(id, Parent::SERVICE_DENIED); }
catch (Insufficient_ram_quota) {
_parent.session_response(id, Parent::INSUFFICIENT_RAM_QUOTA); }
catch (Insufficient_cap_quota) {
_parent.session_response(id, Parent::INSUFFICIENT_CAP_QUOTA); }
catch (...) {
error("unhandled exception while creating session");
_parent.session_response(id, Parent::SERVICE_DENIED);
throw;
}
};
auto const upgrade_fn = [&] (Xml_node request)
{
Parent::Server::Id const id {
request.attribute_value("id", ~0UL) };
typedef Session_state::Args Args;
Args args { };
try { args = request.sub_node("args").decoded_content<Args>(); }
catch (...) {
Genode::error("failed to parse request ", request);
return;
}
_requests_handler.handle_session_upgrade(id, args);
};
auto const close_fn = [&] (Xml_node request)
{
Parent::Server::Id const id {
request.attribute_value("id", ~0UL) };
_requests_handler.handle_session_close(id);
};
/* close sessions to free resources */
requests.for_each_sub_node("close", close_fn);
/* service existing sessions */
requests.for_each_sub_node("upgrade", upgrade_fn);
/* create new sessions */
requests.for_each_sub_node("create", create_fn);
}
public:
Session_requests_rom(Genode::Env &env,
Session_request_handler &requests_handler)
: Signal_handler<Session_requests_rom>(env.ep(), *this, &Session_requests_rom::_process),
_parent(env.parent()),
_requests_handler(requests_handler),
_parent_rom(env, "session_requests")
{
_parent_rom.sigh(*this);
}
/**
* Post a signal to this requests handler
*/
void schedule() {
Signal_transmitter(*this).submit(); }
};
#endif