trace: add trace_eth_packet event

genodelabs/genode#4352
This commit is contained in:
Johannes Schlatow 2022-05-13 13:24:51 +02:00 committed by Christian Helmuth
parent 80a422e590
commit 086f3efef2
8 changed files with 52 additions and 0 deletions

View File

@ -26,6 +26,7 @@ namespace Genode { namespace Trace {
struct Signal_submit;
struct Signal_received;
struct Checkpoint;
struct Ethernet_packet;
} }
@ -151,4 +152,33 @@ struct Genode::Trace::Checkpoint
};
struct Genode::Trace::Ethernet_packet
{
enum Direction : char {
RECV = 0x0,
SENT = 0x1
};
char const *name;
Direction direction;
char *data;
size_t length;
Ethernet_packet(char const *name, Direction direction, char *data, size_t len)
: name(name), direction(direction), data(data), length(len)
{
Thread::trace(this);
}
Ethernet_packet(char const *name, Direction direction, void *data, size_t len)
: name(name), direction(direction), data((char*)data), length(len)
{
Thread::trace(this);
}
size_t generate(Policy_module &policy, char *dst) const {
return policy.trace_eth_packet(dst, name, direction == Direction::SENT, data, length); }
};
#endif /* _INCLUDE__BASE__TRACE__EVENTS_H_ */

View File

@ -32,6 +32,7 @@ namespace Genode {
struct Genode::Trace::Policy_module
{
size_t (*max_event_size) ();
size_t (*trace_eth_packet) (char *, char const *, bool, char *, size_t);
size_t (*checkpoint) (char *, char const *, unsigned long, void *, unsigned char);
size_t (*log_output) (char *, char const *, size_t);
size_t (*rpc_call) (char *, char const *, Msgbuf_base const &);

View File

@ -22,6 +22,7 @@ namespace Genode {
}
extern "C" size_t max_event_size ();
extern "C" size_t trace_eth_packet (char *dst, char const *name, bool out, char *data, size_t len);
extern "C" size_t checkpoint (char *dst, char const *name, unsigned long, void *, unsigned char);
extern "C" size_t log_output (char *dst, char const *log_message, size_t len);
extern "C" size_t rpc_call (char *dst, char const *rpc_name, Genode::Msgbuf_base const &);

View File

@ -18,6 +18,10 @@ size_t max_event_size()
return MAX_EVENT_SIZE;
}
size_t trace_eth_packet(char *, char const *, bool, char *, size_t)
{
return 0;
}
size_t checkpoint(char *dst, char const *, unsigned long, void *, unsigned char)
{

View File

@ -10,6 +10,11 @@ size_t max_event_size()
return MAX_EVENT_SIZE;
}
size_t trace_eth_packet(char *, char const *, bool, char *, size_t)
{
return 0;
}
size_t checkpoint(char *dst, char const *, unsigned long, void *, unsigned char)
{
return 0;

View File

@ -7,6 +7,11 @@ size_t max_event_size()
return 0;
}
size_t trace_eth_packet(char *, char const *, bool, char *, size_t)
{
return 0;
}
size_t checkpoint(char *dst, char const *, unsigned long, void *, unsigned char)
{
return 0;

View File

@ -10,6 +10,11 @@ size_t max_event_size()
return MAX_EVENT_SIZE;
}
size_t trace_eth_packet(char *, char const *, bool, char *, size_t)
{
return 0;
}
size_t checkpoint(char *, char const *, unsigned long, void *, unsigned char)
{
return 0;

View File

@ -19,6 +19,7 @@ extern "C" {
Genode::Trace::Policy_module policy_jump_table =
{
max_event_size,
trace_eth_packet,
checkpoint,
log_output,
rpc_call,