base: avoid use of deprecated base/printf.h

Besides adapting the components to the use of base/log.h, the patch
cleans up a few base headers, i.e., it removes unused includes from
root/component.h, specifically base/heap.h and
ram_session/ram_session.h. Hence, components that relied on the implicit
inclusion of those headers have to manually include those headers now.

While adjusting the log messages, I repeatedly stumbled over the problem
that printing char * arguments is ambiguous. It is unclear whether to
print the argument as pointer or null-terminated string. To overcome
this problem, the patch introduces a new type 'Cstring' that allows the
caller to express that the argument should be handled as null-terminated
string. As a nice side effect, with this type in place, the optional len
argument of the 'String' class could be removed. Instead of supplying a
pair of (char const *, size_t), the constructor accepts a 'Cstring'.
This, in turn, clears the way let the 'String' constructor use the new
output mechanism to assemble a string from multiple arguments (and
thereby getting rid of snprintf within Genode in the near future).

To enforce the explicit resolution of the char * ambiguity, the 'char *'
overload of the 'print' function is marked as deleted.

Issue #1987
This commit is contained in:
Norman Feske
2016-07-13 19:07:09 +02:00
committed by Christian Helmuth
parent a5d3aa8373
commit 17c79a9e23
699 changed files with 5156 additions and 5865 deletions

View File

@ -14,7 +14,7 @@
/* Genode includes */
#include <util/list.h>
#include <util/misc_math.h>
#include <base/printf.h>
#include <base/log.h>
#include <base/rpc_server.h>
#include <base/heap.h>
#include <root/component.h>
@ -84,7 +84,7 @@ class Open_socket : public Genode::List<Open_socket>::Element
{
int listen_sd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listen_sd == -1) {
PERR("socket creation failed");
Genode::error("socket creation failed");
return -1;
}
@ -94,16 +94,16 @@ class Open_socket : public Genode::List<Open_socket>::Element
sockaddr.sin_addr.s_addr = INADDR_ANY;
if (bind(listen_sd, (struct sockaddr *)&sockaddr, sizeof(sockaddr))) {
PERR("bind to port %d failed", tcp_port);
Genode::error("bind to port ", tcp_port, " failed");
return -1;
}
if (listen(listen_sd, 1)) {
PERR("listen failed");
Genode::error("listen failed");
return -1;
}
Genode::printf("listening on port %d...\n", tcp_port);
Genode::log("listening on port ", tcp_port, "...");
return listen_sd;
}
@ -160,7 +160,7 @@ class Open_socket : public Genode::List<Open_socket>::Element
_sd = accept(_listen_sd, &addr, &len);
if (_sd != -1)
Genode::printf("connection established\n");
Genode::log("connection established");
/*
* Inform client about the finished initialization of the terminal
@ -184,7 +184,7 @@ class Open_socket : public Genode::List<Open_socket>::Element
void fill_read_buffer_and_notify_client()
{
if (_read_buf_bytes_used) {
PWRN("read buffer already in use");
Genode::warning("read buffer already in use");
return;
}
@ -440,7 +440,7 @@ namespace Terminal {
/* write data to socket, assuming that it won't block */
if (::write(sd(), _io_buffer.local_addr<char>(), num_bytes) < 0)
PERR("write error, dropping data");
Genode::error("write error, dropping data");
}
Genode::Dataspace_capability _dataspace()
@ -512,7 +512,7 @@ int main()
{
using namespace Genode;
Genode::printf("--- TCP terminal started ---\n");
Genode::log("--- TCP terminal started ---");
/* initialize entry point that serves the root interface */
enum { STACK_SIZE = 4*4096 };