Packages

The Phi Programming Language

Current section

Files

Jump to
phi lib Control Process Flags.erl
Raw

lib/Control/Process/Flags.erl

%%---------------------------------------------------------------------------
%% |
%% Module : Flags
%% Copyright : (c) 2020-2021 EMQ Technologies Co., Ltd.
%% License : BSD-style (see the LICENSE file)
%%
%% Maintainer : Feng Lee, feng@emqx.io
%% Yang M, yangm@emqx.io
%% Stability : experimental
%% Portability : portable
%%
%% The Process Flag FFI module.
%%
%%---------------------------------------------------------------------------
-module('Flags').
-include("../../Foreign.hrl").
-export([processFlag/1, trapExit/1]).
processFlag({'TrapExit', Bool}) ->
?IO({'TrapExit', erlang:process_flag(trap_exit, Bool)});
processFlag({'ErrorHandler', Module}) ->
?IO({'ErrorHandler', erlang:process_flag(error_handler, Module)});
processFlag({'MinHeapSize', Size}) ->
?IO({'MinHeapSize', erlang:process_flag(min_heap_size, Size)});
processFlag({'MinBinVheapSize', Size}) ->
?IO({'MinBinVheapSize', erlang:process_flag(min_bin_vheap_size, Size)});
processFlag({'MaxHeapSize', Size}) ->
?IO({'MaxHeapSize', erlang:process_flag(max_heap_size, Size)});
processFlag({'MsgQueueData', MQD}) ->
?IO({'MsgQueueData', mqd(erlang:process_flag(message_queue_data, mqd(MQD)))});
processFlag({'Priority', Level}) ->
?IO({'Priority', level(erlang:process_flag(priority, level(Level)))});
processFlag({'SaveCalls', N}) ->
?IO({'SaveCalls', erlang:process_flag(save_calls, N)});
processFlag({'Sensitive', Bool}) ->
?IO({'Sensitive', erlang:process_flag(sensitive, Bool)}).
-spec(trapExit(boolean()) -> boolean()).
trapExit(Flag) -> ?IO(erlang:process_flag(trap_exit, Flag)).
mqd({'OffHeap'}) -> off_heap;
mqd({'OnHeap'}) -> on_heap;
mqd(off_heap) -> {'OffHeap'};
mqd(on_heap) -> {'OnHeap'}.
level({'Low'}) -> low;
level({'Normal'}) -> normal;
level({'High'}) -> high;
level({'Max'}) -> max;
level(low) -> {'Low'};
level(normal) -> {'Normal'};
level(high) -> {'High'};
level(max) -> {'Max'}.