From cbcac6f0d55907dda2e0c385eba44eac2e7923d2 Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Wed, 19 Mar 2014 11:49:12 -0400 Subject: remove tuple funs from special process documentation Support for tuple funs was removed in R16B but the documentation for special processes, sys, and proc_lib in the OTP Design Principles still showed examples using them, and those examples no longer worked. Fix the examples to use regular functions instead and fix the documentation to reflect the changes. --- system/doc/design_principles/spec_proc.xml | 37 +++++++++++------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/system/doc/design_principles/spec_proc.xml b/system/doc/design_principles/spec_proc.xml index d55427aa10..69bf2e0448 100644 --- a/system/doc/design_principles/spec_proc.xml +++ b/system/doc/design_principles/spec_proc.xml @@ -157,15 +157,15 @@ init(Parent) -> loop(Chs, Parent, Deb) -> receive {From, alloc} -> - Deb2 = sys:handle_debug(Deb, {ch4, write_debug}, + Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3, ch4, {in, alloc, From}), {Ch, Chs2} = alloc(Chs), From ! {ch4, Ch}, - Deb3 = sys:handle_debug(Deb2, {ch4, write_debug}, + Deb3 = sys:handle_debug(Deb2, fun ch4:write_debug/3, ch4, {out, {ch4, Ch}, From}), loop(Chs2, Parent, Deb3); {free, Ch} -> - Deb2 = sys:handle_debug(Deb, {ch4, write_debug}, + Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3, ch4, {in, {free, Ch}}), Chs2 = free(Ch, Chs), loop(Chs2, Parent, Deb2); @@ -185,13 +185,8 @@ system_get_state(Chs) -> {ok, Chs}. system_replace_state(StateFun, Chs) -> - try - NChs = StateFun(Chs), - {ok, NChs, NChs} - catch - _:_ -> - {ok, Chs, Chs} - end. + NChs = StateFun(Chs), + {ok, NChs, NChs}. write_debug(Dev, Event, Name) -> io:format(Dev, "~p event = ~p~n", [Name, Event]). @@ -294,10 +289,10 @@ sys:handle_debug(Deb, Func, Info, Event) => Deb1

Deb is the debug structure.

-

Func is a tuple {Module, Name} (or a fun) and - should specify a (user defined) function used to format +

Func is a fun specifying + a (user defined) function used to format trace output. For each system event, the format function is - called as Module:Name(Dev, Event, Info), where:

+ called as Func(Dev, Event, Info), where:

Dev is the IO device to which the output should @@ -332,15 +327,15 @@ sys:handle_debug(Deb, Func, Info, Event) => Deb1 loop(Chs, Parent, Deb) -> receive {From, alloc} -> - Deb2 = sys:handle_debug(Deb, {ch4, write_debug}, + Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3, ch4, {in, alloc, From}), {Ch, Chs2} = alloc(Chs), From ! {ch4, Ch}, - Deb3 = sys:handle_debug(Deb2, {ch4, write_debug}, + Deb3 = sys:handle_debug(Deb2, fun ch4:write_debug/3, ch4, {out, {ch4, Ch}, From}), loop(Chs2, Parent, Deb3); {free, Ch} -> - Deb2 = sys:handle_debug(Deb, {ch4, write_debug}, + Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3, ch4, {in, {free, Ch}}), Chs2 = free(Ch, Chs), loop(Chs2, Parent, Deb2); @@ -409,13 +404,9 @@ system_get_state(Chs) -> {ok, Chs, Chs}. system_replace_state(StateFun, Chs) -> - try - NChs = StateFun(Chs), - {ok, NChs, NChs} - catch - _:_ -> - {ok, Chs, Chs} - end. + NChs = StateFun(Chs), + {ok, NChs, NChs}. +

If the special process is set to trap exits, note that if the parent process terminates, the expected behavior is to terminate with the same reason:

-- cgit v1.2.3