1
%% ``The contents of this file are subject to the Erlang Public License,
2
%% Version 1.1, (the "License"); you may not use this file except in
3
%% compliance with the License. You should have received a copy of the
4
%% Erlang Public License along with this software. If not, it can be
5
%% retrieved via the world wide web at http://www.erlang.org/.
7
%% Software distributed under the License is distributed on an "AS IS"
8
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
9
%% the License for the specific language governing rights and limitations
12
%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
13
%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
14
%% AB. All Rights Reserved.''
16
%% $Id: mnesia_kernel_sup.erl,v 1.1 2008/12/17 09:53:38 mikpe Exp $
18
-module(mnesia_kernel_sup).
20
-behaviour(supervisor).
22
-export([start/0, init/1, supervisor_timeout/1]).
24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25
%% top supervisor callback functions
28
supervisor:start_link({local, mnesia_kernel_sup}, ?MODULE, []).
30
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31
%% sub supervisor callback functions
34
ProcLib = [mnesia_monitor, proc_lib],
35
Flags = {one_for_all, 0, timer:hours(24)}, % Trust the top supervisor
36
Workers = [worker_spec(mnesia_monitor, timer:seconds(3), [gen_server]),
37
worker_spec(mnesia_subscr, timer:seconds(3), [gen_server]),
38
worker_spec(mnesia_locker, timer:seconds(3), ProcLib),
39
worker_spec(mnesia_recover, timer:minutes(3), [gen_server]),
40
worker_spec(mnesia_tm, timer:seconds(30), ProcLib),
41
supervisor_spec(mnesia_checkpoint_sup),
42
supervisor_spec(mnesia_snmp_sup),
43
worker_spec(mnesia_controller, timer:seconds(3), [gen_server]),
44
worker_spec(mnesia_late_loader, timer:seconds(3), ProcLib)
46
{ok, {Flags, Workers}}.
48
worker_spec(Name, KillAfter, Modules) ->
49
KA = supervisor_timeout(KillAfter),
50
{Name, {Name, start, []}, permanent, KA, worker, [Name] ++ Modules}.
52
supervisor_spec(Name) ->
53
{Name, {Name, start, []}, permanent, infinity, supervisor,
56
-ifdef(debug_shutdown).
57
supervisor_timeout(_KillAfter) -> timer:hours(24).
59
supervisor_timeout(KillAfter) -> KillAfter.