mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-08 03:45:24 +00:00
os: div_zero trace policy
This trace policy can be used as a fault-injection mechanism. Once installed, the next time the traced thread passes a trace point (e.g., RPC call, RPC request, ...), the policy produces a divide-by-zero exception.
This commit is contained in:
parent
a6a923c31b
commit
84443d6548
54
repos/os/src/lib/trace/policy/div_zero/policy.cc
Normal file
54
repos/os/src/lib/trace/policy/div_zero/policy.cc
Normal file
@ -0,0 +1,54 @@
|
||||
#include <util/string.h>
|
||||
#include <trace/policy.h>
|
||||
|
||||
using namespace Genode;
|
||||
|
||||
enum { MAX_EVENT_SIZE = 64 };
|
||||
|
||||
static inline int div_zero()
|
||||
{
|
||||
static int zero;
|
||||
|
||||
/* use variable to prevent compiler warning about division by zero */
|
||||
return 1 / zero;
|
||||
}
|
||||
|
||||
size_t max_event_size()
|
||||
{
|
||||
return MAX_EVENT_SIZE;
|
||||
}
|
||||
|
||||
size_t log_output(char *dst, char const *log_message, size_t len)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
||||
|
||||
size_t rpc_call(char *dst, char const *rpc_name, Msgbuf_base const &)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
||||
|
||||
size_t rpc_returned(char *dst, char const *rpc_name, Msgbuf_base const &)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
||||
|
||||
size_t rpc_dispatch(char *dst, char const *rpc_name)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
||||
|
||||
size_t rpc_reply(char *dst, char const *rpc_name)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
||||
|
||||
size_t signal_submit(char *dst, unsigned const)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
||||
|
||||
size_t signal_receive(char *dst, Signal_context const &, unsigned)
|
||||
{
|
||||
return div_zero();
|
||||
}
|
5
repos/os/src/lib/trace/policy/div_zero/target.mk
Normal file
5
repos/os/src/lib/trace/policy/div_zero/target.mk
Normal file
@ -0,0 +1,5 @@
|
||||
TARGET = div_zero_policy
|
||||
|
||||
TARGET_POLICY = div_zero
|
||||
|
||||
include $(PRG_DIR)/../policy.inc
|
Loading…
x
Reference in New Issue
Block a user