|
|
@ -1,21 +1,29 @@ |
|
|
|
-module(tpTracerNif). |
|
|
|
%-behavior(erl_tracer). |
|
|
|
|
|
|
|
-export([enabled/3]). |
|
|
|
-export([enabled_call/3]). |
|
|
|
-export([enabled_procs/3]). |
|
|
|
-export([enabled_running_procs/3]). |
|
|
|
-export([enabled_send/3]). |
|
|
|
-export([trace/5]). |
|
|
|
-export([ |
|
|
|
enabled/3 |
|
|
|
, enabled_call/3 |
|
|
|
, enabled_procs/3 |
|
|
|
, enabled_running_procs/3 |
|
|
|
, enabled_send/3 |
|
|
|
, trace/5 |
|
|
|
]). |
|
|
|
|
|
|
|
-on_load(on_load/0). |
|
|
|
on_load() -> |
|
|
|
case code:priv_dir(looking_glass) of |
|
|
|
{error, _} -> |
|
|
|
{error, {load_failed, "Could not determine the looking_glass priv/ directory."}}; |
|
|
|
Path -> |
|
|
|
erlang:load_nif(filename:join(Path, atom_to_list(?MODULE)), 0) |
|
|
|
end. |
|
|
|
SoName = |
|
|
|
case code:priv_dir(?MODULE) of |
|
|
|
{error, _} -> |
|
|
|
case code:which(?MODULE) of |
|
|
|
Filename when is_list(Filename) -> |
|
|
|
filename:join([filename:dirname(Filename), "../priv", "tpTracerNif"]); |
|
|
|
_ -> |
|
|
|
filename:join("../priv", "tpTracerNif") |
|
|
|
end; |
|
|
|
Dir -> |
|
|
|
filename:join(Dir, "tpTracerNif") |
|
|
|
end, |
|
|
|
erlang:load_nif(SoName, 0). |
|
|
|
|
|
|
|
enabled(_, _, _) -> |
|
|
|
erlang:nif_error({not_loaded, ?MODULE}). |
|
|
|