defmodule QuickBEAM.NodeOS do
@moduledoc false
@spec platform([]) :: String.t()
def platform([]) do
QuickBEAM.NodeProcess.platform([])
end
@spec arch([]) :: String.t()
def arch([]) do
QuickBEAM.NodeProcess.arch([])
end
@spec hostname([]) :: String.t()
def hostname([]) do
{:ok, name} = :inet.gethostname()
List.to_string(name)
end
@spec release([]) :: String.t()
def release([]) do
:erlang.system_info(:system_version)
|> List.to_string()
|> String.trim()
end
@spec homedir([]) :: String.t()
def homedir([]) do
System.user_home() || "/tmp"
end
@spec tmpdir([]) :: String.t()
def tmpdir([]) do
System.tmp_dir() || "/tmp"
end
@spec cpu_count([]) :: pos_integer()
def cpu_count([]) do
System.schedulers_online()
end
@spec totalmem([]) :: non_neg_integer()
def totalmem([]) do
:erlang.memory(:total)
end
@spec freemem([]) :: integer()
def freemem([]) do
:erlang.memory(:total) - :erlang.memory(:processes_used) - :erlang.memory(:system)
end
@spec uptime([]) :: non_neg_integer()
def uptime([]) do
:erlang.statistics(:wall_clock) |> elem(0) |> div(1000)
end
end