Packages

The Phi Programming Language

Current section

Files

Jump to
phi lib Control Process.erl
Raw

lib/Control/Process.erl

%%---------------------------------------------------------------------------
%% |
%% Module : Process
%% 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 FFI module.
%%
%%---------------------------------------------------------------------------
-module('Process').
-include("../Foreign.hrl").
-compile(no_auto_import).
-export([ send/2
, link/1
, unlink/1
, monitor/1
, demonitor/1
, demonitorFlush/1
, register/2
, unregister/1
, whereis/1
, setGroupLeader/2
, exitProc/2
, killProc/1
, resume/1
, suspend/1
, yield/0
]).
-import('Maybe', ['maybe'/1]).
send(Pid, Msg) ->
?IO(ok(erlang:send(Pid, Msg))).
link(Pid) ->
?IO(ok(erlang:link(Pid))).
unlink(Pid) ->
?IO(ok(erlang:unlink(Pid))).
monitor(Pid) ->
?IO(erlang:monitor(process, Pid)).
demonitor(Ref) ->
?IO(ok(erlang:demonitor(Ref))).
demonitorFlush(Ref) ->
?IO(ok(erlang:demonitor(Ref, [flush]))).
register(Name, Pid) ->
?IO(ok(erlang:register(Name, Pid))).
unregister(Name) ->
?IO(ok(erlang:unregister(Name))).
whereis(Name) ->
?IO('maybe'(erlang:whereis(Name))).
setGroupLeader(LeaderPid, Pid) ->
?IO(ok(erlang:group_leader(LeaderPid, Pid))).
exitProc(Pid, Reason) ->
?IO(ok(erlang:exit(Pid, Reason))).
killProc(Pid) ->
?IO(ok(erlang:exit(Pid, kill))).
resume(Pid) ->
?IO(ok(erlang:resume_process(Pid))).
suspend(Pid) ->
?IO(ok(erlang:suspend_process(Pid))).
yield() -> ?IO(ok(erlang:yield())).
-compile({inline, [ok/1]}).
ok(_) -> {ok}.