summaryrefslogtreecommitdiffstats
path: root/video_in_hal/systemservice/interface_unified/library/include/system_service/ss_system_process.h
diff options
context:
space:
mode:
Diffstat (limited to 'video_in_hal/systemservice/interface_unified/library/include/system_service/ss_system_process.h')
-rwxr-xr-xvideo_in_hal/systemservice/interface_unified/library/include/system_service/ss_system_process.h1118
1 files changed, 0 insertions, 1118 deletions
diff --git a/video_in_hal/systemservice/interface_unified/library/include/system_service/ss_system_process.h b/video_in_hal/systemservice/interface_unified/library/include/system_service/ss_system_process.h
deleted file mode 100755
index a4ae743..0000000
--- a/video_in_hal/systemservice/interface_unified/library/include/system_service/ss_system_process.h
+++ /dev/null
@@ -1,1118 +0,0 @@
-/*
- * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-///////////////////////////////////////////////////////////////////////////////
-/// \ingroup tag_SystemServicesIf
-/// \brief This file supports the System Manager OS process abstraction.
-///
-///////////////////////////////////////////////////////////////////////////////
-/**
- * @file ss_system_process.h
- */
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup system_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup interface_unified
- * @ingroup system_service
- * @{
- */
-#ifndef __Process_H__ // NOLINT (build/header_guard)
-#define __Process_H__
-
-#include <spawn.h>
-#include <native_service/frameworkunified_types.h>
-#include <native_service/cl_process.h>
-#include <system_service/ss_system_types.h>
-#include <signal.h>
-#include <vector>
-#include <string>
-#include <map>
-
-const long lProcess_VALIDATION_VALUE = 2198645; // NOLINT (runtime/int)
-// Used to define a unique value that represents this class.
-// This value is stored in the object when the object is created,
-// and cleared when the object is destroyed.
-
-const int iProcess_DEFAULT_PROCESS_PRIORITY = 10;
-// This is the default process priority that all new processes will use.
-
-const int iProcess_MAXIMUM_PROCESS_PRIORITY = 60;
-// This is the maximum priority a process can have
-
-const long iProcess_DEFAULT_PROCESS_FLAGS = POSIX_SPAWN_SETSCHEDULER // NOLINT (runtime/int)
- | POSIX_SPAWN_SETSCHEDPARAM;
-
-// This flag field is a bit wise OR of spawning options to use when a process
-// is created.
-
-const int iProcess_MAXIMUM_NUMBER_OF_PROCESS_ARGUMENTS = 25;
-// This is the maximum number of command line (i.e. argv[]) arguments we can
-// send to a process. This includes; exectuable file name + process arguments + NULL
-
-const int iProcess_MAXIMUM_PROCESS_NAME_LENGTH = 32;
-// This is the maximum number of characters that a process name can be in bytes.
-
-class Process;
-
-typedef std::map<SS_String, Process *> ProcessMap;
-
-/**
- * @class TimerCtrl
- * \~english @brief OS process
- * \~english @par Brief Introduction
- * This class is the System Manager OS process abstraction.
- *
- */
-class Process {
- public:
- enum eProcessLoadMode {
- WAIT, // The invoked program is loaded into available memory, is executed,
- // and then the original program resumes execution.
- NOWAIT, // Causes the current program to execute concurrently with the new child process.
- };
-
- enum eProcessSchedulingPolicy {
- FIFO, // A fixed priority scheduler in which the highest ready process runs until it
- // blocks or is preempted by a higher priority process.
- ROUND_ROBIN, // The same as FIFO, except processes at the same priority level time-slice.
- OTHER // A general time sharing scheduler in which a process decays in priority if it
- // consumes too much processor before blocking. It reverts to its default priority
- // when it blocks. Should it fail to run over a 2 second period and it has decayed
- // then it's boosted one priority level up to a maximum of its default priority.
- };
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup Process
- /// \~english @par Summary
- /// - Default Constructor, called when the class is instantiated.
- /// \~english @param [in] - cpu_assign
- /// - Assignment information of CPU.
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - initialize all var
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - initialize all var in class as default value
- /// \~english @see ~Process
- ////////////////////////////////////////////////////////////////////////////////////
- Process(int cpu_assign = 0x0);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup Process
- /// \~english @par Summary
- /// - Copy Constructor
- /// \~english @param [in] - p_rhs_i
- /// - Process - Reference to a Process that you want to copy.
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Used to create an object and copy another object to the new object.
- /// \~english @see ~Process
- ////////////////////////////////////////////////////////////////////////////////////
- Process(const Process& p_rhs_i);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup ~Process
- /// \~english @par Summary
- /// - Destructor function
- /// \~english @param None
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - set m_lValidationTag with 0
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Destructor, called when the object is destroyed.\n
- /// set m_lValidationTag with 0 and kill process.
- /// \~english @see Process
- ////////////////////////////////////////////////////////////////////////////////////
- virtual ~Process();
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup operator=
- /// \~english @par Summary
- /// - Assignment Operator
- /// \~english @param [in]
- /// \~english @retval Process - New Process object
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Assignment Operator, called when one object is assigned to another object.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- Process& operator=(const Process& p_rhs_i);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup GetProcessId
- /// \~english @par Summary
- /// - get process id
- /// \~english @param None
- /// \~english @retval process pid - the process pid of the process running.
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - This method will return to the caller the PosixBasedOS001 Specific Process ID.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- int const GetProcessId(void) {
- return static_cast<int>(m_tProcessId);
- }
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SetCallingArgumentList
- /// \~english @par Summary
- /// - This method will set the calling argument list that this object represents
- /// \~english @param [in] p_pcArgv_i
- /// - const char *[] - Pointer to array of null terminated parameter list.
- /// \~english @param [in] p_iArgc_i
- /// - const int - - Number of arguments in the array passed.
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - put the new arguments into m_strlstArgv
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Set the executable filename first. This is always the 1st argument
- /// - in the argument list. Then set the argument list for the process
- /// - which is held in m_strlstArgv.
- /// - First make sure that the argument list is empty.
- /// - Once empty, put the new arguments into the list
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void SetCallingArgumentList(const char *p_pcArgv_i[], const int p_iArgc_i);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SetCallingArgumentList
- /// \~english @par Summary
- /// - This method will set the calling argument list that this object represents.
- /// \~english @param [in] p_strlstParameters_i
- /// - const StringList& - String list of arguments that will be used to start.
- /// \~english @retval None.
- /// \~english @par Preconditions
- /// - no preconditions.
- /// \~english @par Change of the internal state
- /// - set m_strlstArgv with p_strlstParameters_i.
- /// \~english @par Causes of failures
- /// - None.
- /// \~english @par Classification
- /// - Public.
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - if p_strlstParameters_i is not empty,then clear m_strlstArgv \n
- /// - and set m_strlstArgv with p_strlstParameters_i.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void SetCallingArgumentList(const StringList& p_strlstParameters_i);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup GetExecutableFileName
-/// \~english @par Summary
-/// - Get executable file name
-/// \~english @param None
-/// \~english @retval Pointer
-/// - Points to SS_String object that holds the path and executable file name for this process
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - None
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will return a pointer to the executable filename that this object represents
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- const char * const GetExecutableFileName() {
- return m_strFile.c_str();
- }
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup GetProcessReturnCode
- /// \~english @par Summary
- /// - This function will return the processes exit/return code.
- /// \~english @param None
- /// \~english @retval process exit code - Code for the last process to execute
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - set m_iReturnCode with WEXITSTATUS(iProcessReturn)
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - This function will return the processes exit/return code.\n
- /// This is not the value of ERRNO as returned by GetLastPosixBasedOS001ErrorCode().
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- int GetProcessReturnCode(void);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SetSchedulingPolicy
- /// \~english @par Summary
- /// - This method will change the scheduling policy for the process this object represents.
- /// \~english @param [in] p_eSchedulingPolicy_i
- /// - const eProcessSchedulingPolicy - Scheduling Policy for this process
- /// \~english @par
- /// - eProcessSchedulingPolicy
- /// \~english @code
- /// - enum eProcessSchedulingPolicy {
- /// FIFO, A fixed priority scheduler in which the highest ready process runs until it\n
- /// blocks or is preempted by a higher priority process.
- /// ROUND_ROBIN, The same as FIFO, except processes at the same priority level time-slice.
- /// OTHER A general time sharing scheduler in which a process decays in priority if it\n
- /// consumes too much processor before blocking. It reverts to its default priority\n
- /// when it blocks. Should it fail to run over a 2 second period and it has decayed\n
- /// then it's boosted one priority level up to a maximum of its default priority.
- /// };
- /// @endcode
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// -If the result of function is not 0,then set m_iErrorCode with errno
- /// - else set m_iErrorCode with 0.
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Attempt to change the scheduling policy for the process that this object
- /// represents. If the change fails, restore the previous settings.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void SetSchedulingPolicy(
- const eProcessSchedulingPolicy p_eSchedulingPolicy_i);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup GetSchedulingPolicy
-/// \~english @par Summary
-/// - Get currently configured scheduling policy
-/// \~english @param None
-/// \~english @retval FIFO - A fixed priority scheduler in which the highest ready process runs until it\n
-/// blocks or is preempted by a higher priority process.
-/// \~english @retval ROUND_ROBIN - The same as FIFO, except processes at the same priority level time-slice.
-/// \~english @retval OTHER - A general time sharing scheduler in which a process decays in priority if it\n
-/// consumes too much processor before blocking. It reverts to its default priority\n
-/// when it blocks. Should it fail to run over a 2 second period and it has decayed\n
-/// then it's boosted one priority level up to a maximum of its default priority.
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - If the result of calling function sched_getscheduler(m_tProcessId) is -1
-/// then set m_iErrorCode with errno
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will return to the caller the currently configured process scheduling policy.
-/// If the result of calling function sched_getscheduler(m_tProcessId) is -1,
-/// then return ROUND_ROBIN.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- eProcessSchedulingPolicy const GetSchedulingPolicy(void);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SetPriority
- /// \~english @par Summary
- /// - This method will change the priority for the process this object represents.
- /// \~english @param [in] p_iPriority_i
- /// - int - Priority of the process
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - If the result of function sched_setparam(m_tProcessId, &cur_sch_params)\n
- /// is -1,then set m_iErrorCode with errno, else set m_iErrorCode with 0.
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Using p_iPriority_i to change the priority for the process\n
- /// this object represents,if the result of function \n
- /// sched_setparam(m_tProcessId, &cur_sch_params) is -1
- /// m_iErrorCode will be seted with errno,else be seted with 0
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void SetPriority(const int p_iPriority_i);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SetPriority Notice:Can't find the body of this function
- /// \~english @par Summary
- /// - This method will change the priority for the specified process ID.
- /// \~english @param [in] p_iPid_i
- /// - pid_t - PID of the process to change the priority
- /// \~english @param [in] p_iPriority_i
- /// - int - Priority of the process
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// -
- /// \~english @par Causes of failures
- /// -
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// -none
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void SetPriority(const pid_t p_iPid_i, const int p_iPriority_i);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup IncreasePriorityByOne
- /// \~english @par Summary
- /// - This method will increase the priority for the process this\n
- /// object represents by one.
- /// \~english @param None
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Retrieve the current priority of the process. Check to see if already at max.\n
- /// If so just return. Otherwise increase by one and set the priority...
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void IncreasePriorityByOne(void);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup DecreasePriorityByOne
- /// \~english @par Summary
- /// - This method will decrease the priority for the process this object represents by one.
- /// \~english @param None
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no precondition
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - Retrieve the current priority of the process. Check to see if already at minimum.
- /// If so just return. Otherwise decrease by one and set the priority...
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void DecreasePriorityByOne(void);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup GetPriority
- /// \~english @par Summary
- /// - This method will return to the caller the currently configured process priority.
- /// \~english @param None
- /// \~english @retval int priority - process priority
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - If the result of function sched_getparam(m_tProcessId, &cur_sch_params) is less than -1,\n
- /// then m_iErrorCode will be seted with errno.
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - If the result of function sched_getparam(m_tProcessId, &cur_sch_params)\n
- /// is less than -1,will be return -1,else return Currently configured process priority.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- int const GetPriority(void);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SetProcessName
- /// \~english @par Summary
- /// - This method will set this objects process name member variable to the provided string value.
- /// \~english @param [in] p_strProcessName_i
- /// - SS_String - Process Name to set the m_strProcessName member variable to
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - Using p_strProcessName_i to set m_strProcessName
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - This method will set this objects process name member variable to the provided string value.\n
- /// If the user of this object wishes to register the name with PosixBasedOS001 OS,\n
- /// the AttachName() method should be called.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void SetProcessName(const SS_String& p_strProcessName_i);
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup GetProcessName
- /// \~english @par Summary
- /// - Get process name
- /// \~english @param None
- /// \~english @retval SS_String - Process Name
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - This method will return to the caller the registered name of this process.\n
- /// been registered with the OS, a NULL string will be returned. If a name has not
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- SS_String GetProcessName(void) const {
- return m_strProcessName;
- }
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup CreateProcess
- /// \~english @par Summary
- /// - This method will create a process with the executable provided and \n
- /// mode as a calling parameter.The caller can also provide a list of arguments \n
- /// that will be provided to the executable at startup.
- /// \~english @param [in] p_strFile_i
- /// - SS_String - Path and Filename of executable to create process for
- /// \~english @param [in] p_strlstArgv_i
- /// - StringList - List of ARGV values for new process
- /// \~english @param [in] p_eMode_i
- /// - eProcessLoadMode - Mode to create and load new process
- /// \~english @param [in] p_strProcessName_i
- /// - SS_String - This is the name that will be registered to the OS for this process
- /// \~english @param [in] p_eSchedulingPolicy_i
- /// - eProcessSchedulingPolicy
- /// \~english @param [in] p_iPriority_i
- /// - int - Priority for this process
- /// \~english @param [in] unix_user_name
- /// - char* - unix user name
- /// \~english @param [in] p_lSpawnFlags_i
- /// - long - Spawning flags. These are PosixBasedOS001 specific....
- /// \~english @par
- /// eProcessLoadMode enum
- /// \~english @code
- /// - enum eProcessLoadMode {
- /// WAIT, //The invoked program is loaded into available memory, is executed,
- /// //and then the original program resumes execution.
- /// NOWAIT, // Causes the current program to execute concurrently with the new child process.
- /// };
- /// @endcode
- /// \~english @par
- /// eProcessSchedulingPolicy enum
- /// \~english @code
- /// - enum eProcessSchedulingPolicy {
- /// FIFO, // A fixed priority scheduler in which the highest ready process runs until it
- /// // blocks or is preempted by a higher priority process.
- /// ROUND_ROBIN, // The same as FIFO, except processes at the same priority level time-slice.
- /// OTHER // A general time sharing scheduler in which a process decays in priority if it
- /// // consumes too much processor before blocking. It reverts to its default priority
- /// // when it blocks. Should it fail to run over a 2 second period and it has decayed
- /// // then it's boosted one priority level up to a maximum of its default priority.
- /// };
- /// @endcode
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - set m_iErrorCode with 0
- /// set m_iReturnCode with 0
- /// set m_eProcessLoadMode with p_eMode_i;
- /// set m_strFile with p_strFile_i;
- /// set m_strProcessName with p_strProcessName_i;
- /// use the result of function CL_ProcessCreate() to set m_tProcessId
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// -This method will create a PosixBasedOS001 process with the executable provided\n
- /// and mode as a calling parameter.The caller can also provide a list of arguments\n
- /// that will be provided to the executable at startup.The calling p_strProcessName \m
- /// parameter is a textual name that will be associated with the newly created process\n
- /// by the OS. The process state information will be maintained by this object.\n
- /// Upon successful creation of the process, the scheduling policy and priority\n
- /// of the process will be set to the provided values. The user can change these\n
- /// values through the SetSchedulingPolicy() and SetPriority() method calls.\n
- /// Using unix_user_name to get uid and gid,set uid and gid when calling\n
- /// CL_ProcessCreateAttrSetUid() and CL_ProcessCreateAttrSetGid\n
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const StringList& p_strlstArgv_i, // List of ARGV values for new process
- const eProcessLoadMode p_eMode_i, // Mode to create and load new process
- const SS_String& p_strProcessName_i, // This is the name that will be registered to the OS for this process
- const eProcessSchedulingPolicy p_eSchedulingPolicy_i, // Scheduling Policy for this process
- const int p_iPriority_i, // Priority for this process
- const char* unix_user_name, const long p_lSpawnFlags_i); // Spawning flags. These are PosixBasedOS001 specific.... // NOLINT (runtime/int)
-
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup CreateProcess
- /// \~english @par Summary
- /// - This method will create a PosixBasedOS001 process with the executable\n
- /// provided and mode as a calling parameter.
- /// \~english @param [in] p_strFile_i
- /// - SS_String - Path and Filename of executable to create process for
- /// \~english @param [in] p_strProcessName_i
- /// - SS_String - This is the name that will be registered to the OS for this process
- /// \~english @param [in] unix_user_name
- /// - char* - unix user name
- /// \~english @param [in] p_lSpawnFlags_i
- /// - long - Posix Spawning flags. These are PosixBasedOS001 specific
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - The caller can also provide a list of arguments that will be provided\n
- /// to the executable at startup.The calling p_strProcessName parameter is a textual name\n
- /// that will be associated with the newly created process by the OS.\n
- /// The process state information will be maintained by this object.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const SS_String& p_strProcessName_i, // This is the name that will be registered to the OS for this process
- const char* unix_user_name = NULL, const long p_lSpawnFlags_i = // NOLINT (runtime/int)
- iProcess_DEFAULT_PROCESS_FLAGS); // Spawning flags.
- // These are PosixBasedOS001 specific....
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup CreateProcess
- /// \~english @par Summary
- /// - This method will create a process with the executable
- /// provided and mode as a calling parameter.
- /// \~english @param [in] p_strFile_i
- /// - SS_String - Path and Filename of executable to create
- /// process for
- /// \~english @param [in] p_strProcessName_i
- /// - SS_String - This is the name that will be registered to the
- /// OS for this process
- /// \~english @param [in] p_iPriority_i
- /// - int - Priority of process
- /// \~english @param [in] unix_user_name
- /// - char* - unix user name
- /// \~english @param [in] p_lSpawnFlags_i
- /// - long - Posix Spawning flags. These are PosixBasedOS001
- /// specific
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - The caller can also provide a list of arguments that will be
- /// provided\n
- /// to the executable at startup.The calling p_strProcessName
- /// parameter is a textual name\n
- /// that will be associated with the newly created process by
- /// the OS.\n
- /// The process state information will be maintained by this
- /// object.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const SS_String& p_strProcessName_i, // This is the name that will be registered to the OS for this process
- const int p_iPriority_i, // Priority of this process
- const char* unix_user_name = NULL, const long p_lSpawnFlags_i = // NOLINT (runtime/int)
- iProcess_DEFAULT_PROCESS_FLAGS); // Spawning flags.
- // These are PosixBasedOS001 specific....
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup CreateProcess
-/// \~english @par Summary
-/// - This method will create a process with the executable provided and mode as a calling parameter.
-/// \~english @param [in] p_strFile_i
-/// - SS_String - p_strFile_i Path and Filename of executable to create process for
-/// \~english @param [in] unix_user_name
-/// - char* - unix user name
-/// \~english @param [in] p_lSpawnFlags_i
-/// - long - Spawning flags. These are PosixBasedOS001 specific.
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -
-/// \~english @par Change of the internal state
-/// - None
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - The caller can also provide a list of arguments that will be provided\n
-/// to the executable at startup.The calling p_strProcessName parameter is a textual name\n
-/// that will be associated with the newly created process by the OS.\n
-/// The process state information will be maintained by this object.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const char* unix_user_name = NULL, const long p_lSpawnFlags_i = // NOLINT (runtime/int)
- iProcess_DEFAULT_PROCESS_FLAGS); // Spawning flags.
- // These are PosixBasedOS001 specific....
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup CreateProcess
-/// \~english @par Summary
-/// - This method will create a process with the executable provided and mode as a calling parameter.
-/// \~english @param [in] p_strFile_i
-/// - SS_String - p_strFile_i Path and Filename of executable to create process for
-/// \~english @param [in] p_strProcessName_i
-/// - SS_String - This is the name that will be registered to the OS for this process
-/// \~english @param [in] p_strlstArgv_i
-/// - StringList - List of ARGV values for new process
-/// \~english @param [in] unix_user_name
-/// - char* - unix user name
-/// \~english @param [in] p_lSpawnFlags_i
-/// - long - Spawning flags. These are PosixBasedOS001 specific.
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - None
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - The caller can also provide a list of arguments that will be provided\n
-/// to the executable at startup.The calling p_strProcessName parameter is a textual name\n
-/// that will be associated with the newly created process by the OS.\n
-/// The process state information will be maintained by this object.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const SS_String& p_strProcessName_i, // This is the name that will be registered to the OS for this process
- const StringList& p_strlstArgv_i, // List of ARGV values for new process
- const char* unix_user_name = NULL, const long p_lSpawnFlags_i = // NOLINT (runtime/int)
- iProcess_DEFAULT_PROCESS_FLAGS); // Spawning flags.
- // These are PosixBasedOS001 specific....
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup CreateProcess
-/// \~english @par Summary
-/// - This method will create a process with the executable provided and mode as a calling parameter.
-/// \~english @param [in] p_strFile_i
-/// - SS_String - Path and Filename of executable to create process for
-/// \~english @param [in] p_strProcessName_i
-/// - SS_String - This is the name that will be registered to the OS for this process
-/// \~english @param [in] p_iPriority_i
-/// - int - Priority for this process
-/// \~english @param [in] p_strlstArgv_i
-/// - StringList - List of ARGV values for new process
-/// \~english @param [in] unix_user_name
-/// - char* - unix user name
-/// \~english @param [in] p_lSpawnFlags_i
-/// - long - Spawning flags.These are PosixBasedOS001 specific.
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - None
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - The caller can also provide a list of arguments that will be provided\n
-/// to the executable at startup.The calling p_strProcessName parameter is a textual name\n
-/// that will be associated with the newly created process by the OS.\n
-/// The process state information will be maintained by this object.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const SS_String& p_strProcessName_i, // This is the name that will be registered to the OS for this process
- const int p_iPriority_i, // Priority for this process
- const StringList& p_strlstArgv_i, // List of ARGV values for new process
- const char* unix_user_name = NULL, const long p_lSpawnFlags_i = // NOLINT (runtime/int)
- iProcess_DEFAULT_PROCESS_FLAGS); // Spawning flags.
- // These are PosixBasedOS001 specific....
- /////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup CreateProcess
- /// \~english @par Summary
- /// - This method will create a process with the executable provided and mode as a calling parameter.
- /// \~english @param [in] p_strFile_i
- /// - SS_String - Path and Filename of executable to create process for
- /// \~english @param [in] c_argv
- /// - char - This is the argument that will be registered to the OS for this process
- /// \~english @param [in] environment_string
- /// - char - enviroment for this process
- /// \~english @param [in] cl_attr
- /// - CL_ProcessAttr_t - List of ARGV values for new process
- /// \~english @retval None
- /// \~english @par Preconditions
- /// -no preconditions
- /// \~english @par Change of the internal state
- /// - None
- /// \~english @par Causes of failures
- /// - None
- /// \~english @par Classification
- /// - Public
- /// \~english @par Type
- /// - sync only
- /// \~english @par Detail
- /// - The caller can also provide a list of arguments that will be provided\n
- /// that will be associated with the newly created process by the OS.\n
- /// The process state information will be maintained by this object.
- /// \~english @see None
- ////////////////////////////////////////////////////////////////////////////////////
- void CreateProcess(const SS_String* p_str_file, char* const * c_argv,
- char* environment_string, const CL_ProcessAttr_t *cl_attr);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup CreateProcessWait
-/// \~english @par Summary
-/// - This method will create a process with the executable provided.
-/// \~english @param [in] p_strFile_i
-/// - SS_String - Path and Filename of executable to create process for
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - None
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will create a process with the executable provided.\n
-/// The process state information will be maintained by this object.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void CreateProcessWait(const SS_String& p_strFile_i); // Path and Filename of executable to create process for
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup CreateProcessWait
-/// \~english @par Summary
-/// - This method will create a PosixBasedOS001 process with the executable provided.
-/// \~english @param [in] p_strFile_i
-/// - SS_String - Path and Filename of executable to create process for
-/// \~english @param [in] p_strlstArguments_i
-/// - StringList - List of process calling arguments
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - None
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will create a PosixBasedOS001 process with the executable provided.\n
-/// The process state information will be maintained by this object.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void CreateProcessWait(const SS_String& p_strFile_i, // Path and Filename of executable to create process for
- const StringList& p_strlstArguments_i); // List of process calling arguments
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup KillProcess
-/// \~english @par Summary
-/// - This method will send the specified signal to the process represented by this object
-/// \~english @param [in] signal
-/// - int - signal
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - Intialize the objects m_iErrorCode member variable to 0
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will send the specified signal to the process represented by this object.\n
-/// All variables associated with this object will be initialized to a know value.\n
-/// If this process has a name registered with the OS, that name will be removed.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void KillProcess(int signal = SIGKILL);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup DoesProcessExist
-/// \~english @par Summary
-/// -Check if the process existed
-/// \~english @param None
-/// \~english @retval TRUE - Process Exists
-/// \~english @retval FALSE - Process does not exist
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - The internal state is not changed.
-/// \~english @par Causes of failures
-/// -None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will return a BOOLean indicating whether this process exists.
-/// \~english @see
-////////////////////////////////////////////////////////////////////////////////////
- BOOL DoesProcessExist(void);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup DisableAutoKill
-/// \~english @par Summary
-/// -none
-/// \~english @param None
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - set m_fAutoKill as FALSE
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will disable the Auto Kill function in the destructor,\n
-/// thus letting the process whom this object represents continue running.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void DisableAutoKill(void) {
- m_fAutoKill = FALSE;
- }
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EnableAutoKill
-/// \~english @par Summary
-/// - Enable the Auto Kill
-/// \~english @param None
-/// \~english @retval None
-/// \~english @par Preconditions
-/// -no preconditions
-/// \~english @par Change of the internal state
-/// - set m_fAutoKill as TRUE
-/// \~english @par Causes of failures
-/// - None
-/// \~english @par Classification
-/// - Public
-/// \~english @par Type
-/// - sync only
-/// \~english @par Detail
-/// - This method will Enable the Auto Kill function in the destructor,\n
-/// thus killing the process whom this object represents.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
- void EnableAutoKill(void) {
- m_fAutoKill = TRUE;
- }
-
- private:
- // Class Data Members
- //---------------------------------------------
-
- long m_lValidationTag; // Used to check if this is a valid // NOLINT (runtime/int)
- // object or not.
-
- int m_cpu_assign;
- pid_t m_tProcessId; // This is the process ID for this process. All command, control,
- // and status gathering will use this ID.
- eProcessLoadMode m_eProcessLoadMode; // This is the process load mode provided by the caller when this
- // process was created.
- SS_String m_strFile; // This is the executable path and file name of this process
- StringList m_strlstArgv; // This is the calling parameter Argv list provided by the caller.
- SS_String m_strProcessName; // This is the name that was registered to the OS for process identification
-
- int m_iErrorCode; // This was the returned PosixBasedOS001 error code for the last call. The programmer
- // can look at this error code if an error was detected and an
- // exception was thrown.
- BOOL m_fAutoKill; // Used to indicate to destructor to kill the process whom this object
- // represents on exit.
- int m_iReturnCode;
-
- //////////////////////////////////////////////////////////////////////
- /// Copy
- ///
- /// Copies data members from the specified object to this object.
- /// No attempt is made to free dynamically allocated objects within
- /// this object (you must do that before calling this function).
- ///
- ///////////////////////////////////////////////////////////////////////
- void Copy(const Process& p_rhs_i);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- /// ConvertToPosixBasedOS001SchedularPolicy
- /// This method will return to the caller the equivalent PosixBasedOS001 schedular policy for the process
- /// that this object represents
- ///
- ///
- /// Calling Arguments:
- /// Scheduling Policy
- ///
- /// \return policy
- /// FIFO, A fixed priority scheduler in which the highest ready process runs until it
- /// blocks or is preempted by a higher priority process.
- /// ROUND_ROBIN, The same as FIFO, except processes at the same priority level time-slice.
- /// OTHER A general time sharing scheduler in which a process decays in priority if it
- /// consumes too much processor before blocking. It reverts to its default priority
- /// when it blocks. Should it fail to run over a 2 second period and it has decayed
- /// then it's boosted one priority level up to a maximum of its default priority.
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int const ConvertToPosixBasedOS001SchedularPolicy(
- const eProcessSchedulingPolicy p_eSchedulingPolicy_i);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- /// ConvertFromPosixBasedOS001SchedularPolicy
- ///
- /// This method will return to the caller the eProcessSchedulingPolicy based on the PosixBasedOS001 schedular
- /// policy for the process that this object represents
- ///
- ///
- /// Calling Arguments:
- /// PosixBasedOS001 Scheduling Policy
- ///
- /// \return policy
- /// FIFO, A fixed priority scheduler in which the highest ready process runs until it
- /// blocks or is preempted by a higher priority process.
- /// ROUND_ROBIN, The same as FIFO, except processes at the same priority level time-slice.
- /// OTHER A general time sharing scheduler in which a process decays in priority if it
- /// consumes too much processor before blocking. It reverts to its default priority
- /// when it blocks. Should it fail to run over a 2 second period and it has decayed
- /// then it's boosted one priority level up to a maximum of its default priority.
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- eProcessSchedulingPolicy const ConvertFromPosixBasedOS001SchedularPolicy(
- const int p_iPosixBasedOS001chedulingPolicy_i);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SS_SystemServicesIf
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- /// \brief Check environment variable MOCK_LIBRARY where Mock Library Name to set in LD_PRELOAD is set
- /// and output character string to set in LD_PRELOAD if there is setting.
- /// \return
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- void CheckLdPreLoad(SS_String *process_path, char *environment_string);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- /// \ingroup SS_SystemServicesIf
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- /// \brief Acquire the character string of the environment variable and set it in String Vector
- /// and return in a pointer of Vector.
- /// \return vector<SS_String> pointer
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- std::vector<SS_String> *GetEnvironVector(void);
-// ----------------------------------------
-// ---------------- End -------------------
-};
-#endif // NOLINT (build/header_guard)
-
-/** @}*/
-/** @}*/
-/** @}*/