Packages

The Phi Programming Language

Current section

Files

Jump to
phi priv System OS.phi
Raw

priv/System/OS.phi

-----------------------------------------------------------------------------
-- |
-- Module : System.OS
-- 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 System OS module.
--
-----------------------------------------------------------------------------
module System.OS
( findExe
, findExeIn
, getPid
, osName
, osFamily
, runCmd
-- signal
, setSignal
-- * system time
, systemTime
, systemTimeIn
, perfCounter
, perfCounterIn
, version
, Signal(..)
, SigHandler(..)
) where
import Control.Monad (IO)
import Data.Maybe (Maybe)
import Data.Time (TimeUnit, UTCTime)
import Data.Unit (Unit)
import System.FilePath (FilePath)
data Signal = Sighup | Sigquit | Sigabrt | Sigalrm | Sigterm
| Sigusr1 | Sigusr2 | Sigchld | Sigstop | Sigtstp
data SigHandler = SigDefault | SigHandle | SigIgnore
foreign import findExe :: String -> IO (Maybe FilePath)
foreign import findExeIn :: String -> FilePath -> IO (Maybe FilePath)
-- | Get the Pid of the current OS process.
foreign import getPid :: IO Integer
-- | Get OS Name.
foreign import osName :: IO String
-- | Get OS Family.
foreign import osFamily :: IO String
-- | Executes a Command.
foreign import runCmd :: String -> IO String
-- | Enables or disables OS signals.
foreign import setSignal :: Signal -> SigHandler -> IO ()
foreign import systemTime :: IO Integer
foreign import systemTimeIn :: TimeUnit -> IO Integer
foreign import timestamp :: IO UTCTime
foreign import perfCounter :: IO Integer
foreign import perfCounterIn :: TimeUnit -> IO Integer
-- | Get OS Version.
foreign import version :: IO String