diff options
Diffstat (limited to 'lib/runtime_tools')
22 files changed, 251 insertions, 226 deletions
diff --git a/lib/runtime_tools/c_src/Makefile.in b/lib/runtime_tools/c_src/Makefile.in index 4530a83aee..75b3a98d56 100644 --- a/lib/runtime_tools/c_src/Makefile.in +++ b/lib/runtime_tools/c_src/Makefile.in @@ -36,7 +36,7 @@ CC = $(DED_CC) CFLAGS = $(DED_CFLAGS) -I./ LD = $(DED_LD) SHELL = /bin/sh -LIBS = $(DED_LIBS) +LIBS = $(DED_LIBS) @LIBS@ LDFLAGS += $(DED_LDFLAGS) TRACE_LIBNAME = dyntrace trace_file_drv trace_ip_drv @@ -58,7 +58,7 @@ TYPE_FLAGS = $(CFLAGS) endif endif -ALL_CFLAGS = @DEFS@ $(TYPE_FLAGS) $(TRACE_DRV_INCLUDES) \ +ALL_CFLAGS = @DEFS@ @ERTS_CONFIG_H_IDIR@ $(TYPE_FLAGS) $(TRACE_DRV_INCLUDES) \ -I$(OBJDIR) -I$(ERL_TOP)/erts/emulator/$(TARGET) ROOTDIR = $(ERL_TOP)/lib @@ -75,7 +75,7 @@ RELSYSDIR = $(RELEASE_PATH)/lib/runtime_tools-$(VSN) # Misc Macros # ---------------------------------------------------- -TRACE_LIBS = $(foreach LIB, $(TRACE_LIBNAME), $(LIBDIR)/$(LIB)$(TYPEMARKER).@DED_EXT@) +TRACE_LIBS = $(foreach LIB, $(TRACE_LIBNAME), $(LIBDIR)/$(LIB)$(TYPEMARKER).$(DED_EXT)) # ---------------------------------------------------- # Targets @@ -94,7 +94,7 @@ $(LIBDIR): $(OBJDIR)/%$(TYPEMARKER).o: %.c dyntrace_lttng.h $(V_CC) -c -o $@ $(ALL_CFLAGS) $< -$(LIBDIR)/%$(TYPEMARKER).@DED_EXT@: $(OBJDIR)/%$(TYPEMARKER).o +$(LIBDIR)/%$(TYPEMARKER).$(DED_EXT): $(OBJDIR)/%$(TYPEMARKER).o $(V_LD) $(LDFLAGS) -o $@ $^ $(LIBS) clean: diff --git a/lib/runtime_tools/doc/src/dbg.xml b/lib/runtime_tools/doc/src/dbg.xml index 3262cafefc..e15fc3efe6 100644 --- a/lib/runtime_tools/doc/src/dbg.xml +++ b/lib/runtime_tools/doc/src/dbg.xml @@ -32,7 +32,7 @@ <rev>A</rev> <file>dbg.sgml</file> </header> - <module>dbg</module> + <module since="">dbg</module> <modulesummary>The Text Based Trace Facility</modulesummary> <description> <p>This module implements a text based interface to the @@ -68,7 +68,7 @@ </description> <funcs> <func> - <name>fun2ms(LiteralFun) -> MatchSpec</name> + <name since="">fun2ms(LiteralFun) -> MatchSpec</name> <fsummary>Pseudo function that transforms fun syntax to match_spec.</fsummary> <type> <v>LiteralFun = fun() literal</v> @@ -113,7 +113,7 @@ <p>The imported variables will be replaced by match_spec <c>const</c> expressions, which is consistent with the static scoping for Erlang <c>fun()</c>s. Local or global - function calls can not be in the guard or body of the fun + function calls cannot be in the guard or body of the fun however. Calls to builtin match_spec functions of course is allowed:</p> <pre> @@ -145,14 +145,14 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>h() -> ok </name> + <name since="">h() -> ok </name> <fsummary>Give a list of available help items on standard output.</fsummary> <desc> <p>Gives a list of items for brief online help.</p> </desc> </func> <func> - <name>h(Item) -> ok </name> + <name since="">h(Item) -> ok </name> <fsummary>Give brief help for an item.</fsummary> <type> <v>Item = atom()</v> @@ -163,14 +163,14 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>p(Item) -> {ok, MatchDesc} | {error, term()} </name> + <name since="">p(Item) -> {ok, MatchDesc} | {error, term()} </name> <fsummary>Trace messages to and from Item.</fsummary> <desc> <p>Equivalent to <c>p(Item, [m])</c>.</p> </desc> </func> <func> - <name>p(Item, Flags) -> {ok, MatchDesc} | {error, term()}</name> + <name since="">p(Item, Flags) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Trace Item according to Flags.</fsummary> <type> <v>MatchDesc = [MatchNum]</v> @@ -303,14 +303,14 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>c(Mod, Fun, Args)</name> + <name since="">c(Mod, Fun, Args)</name> <fsummary>Evaluate <c>apply(M,F,Args)</c>with <c>all</c>trace flags set.</fsummary> <desc> <p>Equivalent to <c>c(Mod, Fun, Args, all)</c>.</p> </desc> </func> <func> - <name>c(Mod, Fun, Args, Flags)</name> + <name since="">c(Mod, Fun, Args, Flags)</name> <fsummary>Evaluate <c>apply(M,F,Args)</c>with <c>Flags</c>trace flags set.</fsummary> <desc> <p>Evaluates the expression <c>apply(Mod, Fun, Args)</c> with the trace @@ -319,35 +319,35 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>i() -> ok</name> + <name since="">i() -> ok</name> <fsummary>Display information about all traced processes and ports.</fsummary> <desc> <p>Displays information about all traced processes and ports.</p> </desc> </func> <func> - <name>tp(Module,MatchSpec)</name> + <name since="">tp(Module,MatchSpec)</name> <fsummary>Set pattern for traced global function calls</fsummary> <desc> <p>Same as tp({Module, '_', '_'}, MatchSpec)</p> </desc> </func> <func> - <name>tp(Module,Function,MatchSpec)</name> + <name since="">tp(Module,Function,MatchSpec)</name> <fsummary>Set pattern for traced global function calls</fsummary> <desc> <p>Same as tp({Module, Function, '_'}, MatchSpec)</p> </desc> </func> <func> - <name>tp(Module, Function, Arity, MatchSpec)</name> + <name since="">tp(Module, Function, Arity, MatchSpec)</name> <fsummary>Set pattern for traced global function calls</fsummary> <desc> <p>Same as tp({Module, Function, Arity}, MatchSpec)</p> </desc> </func> <func> - <name>tp({Module, Function, Arity}, MatchSpec) -> {ok, MatchDesc} | {error, term()}</name> + <name since="">tp({Module, Function, Arity}, MatchSpec) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Set pattern for traced global function calls</fsummary> <type> <v>Module = atom() | '_'</v> @@ -410,28 +410,28 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>tpl(Module,MatchSpec)</name> + <name since="">tpl(Module,MatchSpec)</name> <fsummary>Set pattern for traced local (as well as global) function calls</fsummary> <desc> <p>Same as tpl({Module, '_', '_'}, MatchSpec)</p> </desc> </func> <func> - <name>tpl(Module,Function,MatchSpec)</name> + <name since="">tpl(Module,Function,MatchSpec)</name> <fsummary>Set pattern for traced local (as well as global) function calls</fsummary> <desc> <p>Same as tpl({Module, Function, '_'}, MatchSpec)</p> </desc> </func> <func> - <name>tpl(Module, Function, Arity, MatchSpec)</name> + <name since="">tpl(Module, Function, Arity, MatchSpec)</name> <fsummary>Set pattern for traced local (as well as global) function calls</fsummary> <desc> <p>Same as tpl({Module, Function, Arity}, MatchSpec)</p> </desc> </func> <func> - <name>tpl({Module, Function, Arity}, MatchSpec) -> {ok, MatchDesc} | {error, term()}</name> + <name since="">tpl({Module, Function, Arity}, MatchSpec) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Set pattern for traced local (as well as global) function calls</fsummary> <desc> <p>This function works as <seealso marker="#tp-2"><c>tp/2</c></seealso>, but enables @@ -442,7 +442,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ <func> - <name>tpe(Event, MatchSpec) -> {ok, MatchDesc} | {error, term()}</name> + <name since="OTP 19.0">tpe(Event, MatchSpec) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Set pattern for traced event</fsummary> <type> <v>Event = send | 'receive'</v> @@ -484,35 +484,35 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>ctp()</name> + <name since="">ctp()</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctp({'_', '_', '_'})</p> </desc> </func> <func> - <name>ctp(Module)</name> + <name since="">ctp(Module)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctp({Module, '_', '_'})</p> </desc> </func> <func> - <name>ctp(Module, Function)</name> + <name since="">ctp(Module, Function)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctp({Module, Function, '_'})</p> </desc> </func> <func> - <name>ctp(Module, Function, Arity)</name> + <name since="">ctp(Module, Function, Arity)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctp({Module, Function, Arity})</p> </desc> </func> <func> - <name>ctp({Module, Function, Arity}) -> {ok, MatchDesc} | {error, term()}</name> + <name since="">ctp({Module, Function, Arity}) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <type> <v>Module = atom() | '_'</v> @@ -533,35 +533,35 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>ctpl()</name> + <name since="">ctpl()</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpl({'_', '_', '_'})</p> </desc> </func> <func> - <name>ctpl(Module)</name> + <name since="">ctpl(Module)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpl({Module, '_', '_'})</p> </desc> </func> <func> - <name>ctpl(Module, Function)</name> + <name since="">ctpl(Module, Function)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpl({Module, Function, '_'})</p> </desc> </func> <func> - <name>ctpl(Module, Function, Arity)</name> + <name since="">ctpl(Module, Function, Arity)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpl({Module, Function, Arity})</p> </desc> </func> <func> - <name>ctpl({Module, Function, Arity}) -> {ok, MatchDesc} | {error, term()}</name> + <name since="">ctpl({Module, Function, Arity}) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>This function works as <seealso marker="#ctp-1"><c>ctp/1</c></seealso>, but only disables @@ -570,35 +570,35 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>ctpg()</name> + <name since="">ctpg()</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpg({'_', '_', '_'})</p> </desc> </func> <func> - <name>ctpg(Module)</name> + <name since="">ctpg(Module)</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpg({Module, '_', '_'})</p> </desc> </func> <func> - <name>ctpg(Module, Function)</name> + <name since="">ctpg(Module, Function)</name> <fsummary>>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpg({Module, Function, '_'})</p> </desc> </func> <func> - <name>ctpg(Module, Function, Arity)</name> + <name since="">ctpg(Module, Function, Arity)</name> <fsummary>>Clear call trace pattern for the specified functions</fsummary> <desc> <p>Same as ctpg({Module, Function, Arity})</p> </desc> </func> <func> - <name>ctpg({Module, Function, Arity}) -> {ok, MatchDesc} | {error, term()}</name> + <name since="">ctpg({Module, Function, Arity}) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Clear call trace pattern for the specified functions</fsummary> <desc> <p>This function works as <seealso marker="#ctp-1"><c>ctp/1</c></seealso>, but only disables @@ -607,7 +607,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>ctpe(Event) -> {ok, MatchDesc} | {error, term()}</name> + <name since="OTP 19.0">ctpe(Event) -> {ok, MatchDesc} | {error, term()}</name> <fsummary>Clear trace pattern for the specified event</fsummary> <type> <v>Event = send | 'receive'</v> @@ -623,7 +623,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>ltp() -> ok</name> + <name since="">ltp() -> ok</name> <fsummary>List saved and built-in match specifications on the console.</fsummary> <desc> <p>Use this function to recall all match specifications previously @@ -654,7 +654,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>dtp() -> ok</name> + <name since="">dtp() -> ok</name> <fsummary>Delete all saved match specifications.</fsummary> <desc> <p>Use this function to "forget" all match specifications @@ -665,7 +665,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>dtp(N) -> ok</name> + <name since="">dtp(N) -> ok</name> <fsummary>Delete a specific saved match_spec.</fsummary> <type> <v>N = integer()</v> @@ -676,7 +676,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>wtp(Name) -> ok | {error, IOError}</name> + <name since="">wtp(Name) -> ok | {error, IOError}</name> <fsummary>Write all saved and built-in match specifications to a file</fsummary> <type> <v>Name = string()</v> @@ -699,7 +699,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>rtp(Name) -> ok | {error, Error}</name> + <name since="">rtp(Name) -> ok | {error, Error}</name> <fsummary>Read saved match specifications from file.</fsummary> <type> <v>Name = string()</v> @@ -728,7 +728,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>n(Nodename) -> {ok, Nodename} | {error, Reason}</name> + <name since="">n(Nodename) -> {ok, Nodename} | {error, Reason}</name> <fsummary>Add a remote node to the list of traced nodes</fsummary> <type> <v>Nodename = atom()</v> @@ -756,7 +756,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ <c>cant_add_local_node</c> is returned. </p> <p>If a trace port (see <seealso marker="#trace_port-2"><c>trace_port/2</c></seealso>) is - running on the local node, remote nodes can not be traced with + running on the local node, remote nodes cannot be traced with a tracer process. The error reason <c>cant_trace_remote_pid_to_local_port</c> is returned. A trace port can however be started on the remote node with the @@ -767,7 +767,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>cn(Nodename) -> ok</name> + <name since="">cn(Nodename) -> ok</name> <fsummary>Clear a node from the list of traced nodes.</fsummary> <type> <v>Nodename = atom()</v> @@ -782,14 +782,14 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>ln() -> ok</name> + <name since="">ln() -> ok</name> <fsummary>Show the list of traced nodes on the console.</fsummary> <desc> <p>Shows the list of traced nodes on the console.</p> </desc> </func> <func> - <name>tracer() -> {ok, pid()} | {error, already_started}</name> + <name since="">tracer() -> {ok, pid()} | {error, already_started}</name> <fsummary>Start a tracer server that handles trace messages.</fsummary> <desc> <p>This function starts a server on the local node that will @@ -805,7 +805,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>tracer(Type, Data) -> {ok, pid()} | {error, Error}</name> + <name since="">tracer(Type, Data) -> {ok, pid()} | {error, Error}</name> <fsummary>Start a tracer server with additional parameters</fsummary> <type> <v>Type = port | process | module</v> @@ -859,7 +859,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>tracer(Nodename, Type, Data) -> {ok, Nodename} | {error, Reason}</name> + <name since="">tracer(Nodename, Type, Data) -> {ok, Nodename} | {error, Reason}</name> <fsummary>Start a tracer server on given node with additional parameters</fsummary> <type> <v>Nodename = atom()</v> @@ -881,7 +881,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>trace_port(Type, Parameters) -> fun()</name> + <name since="">trace_port(Type, Parameters) -> fun()</name> <fsummary>Create and returns a trace port generating<em>fun</em></fsummary> <type> <v>Type = ip | file</v> @@ -958,28 +958,28 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>flush_trace_port()</name> + <name since="">flush_trace_port()</name> <fsummary>Equivalent to flush_trace_port(node()).</fsummary> <desc> <p>Equivalent to <c>flush_trace_port(node())</c>.</p> </desc> </func> <func> - <name>flush_trace_port(Nodename) -> ok | {error, Reason}</name> + <name since="">flush_trace_port(Nodename) -> ok | {error, Reason}</name> <fsummary>Flush internal data buffers in a trace driver on the given node.</fsummary> <desc> <p>Equivalent to <c>trace_port_control(Nodename,flush)</c>.</p> </desc> </func> <func> - <name>trace_port_control(Operation)</name> + <name since="">trace_port_control(Operation)</name> <fsummary>Equivalent to trace_port_control(node(),Operation).</fsummary> <desc> <p>Equivalent to <c>trace_port_control(node(),Operation)</c>.</p> </desc> </func> <func> - <name>trace_port_control(Nodename,Operation) -> ok | {ok, Result} | {error, Reason}</name> + <name since="">trace_port_control(Nodename,Operation) -> ok | {ok, Result} | {error, Reason}</name> <fsummary>Perform a control operation on the active trace port driver on the given node.</fsummary> <type> <v>Nodename = atom()</v> @@ -1013,7 +1013,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ </desc> </func> <func> - <name>trace_client(Type, Parameters) -> pid()</name> + <name since="">trace_client(Type, Parameters) -> pid()</name> <fsummary>Start a trace client that reads messages created by a trace port driver</fsummary> <type> <v>Type = ip | file | follow_file</v> @@ -1080,7 +1080,7 @@ hello</pre> </desc> </func> <func> - <name>trace_client(Type, Parameters, HandlerSpec) -> pid()</name> + <name since="">trace_client(Type, Parameters, HandlerSpec) -> pid()</name> <fsummary>Start a trace client that reads messages created by a trace port driver, with a user defined handler</fsummary> <type> <v>Type = ip | file | follow_file</v> @@ -1110,7 +1110,7 @@ hello</pre> </desc> </func> <func> - <name>stop_trace_client(Pid) -> ok</name> + <name since="">stop_trace_client(Pid) -> ok</name> <fsummary>Stop a trace client gracefully.</fsummary> <type> <v>Pid = pid()</v> @@ -1123,14 +1123,14 @@ hello</pre> </desc> </func> <func> - <name>get_tracer()</name> + <name since="">get_tracer()</name> <fsummary>Equivalent to get_tracer(node()).</fsummary> <desc> <p>Equivalent to <c>get_tracer(node())</c>.</p> </desc> </func> <func> - <name>get_tracer(Nodename) -> {ok, Tracer}</name> + <name since="">get_tracer(Nodename) -> {ok, Tracer}</name> <fsummary>Return the process or port to which all trace messages are sent.</fsummary> <type> <v>Nodename = atom()</v> @@ -1142,7 +1142,7 @@ hello</pre> </desc> </func> <func> - <name>stop() -> ok</name> + <name since="">stop() -> ok</name> <fsummary>Stop the <c>dbg</c>server and the tracing of all processes.</fsummary> <desc> <p>Stops the <c>dbg</c> server and clears all trace flags for @@ -1153,7 +1153,7 @@ hello</pre> </desc> </func> <func> - <name>stop_clear() -> ok</name> + <name since="">stop_clear() -> ok</name> <fsummary>Stop the <c>dbg</c>server and the tracing of all processes, and clears trace patterns.</fsummary> <desc> <p>Same as stop/0, but also clears all trace patterns on global functions calls.</p> diff --git a/lib/runtime_tools/doc/src/dyntrace.xml b/lib/runtime_tools/doc/src/dyntrace.xml index 0cdcecab68..4935dfcd71 100644 --- a/lib/runtime_tools/doc/src/dyntrace.xml +++ b/lib/runtime_tools/doc/src/dyntrace.xml @@ -32,7 +32,7 @@ <rev>A</rev> <file>dyntrace.xml</file> </header> - <module>dyntrace</module> + <module since="OTP R15B01">dyntrace</module> <modulesummary>Interface to dynamic tracing</modulesummary> <description> <p>This module implements interfaces to dynamic tracing, should such be compiled into the virtual machine. For a standard and/or commercial build, no dynamic tracing is available, in which case none of the functions in this module is usable or give any effect.</p> @@ -47,7 +47,7 @@ </description> <funcs> <func> - <name>available() -> boolean()</name> + <name since="OTP R15B01">available() -> boolean()</name> <fsummary>Check if dynamic tracing is available</fsummary> <desc> <p>This function uses the NIF library to determine if dynamic @@ -59,42 +59,42 @@ </desc> </func> <func> - <name>p() -> true | false | error | badarg</name> + <name since="OTP R15B01">p() -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message only containing the user tag and zeroes/empty strings in all other fields.</p> </desc> </func> <func> - <name>p(integer() | string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer() | string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer or string parameter in the first integer/string field.</p> </desc> </func> <func> - <name>p(integer() | string(), integer() | string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer() | string(), integer() | string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer() or string() parameters as the first fields of respective type. integer() parameters should be put before any string() parameters. I.e. <c>p(1,"Hello")</c> is ok, as is <c>p(1,1)</c> and <c>p("Hello","Again")</c>, but not <c>p("Hello",1)</c>.</p> </desc> </func> <func> - <name>p(integer() | string(), integer() | string(), integer() | string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer() | string(), integer() | string(), integer() | string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer() or string() parameters as the first fields of respective type. integer() parameters should be put before any string() parameters, as in <seealso marker="#p/2">p/2</seealso>.</p> </desc> </func> <func> - <name>p(integer() | string(), integer() | string(), integer() | string(), integer() | string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer() | string(), integer() | string(), integer() | string(), integer() | string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer() or string() parameters as the first fields of respective type. integer() parameters should be put before any string() parameters, as in <seealso marker="#p/2">p/2</seealso>.</p> </desc> </func> <func> - <name>p(integer(), integer() | string(), integer() | string(), integer() | string(), string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer(), integer() | string(), integer() | string(), integer() | string(), string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer() or string() parameters as the first fields of respective type. integer() parameters should be put before any string() parameters, as in <seealso marker="#p/2">p/2</seealso>.</p> @@ -102,7 +102,7 @@ </desc> </func> <func> - <name>p(integer(), integer(), integer() | string(), integer() | string(), string(), string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer(), integer(), integer() | string(), integer() | string(), string(), string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer() or string() parameters as the first fields of respective type. integer() parameters should be put before any string() parameters, as in <seealso marker="#p/2">p/2</seealso>.</p> @@ -110,7 +110,7 @@ </desc> </func> <func> - <name>p(integer(), integer(), integer(), integer() | string(), string(), string(), string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer(), integer(), integer(), integer() | string(), string(), string(), string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing the user tag and the integer() or string() parameters as the first fields of respective type. integer() parameters should be put before any string() parameters, as in <seealso marker="#p/2">p/2</seealso>.</p> @@ -118,14 +118,14 @@ </desc> </func> <func> - <name>p(integer(), integer(), integer(), integer(), string(), string(), string(), string()) -> true | false | error | badarg</name> + <name since="OTP R15B01">p(integer(), integer(), integer(), integer(), string(), string(), string(), string()) -> true | false | error | badarg</name> <fsummary>Trigger the user trace probe.</fsummary> <desc> <p>Calling this function will trigger the "user" trace probe user_trace_i4s4 in the dyntrace NIF module, sending a trace message containing all the integer()'s and string()'s provided, as well as any user tag set in the current process.</p> </desc> </func> <func> - <name>get_tag() -> binary() | undefined</name> + <name since="OTP R15B01">get_tag() -> binary() | undefined</name> <fsummary>Get the user tag set in the process.</fsummary> <desc> <p>This function returns the user tag set in the current @@ -134,7 +134,7 @@ </desc> </func> <func> - <name>get_tag() -> binary() | undefined</name> + <name since="OTP R15B01">get_tag() -> binary() | undefined</name> <fsummary>Get the user tag set in the process or sent to the process.</fsummary> <desc> <p>This function returns the user tag set in the current @@ -151,7 +151,7 @@ </func> <func> - <name>put_tag(Item) -> binary() | undefined </name> + <name since="OTP R15B01">put_tag(Item) -> binary() | undefined </name> <fsummary>Set the user tag of the current process.</fsummary> <type> <v>Item = iodata()</v> @@ -163,7 +163,7 @@ </desc> </func> <func> - <name>spread_tag(boolean()) -> TagData</name> + <name since="OTP R15B01">spread_tag(boolean()) -> TagData</name> <fsummary>Start or stop spreading dynamic trace user tags with the next message.</fsummary> <type> <v>TagData = opaque data that can be used as parameter to <seealso marker="#restore_tag/1">restore_tag/1</seealso></v> @@ -185,7 +185,7 @@ f() -> </desc> </func> <func> - <name>restore_tag(TagData) -> true</name> + <name since="OTP R15B01">restore_tag(TagData) -> true</name> <fsummary>Restore to a previous state of user tag spreading.</fsummary> <type> <v>TagData = opaque data returned by <seealso marker="#spread_tag/1">spread_tag/1</seealso></v> diff --git a/lib/runtime_tools/doc/src/erts_alloc_config.xml b/lib/runtime_tools/doc/src/erts_alloc_config.xml index ffc4ec5285..5bcce1b5e3 100644 --- a/lib/runtime_tools/doc/src/erts_alloc_config.xml +++ b/lib/runtime_tools/doc/src/erts_alloc_config.xml @@ -29,7 +29,7 @@ <rev>1</rev> <file>erts_alloc_config.sgml</file> </header> - <module>erts_alloc_config</module> + <module since="">erts_alloc_config</module> <modulesummary>Configuration tool for erts_alloc</modulesummary> <description> <note> @@ -136,7 +136,7 @@ </description> <funcs> <func> - <name>save_scenario() -> ok | {error, Error}</name> + <name since="">save_scenario() -> ok | {error, Error}</name> <fsummary>Saves information about current runtime scenario</fsummary> <type> <v>Error = term()</v> @@ -154,7 +154,7 @@ </desc> </func> <func> - <name>make_config() -> ok | {error, Error}</name> + <name since="">make_config() -> ok | {error, Error}</name> <fsummary>Creates an erts_alloc configuration</fsummary> <type> <v>Error = term()</v> @@ -165,7 +165,7 @@ </desc> </func> <func> - <name>make_config(FileNameOrIODev) -> ok | {error, Error}</name> + <name since="">make_config(FileNameOrIODev) -> ok | {error, Error}</name> <fsummary>Creates an erts_alloc configuration</fsummary> <type> <v>FileNameOrIODev = string() | io_device()</v> @@ -190,7 +190,7 @@ </desc> </func> <func> - <name>stop() -> ok | {error, Error}</name> + <name since="">stop() -> ok | {error, Error}</name> <fsummary></fsummary> <type> <v>Error = term()</v> diff --git a/lib/runtime_tools/doc/src/msacc.xml b/lib/runtime_tools/doc/src/msacc.xml index 129da3d230..ae089de8d0 100644 --- a/lib/runtime_tools/doc/src/msacc.xml +++ b/lib/runtime_tools/doc/src/msacc.xml @@ -31,7 +31,7 @@ <rev>A</rev> <file>msacc.xml</file> </header> - <module>msacc</module> + <module since="OTP 19.0">msacc</module> <modulesummary>Convenience functions for microstate accounting</modulesummary> <description> <p>This module implements some convenience functions for analyzing @@ -146,7 +146,7 @@ ok </datatypes> <funcs> <func> - <name name="available" arity="0"/> + <name name="available" arity="0" since="OTP 19.0"/> <fsummary>Check if microstate accounting is available</fsummary> <desc> <p>This function checks whether microstate accounting @@ -154,7 +154,7 @@ ok </desc> </func> <func> - <name name="start" arity="0"/> + <name name="start" arity="0" since="OTP 19.0"/> <fsummary>Start microstate accounting.</fsummary> <desc> <p>Start microstate accounting. Returns whether it was @@ -162,7 +162,7 @@ ok </desc> </func> <func> - <name name="start" arity="1"/> + <name name="start" arity="1" since="OTP 19.0"/> <fsummary>Start microstate accounting for a time.</fsummary> <desc> <p>Resets all counters and then starts microstate accounting @@ -170,7 +170,7 @@ ok </desc> </func> <func> - <name name="stop" arity="0"/> + <name name="stop" arity="0" since="OTP 19.0"/> <fsummary>Stop microstate accounting.</fsummary> <desc> <p>Stop microstate accounting. @@ -178,7 +178,7 @@ ok </desc> </func> <func> - <name name="reset" arity="0"/> + <name name="reset" arity="0" since="OTP 19.0"/> <fsummary>Reset microstate accounting counters</fsummary> <desc> <p>Reset microstate accounting counters. @@ -186,7 +186,7 @@ ok </desc> </func> <func> - <name name="print" arity="0"/> + <name name="print" arity="0" since="OTP 19.0"/> <fsummary>Print microstate statistics</fsummary> <desc> <p> @@ -199,7 +199,7 @@ ok </desc> </func> <func> - <name name="print" arity="1"/> + <name name="print" arity="1" since="OTP 19.0"/> <fsummary>Print microstate statistics</fsummary> <desc> <p>Print the given microstate statistics values to stdout. @@ -211,7 +211,7 @@ ok </desc> </func> <func> - <name name="print" arity="2"/> + <name name="print" arity="2" since="OTP 19.0"/> <fsummary>Print microstate statistics</fsummary> <desc> <p>Print the given microstate statistics values to standard out. @@ -234,7 +234,7 @@ ok </desc> </func> <func> - <name name="print" arity="3"/> + <name name="print" arity="3" since="OTP 19.0"/> <fsummary>Print microstate statistics</fsummary> <desc> <p>Print the given microstate statistics values to the given file @@ -243,7 +243,7 @@ ok </desc> </func> <func> - <name name="stats" arity="0"/> + <name name="stats" arity="0" since="OTP 19.0"/> <fsummary></fsummary> <desc> <p>Returns a runtime system independent version of the microstate @@ -254,7 +254,7 @@ ok </desc> </func> <func> - <name name="stats" arity="2" clause_i="1"/> + <name name="stats" arity="2" clause_i="1" since="OTP 19.0"/> <fsummary></fsummary> <desc> <p>Returns the system time for the given microstate statistics values. @@ -269,7 +269,7 @@ ok </desc> </func> <func> - <name name="stats" arity="2" clause_i="2"/> + <name name="stats" arity="2" clause_i="2" since="OTP 19.0"/> <fsummary></fsummary> <desc> <p>Returns fractions of real-time or run-time spent in the various @@ -277,7 +277,7 @@ ok </desc> </func> <func> - <name name="stats" arity="2" clause_i="3"/> + <name name="stats" arity="2" clause_i="3" since="OTP 19.0"/> <fsummary></fsummary> <desc> <p>Returns a list of microstate statistics values where the values @@ -285,7 +285,7 @@ ok </desc> </func> <func> - <name name="to_file" arity="1"/> + <name name="to_file" arity="1" since="OTP 19.0"/> <fsummary></fsummary> <desc> <p>Dumps the current microstate statistics counters to a file that can @@ -294,7 +294,7 @@ ok </desc> </func> <func> - <name name="from_file" arity="1"/> + <name name="from_file" arity="1" since="OTP 19.0"/> <fsummary></fsummary> <desc> <p>Read a file dump produced by <seealso marker="#to_file/1"> diff --git a/lib/runtime_tools/doc/src/notes.xml b/lib/runtime_tools/doc/src/notes.xml index 810bb8207c..1b94c3e6d9 100644 --- a/lib/runtime_tools/doc/src/notes.xml +++ b/lib/runtime_tools/doc/src/notes.xml @@ -32,6 +32,37 @@ <p>This document describes the changes made to the Runtime_Tools application.</p> +<section><title>Runtime_Tools 1.13.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Minor updates to build system necessary due to move of + configuration of <c>crypto</c> application.</p> + <p> + Own Id: OTP-15262 Aux Id: OTP-15129 </p> + </item> + </list> + </section> + +</section> + +<section><title>Runtime_Tools 1.13.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Update of systemtap trace example scripts.</p> + <p> + Own Id: OTP-15670</p> + </item> + </list> + </section> + +</section> + <section><title>Runtime_Tools 1.13.1</title> <section><title>Improvements and New Features</title> diff --git a/lib/runtime_tools/doc/src/scheduler.xml b/lib/runtime_tools/doc/src/scheduler.xml index dd8bf73bae..b033430183 100644 --- a/lib/runtime_tools/doc/src/scheduler.xml +++ b/lib/runtime_tools/doc/src/scheduler.xml @@ -32,7 +32,7 @@ <rev></rev> <file>scheduler.xml</file> </header> - <module>scheduler</module> + <module since="OTP 21.0">scheduler</module> <modulesummary>Measure scheduler utilization</modulesummary> <description> <p>This module contains utility functions for easier measurement and @@ -84,7 +84,7 @@ <funcs> <func> - <name name="sample" arity="0"/> + <name name="sample" arity="0" since="OTP 21.0"/> <fsummary>Get scheduler utilization sample.</fsummary> <desc> <p>Return a scheduler utilization sample for normal and dirty-cpu @@ -93,7 +93,7 @@ </func> <func> - <name name="sample_all" arity="0"/> + <name name="sample_all" arity="0" since="OTP 21.0"/> <fsummary>Get scheduler utilization sample.</fsummary> <desc> <p>Return a scheduler utilization sample for all schedulers, @@ -102,7 +102,7 @@ </func> <func> - <name name="utilization" arity="1" clause_i="1"/> + <name name="utilization" arity="1" clause_i="1" since="OTP 21.0"/> <fsummary>Measure scheduler utilizations during a period of time.</fsummary> <desc> <p>Measure utilization for normal and dirty-cpu schedulers during @@ -111,7 +111,7 @@ </func> <func> - <name name="utilization" arity="1" clause_i="2"/> + <name name="utilization" arity="1" clause_i="2" since="OTP 21.0"/> <fsummary>Measure scheduler utilizations since sample.</fsummary> <desc> <p>Calculate scheduler utilizations for the time interval from when @@ -121,7 +121,7 @@ </func> <func> - <name name="utilization" arity="2"/> + <name name="utilization" arity="2" since="OTP 21.0"/> <fsummary>Measure scheduler utilizations between two samples.</fsummary> <desc> <p>Calculates scheduler utilizations for the time interval between diff --git a/lib/runtime_tools/doc/src/system_information.xml b/lib/runtime_tools/doc/src/system_information.xml index 53dc595e64..a356b5c6f8 100644 --- a/lib/runtime_tools/doc/src/system_information.xml +++ b/lib/runtime_tools/doc/src/system_information.xml @@ -32,14 +32,14 @@ <rev></rev> <file>system_information.xml</file> </header> - <module>system_information</module> + <module since="OTP 17.0">system_information</module> <modulesummary>System Information</modulesummary> <description> <p></p> </description> <funcs> <func> - <name name="sanity_check" arity="0"/> + <name name="sanity_check" arity="0" since="OTP 17.0"/> <fsummary>Perform a sanity check</fsummary> <desc> <p>Performs a sanity check on the system. If no issues @@ -88,7 +88,7 @@ </desc> </func> <func> - <name name="to_file" arity="1"/> + <name name="to_file" arity="1" since="OTP 17.0"/> <fsummary>Write miscellaneous system information to file</fsummary> <desc><p>Writes miscellaneous system information to file. This information will typically be requested by the Erlang/OTP team diff --git a/lib/runtime_tools/examples/dist.systemtap b/lib/runtime_tools/examples/dist.systemtap index bb20d617e1..4102a5243c 100644 --- a/lib/runtime_tools/examples/dist.systemtap +++ b/lib/runtime_tools/examples/dist.systemtap @@ -19,18 +19,18 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("dist-monitor") +probe process("beam.smp").mark("dist-monitor") { printf("monitor: pid %d, who %s, what %s, node %s, type %s, reason %s\n", pid(), @@ -38,38 +38,38 @@ probe process("beam").mark("dist-monitor") user_string($arg5)); } -probe process("beam").mark("dist-port_busy") +probe process("beam.smp").mark("dist-port_busy") { printf("dist port_busy: node %s, port %s, remote_node %s, blocked pid %s\n", user_string($arg1), user_string($arg2), user_string($arg3), user_string($arg4)); - blocked_procs[user_string($arg4)] = timestamp; + blocked_procs[user_string($arg4)] = local_clock_ns(); } -probe process("beam").mark("dist-port_busy") +probe process("beam.smp").mark("dist-port_busy") { printf("dist port_busy: node %s, port %s, remote_node %s, blocked pid %s\n", user_string($arg1), user_string($arg2), user_string($arg3), user_string($arg4)); - blocked_procs[user_string($arg4)] = timestamp; + blocked_procs[user_string($arg4)] = local_clock_ns(); } -probe process("beam").mark("dist-output") +probe process("beam.smp").mark("dist-output") { printf("dist output: node %s, port %s, remote_node %s bytes %d\n", user_string($arg1), user_string($arg2), user_string($arg3), $arg4); } -probe process("beam").mark("dist-outputv") +probe process("beam.smp").mark("dist-outputv") { printf("port outputv: node %s, port %s, remote_node %s bytes %d\n", user_string($arg1), user_string($arg2), user_string($arg3), $arg4); } -probe process("beam").mark("process-scheduled") +probe process("beam.smp").mark("process-scheduled") { pidstr = user_string($arg1); if (pidstr in blocked_procs) { printf("blocked pid %s scheduled now, waited %d microseconds\n", - pidstr, (timestamp - blocked_procs[pidstr]) / 1000); + pidstr, (local_clock_ns() - blocked_procs[pidstr]) / 1000); delete blocked_procs[pidstr]; } } diff --git a/lib/runtime_tools/examples/driver1.systemtap b/lib/runtime_tools/examples/driver1.systemtap index e1ee8ecffc..f5bc28b42d 100644 --- a/lib/runtime_tools/examples/driver1.systemtap +++ b/lib/runtime_tools/examples/driver1.systemtap @@ -19,108 +19,102 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("driver-init") +probe process("beam.smp").mark("driver__init") { printf("driver init name %s major %d minor %d flags %d\n", user_string($arg1), $arg2, $arg3, $arg4); } -probe process("beam").mark("driver-start") +probe process("beam.smp").mark("driver__start") { printf("driver start pid %s driver name %s port %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-stop") +probe process("beam.smp").mark("driver__stop") { printf("driver stop pid %s driver name %s port %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-finish") +probe process("beam.smp").mark("driver__finish") { printf("driver finish driver name %s\n", user_string($arg1)); } -probe process("beam").mark("driver-flush") +probe process("beam.smp").mark("driver__flush") { printf("driver flush pid %s port %s port name %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-output") +probe process("beam.smp").mark("driver__output") { printf("driver output pid %s port %s port name %s bytes %d\n", user_string($arg1), user_string($arg2), user_string($arg3), $arg4); } -probe process("beam").mark("driver-outputv") +probe process("beam.smp").mark("driver__outputv") { printf("driver outputv pid %s port %s port name %s bytes %d\n", user_string($arg1), user_string($arg2), user_string($arg3), $arg4); } -probe process("beam").mark("driver-control") +probe process("beam.smp").mark("driver__control") { printf("driver control pid %s port %s port name %s command %d bytes %d\n", user_string($arg1), user_string($arg2), user_string($arg3), $arg4, $arg5); } -probe process("beam").mark("driver-call") +probe process("beam.smp").mark("driver__call") { printf("driver call pid %s port %s port name %s command %d bytes %d\n", user_string($arg1), user_string($arg2), user_string($arg3), $arg4, $arg5); } -probe process("beam").mark("driver-event") -{ - printf("driver event pid %s port %s port name %s\n", - user_string($arg1), user_string($arg2), user_string($arg3)); -} - -probe process("beam").mark("driver-ready_input") +probe process("beam.smp").mark("driver__ready_input") { printf("driver ready_input pid %s port %s port name %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-ready_output") +probe process("beam.smp").mark("driver__ready_output") { printf("driver ready_output pid %s port %s port name %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-timeout") +probe process("beam.smp").mark("driver__timeout") { printf("driver timeout pid %s port %s port name %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-ready_async") +probe process("beam.smp").mark("driver__ready_async") { printf("driver ready_async pid %s port %s port name %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-process_exit") +probe process("beam.smp").mark("driver__process_exit") { printf("driver process_exit pid %s port %s port name %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("driver-stop_select") +probe process("beam.smp").mark("driver__stop_select") { printf("driver stop_select driver name %s\n", user_string($arg1)); } diff --git a/lib/runtime_tools/examples/function-calls.systemtap b/lib/runtime_tools/examples/function-calls.systemtap index 9c44b2d014..6bb173b3ec 100644 --- a/lib/runtime_tools/examples/function-calls.systemtap +++ b/lib/runtime_tools/examples/function-calls.systemtap @@ -18,51 +18,51 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("local-function-entry") +probe process("beam.smp").mark("local-function-entry") { printf("pid %s enter (local) %s depth %d\n", user_string($arg1), user_string($arg2), $arg3); } -probe process("beam").mark("global-function-entry") +probe process("beam.smp").mark("global-function-entry") { printf("pid %s enter (global) %s depth %d\n", user_string($arg1), user_string($arg2), $arg3); } -probe process("beam").mark("function-return") +probe process("beam.smp").mark("function-return") { printf("pid %s return %s depth %d\n", user_string($arg1), user_string($arg2), $arg3); } -probe process("beam").mark("bif-entry") +probe process("beam.smp").mark("bif-entry") { printf("pid %s BIF entry mfa %s\n", user_string($arg1), user_string($arg2)); } -probe process("beam").mark("bif-return") +probe process("beam.smp").mark("bif-return") { printf("pid %s BIF return mfa %s\n", user_string($arg1), user_string($arg2)); } -probe process("beam").mark("nif-entry") +probe process("beam.smp").mark("nif-entry") { printf("pid %s NIF entry mfa %s\n", user_string($arg1), user_string($arg2)); } -probe process("beam").mark("nif-return") +probe process("beam.smp").mark("nif-return") { printf("pid %s NIF return mfa %s\n", user_string($arg1), user_string($arg2)); } diff --git a/lib/runtime_tools/examples/garbage-collection.systemtap b/lib/runtime_tools/examples/garbage-collection.systemtap index e414eea821..14f0d6851c 100644 --- a/lib/runtime_tools/examples/garbage-collection.systemtap +++ b/lib/runtime_tools/examples/garbage-collection.systemtap @@ -18,33 +18,33 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("gc_major-start") +probe process("beam.smp").mark("gc_major-start") { printf("GC major start pid %s need %d words\n", user_string($arg1), $arg2); } -probe process("beam").mark("gc_minor-start") +probe process("beam.smp").mark("gc_minor-start") { printf("GC minor start pid %s need %d words\n", user_string($arg1), $arg2); } -probe process("beam").mark("gc_major-end") +probe process("beam.smp").mark("gc_major-end") { printf("GC major end pid %s reclaimed %d words\n", user_string($arg1), $arg2); } -probe process("beam").mark("gc_minor-start") +probe process("beam.smp").mark("gc_minor-start") { printf("GC minor end pid %s reclaimed %d words\n", user_string($arg1), $arg2); } diff --git a/lib/runtime_tools/examples/memory1.systemtap b/lib/runtime_tools/examples/memory1.systemtap index 04df4d64c4..2fdc5a796c 100644 --- a/lib/runtime_tools/examples/memory1.systemtap +++ b/lib/runtime_tools/examples/memory1.systemtap @@ -18,34 +18,34 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("copy-struct") +probe process("beam.smp").mark("copy-struct") { printf("copy_struct %d bytes\n", $arg1); } -probe process("beam").mark("copy-object") +probe process("beam.smp").mark("copy-object") { printf("copy_object pid %s %d bytes\n", user_string($arg1), $arg2); } -probe process("beam").mark("process-heap_grow") +probe process("beam.smp").mark("process-heap_grow") { printf("proc heap grow pid %s %d -> %d bytes\n", user_string($arg1), $arg2, $arg3); } -probe process("beam").mark("process-heap_shrink") +probe process("beam.smp").mark("process-heap_shrink") { printf("proc heap shrink pid %s %d -> %d bytes\n", user_string($arg1), $arg2, $arg3); diff --git a/lib/runtime_tools/examples/messages.systemtap b/lib/runtime_tools/examples/messages.systemtap index f2ef56a22b..49b7f46d69 100644 --- a/lib/runtime_tools/examples/messages.systemtap +++ b/lib/runtime_tools/examples/messages.systemtap @@ -18,15 +18,15 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ probe begin @@ -38,7 +38,7 @@ probe begin printf("\n"); } -probe process("beam").mark("message-send") +probe process("beam.smp").mark("message-send") { if ($arg4 == 0 && $arg5 == 0 && $arg6 == 0) { printf("send: %s -> %s: %d words\n", @@ -51,7 +51,7 @@ probe process("beam").mark("message-send") } } -probe process("beam").mark("message-send-remote") +probe process("beam.smp").mark("message-send-remote") { if ($arg5 == 0 && $arg6 == 0 && $arg7 == 0) { printf("send : %s -> %s %s: %d words\n", @@ -64,7 +64,7 @@ probe process("beam").mark("message-send-remote") } } -probe process("beam").mark("message-queued") +probe process("beam.smp").mark("message-queued") { if ($arg4 == 0 && $arg5 == 0 && $arg6 == 0) { printf("queued: %s: %d words, queue len %d\n", user_string($arg1), $arg2, $arg3); @@ -75,7 +75,7 @@ probe process("beam").mark("message-queued") } } -probe process("beam").mark("message-receive") +probe process("beam.smp").mark("message-receive") { if ($arg4 == 0 && $arg5 == 0 && $arg6 == 0) { printf("receive: %s: %d words, queue len %d\n", diff --git a/lib/runtime_tools/examples/port1.systemtap b/lib/runtime_tools/examples/port1.systemtap index f7ce03a65e..235581b0b1 100644 --- a/lib/runtime_tools/examples/port1.systemtap +++ b/lib/runtime_tools/examples/port1.systemtap @@ -18,15 +18,15 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ probe begin @@ -96,19 +96,19 @@ probe begin driver_map["udp_inet", 62] = "BINDX"; } -probe process("beam").mark("port-open") +probe process("beam.smp").mark("port-open") { printf("port open pid %s port name %s port %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("port-command") +probe process("beam.smp").mark("port-command") { printf("port command pid %s port %s port name %s command type %s\n", user_string($arg1), user_string($arg2), user_string($arg3), user_string($arg4)); } -probe process("beam").mark("port-control") +probe process("beam.smp").mark("port-control") { cmd = driver_map[user_string($arg3), $arg4]; cmd_str = (cmd == "") ? "unknown" : cmd; @@ -118,36 +118,36 @@ probe process("beam").mark("port-control") /* port-exit is fired as a result of port_close() or exit signal */ -probe process("beam").mark("port-exit") +probe process("beam.smp").mark("port-exit") { printf("port exit pid %s port %s port name %s reason %s\n", user_string($arg1), user_string($arg2), user_string($arg3), user_string($arg4)); } -probe process("beam").mark("port-connect") +probe process("beam.smp").mark("port-connect") { printf("port connect pid %s port %s port name %s new pid %s\n", user_string($arg1), user_string($arg2), user_string($arg3), user_string($arg4)); } -probe process("beam").mark("port-busy") +probe process("beam.smp").mark("port-busy") { printf("port busy %s\n", user_string($arg1)); } -probe process("beam").mark("port-not_busy") +probe process("beam.smp").mark("port-not_busy") { printf("port not busy %s\n", user_string($arg1)); } -probe process("beam").mark("aio_pool-add") +probe process("beam.smp").mark("aio_pool-add") { printf("async I/O pool add thread %d queue len %d\n", $arg1, $arg2); } -probe process("beam").mark("aio_pool-get") +probe process("beam.smp").mark("aio_pool-get") { printf("async I/O pool get thread %d queue len %d\n", $arg1, $arg2); } -global driver_map;
\ No newline at end of file +global driver_map; diff --git a/lib/runtime_tools/examples/process-scheduling.systemtap b/lib/runtime_tools/examples/process-scheduling.systemtap index b0b74257b3..231c589f64 100644 --- a/lib/runtime_tools/examples/process-scheduling.systemtap +++ b/lib/runtime_tools/examples/process-scheduling.systemtap @@ -18,28 +18,28 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("process-scheduled") +probe process("beam.smp").mark("process-scheduled") { printf(" Schedule pid %s mfa %s\n", user_string($arg1), user_string($arg2)); } -probe process("beam").mark("process-unscheduled") +probe process("beam.smp").mark("process-unscheduled") { printf("Unschedule pid %s\n", user_string($arg1)); } -probe process("beam").mark("process-hibernate") +probe process("beam.smp").mark("process-hibernate") { printf(" Hibernate pid %s resume mfa %s\n", user_string($arg1), user_string($arg2)); diff --git a/lib/runtime_tools/examples/spawn-exit.systemtap b/lib/runtime_tools/examples/spawn-exit.systemtap index 89bca14496..a7b4a0a3ea 100644 --- a/lib/runtime_tools/examples/spawn-exit.systemtap +++ b/lib/runtime_tools/examples/spawn-exit.systemtap @@ -18,34 +18,34 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("process-spawn") +probe process("beam.smp").mark("process-spawn") { printf("pid %s mfa %s\n", user_string($arg1), user_string($arg2)); } -probe process("beam").mark("process-exit") +probe process("beam.smp").mark("process-exit") { printf("pid %s reason %s\n", user_string($arg1), user_string($arg2)); } -probe process("beam").mark("process-exit_signal") +probe process("beam.smp").mark("process-exit_signal") { printf("sender %s -> pid %s reason %s\n", user_string($arg1), user_string($arg2), user_string($arg3)); } -probe process("beam").mark("process-exit_signal-remote") +probe process("beam.smp").mark("process-exit_signal-remote") { printf("sender %s -> node %s pid %s reason %s\n", user_string($arg1), user_string($arg2), user_string($arg3), user_string($arg4)); diff --git a/lib/runtime_tools/examples/user-probe-n.systemtap b/lib/runtime_tools/examples/user-probe-n.systemtap index 25f7503283..8a0a89c931 100644 --- a/lib/runtime_tools/examples/user-probe-n.systemtap +++ b/lib/runtime_tools/examples/user-probe-n.systemtap @@ -18,18 +18,19 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("user_trace-n0") + +probe process("beam.smp").mark("user_trace-n0") { printf("probe n0: %s %s %d %d %d %d '%s' '%s' '%s' '%s'\n", user_string($arg1), @@ -41,7 +42,7 @@ probe process("beam").mark("user_trace-n0") $arg9 == NULL ? "" : user_string($arg9)); } -probe process("beam").mark("user_trace-n1") +probe process("beam.smp").mark("user_trace-n1") { printf("probe n1: %s %s %d %d %d %d '%s' '%s' '%s' '%s'\n", user_string($arg1), diff --git a/lib/runtime_tools/examples/user-probe.systemtap b/lib/runtime_tools/examples/user-probe.systemtap index 1777476e54..ce9dde30f8 100644 --- a/lib/runtime_tools/examples/user-probe.systemtap +++ b/lib/runtime_tools/examples/user-probe.systemtap @@ -18,23 +18,23 @@ * %CopyrightEnd% */ /* - * Note: This file assumes that you're using the non-SMP-enabled Erlang - * virtual machine, "beam". The SMP-enabled VM is called "beam.smp". + * Note: This file assumes that you're using the SMP-enabled Erlang + * virtual machine, "beam.smp". * Note that other variations of the virtual machine also have * different names, e.g. the debug build of the SMP-enabled VM * is "beam.debug.smp". * * To use a different virtual machine, replace each instance of - * "beam" with "beam.smp" or the VM name appropriate to your - * environment. + * "beam.smp" with "beam.debug.smp" or the VM name appropriate + * to your environment. */ -probe process("beam").mark("user_trace-s1") +probe process("beam.smp").mark("user_trace-s1") { printf("%s\n", user_string($arg1)); } -probe process("beam").mark("user_trace-i4s4") +probe process("beam.smp").mark("user_trace-i4s4") { printf("%s %s %d %d %d %d '%s' '%s' '%s' '%s'\n", user_string($arg1), diff --git a/lib/runtime_tools/src/system_information.erl b/lib/runtime_tools/src/system_information.erl index 136ee55b54..8f7bfa195b 100644 --- a/lib/runtime_tools/src/system_information.erl +++ b/lib/runtime_tools/src/system_information.erl @@ -400,7 +400,6 @@ os_getenv_erts_specific() -> "ERL_MALLOC_LIB", "ERL_MAX_PORTS", "ERL_MAX_ETS_TABLES", - "ERL_NO_VFORK", "ERL_NO_KERNEL_POLL", "ERL_THREAD_POOL_SIZE", "ERLC_EMULATOR", diff --git a/lib/runtime_tools/test/system_information_SUITE_data/information_test_report.dat b/lib/runtime_tools/test/system_information_SUITE_data/information_test_report.dat index a0e3806981..a9399a5d53 100644 --- a/lib/runtime_tools/test/system_information_SUITE_data/information_test_report.dat +++ b/lib/runtime_tools/test/system_information_SUITE_data/information_test_report.dat @@ -6829,7 +6829,7 @@ {native,false}, {compiler,"4.9.1"}, {md5,"55bb9fddcdf820938be2efee15eccd82"}]}, - {otp_ring0, + {erl_init, [{loaded,true}, {native,false}, {compiler,"4.9.1"}, diff --git a/lib/runtime_tools/vsn.mk b/lib/runtime_tools/vsn.mk index aa3d702997..3f38574be4 100644 --- a/lib/runtime_tools/vsn.mk +++ b/lib/runtime_tools/vsn.mk @@ -1 +1 @@ -RUNTIME_TOOLS_VSN = 1.13.1 +RUNTIME_TOOLS_VSN = 1.13.3 |