Current section

Files

Jump to
quicer c_src quicer_tp.c
Raw

c_src/quicer_tp.c

#define TRACEPOINT_CREATE_PROBES
#define TRACEPOINT_DEFINE
#include "quicer_tp.h"
void
tp_snk(ErlNifEnv *env,
const char *ctx,
const char *fun,
const char *tag,
uint64_t rid,
uint64_t mark)
{
ErlNifPid pid;
if (enif_whereis_pid(env, ATOM_SNABBKAFFE_COLLECTOR, &pid))
{
ERL_NIF_TERM snk_event;
ERL_NIF_TERM snk_event_key_array[7]
= { ATOM_SNK_KIND, ATOM_CONTEXT, ATOM_FUNCTION, ATOM_TAG,
ATOM_RESOURCE_ID, ATOM_MARK, ATOM_SNK_META };
ERL_NIF_TERM snk_event_val_array[7] = {
ATOM_DEBUG, // snk_kind
enif_make_string(env, ctx, ERL_NIF_LATIN1), // context
enif_make_string(env, fun, ERL_NIF_LATIN1), // fun
enif_make_string(env, tag, ERL_NIF_LATIN1), // tag
enif_make_uint64(env, rid), // rid
enif_make_uint64(env, mark), // mark
enif_make_new_map(env) // snk_meta
};
enif_make_map_from_arrays(
env, snk_event_key_array, snk_event_val_array, 7, &snk_event);
ERL_NIF_TERM report = enif_make_tuple2(
env, ATOM_GEN_CAST, enif_make_tuple2(env, ATOM_TRACE, snk_event));
enif_send(NULL, &pid, NULL, report);
}
}