X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=service%2Fnative%2Fframework_unified%2Fclient%2Finclude%2Fnative_service%2Fframeworkunified_thread_priority.h;fp=service%2Fnative%2Fframework_unified%2Fclient%2Finclude%2Fnative_service%2Fframeworkunified_thread_priority.h;h=2af26a310c808a23ca2cb3433b88b48137598a56;hb=17cf21bcf8a2e29d2cbcf0a313474d2a4ee44f5d;hp=0000000000000000000000000000000000000000;hpb=9e86046cdb356913ae026f616e5bf17f6f238aa5;p=staging%2Fbasesystem.git diff --git a/service/native/framework_unified/client/include/native_service/frameworkunified_thread_priority.h b/service/native/framework_unified/client/include/native_service/frameworkunified_thread_priority.h new file mode 100755 index 0000000..2af26a3 --- /dev/null +++ b/service/native/framework_unified/client/include/native_service/frameworkunified_thread_priority.h @@ -0,0 +1,235 @@ +/* + * @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_NSFramework +/// \brief The file provide CFrameworkunifiedThreadPriorities class. +/// +/// +/// +////////////////////////////////////////////////////////////////////////////////////////////////// +//@{ +/** + * @file frameworkunified_thread_priority.h + * @brief \~english The file contains declaration of CFrameworkunifiedThreadPriorities class + * + */ +/** @addtogroup BaseSystem + * @{ + */ +/** @addtogroup native_service + * @ingroup BaseSystem + * @{ + */ +/** @addtogroup framework_unified + * @ingroup native_service + * @{ + */ +/** @addtogroup framework + * @ingroup native_service + * @{ + */ + +#ifndef FRAMEWORKUNIFIED_THREAD_PRIORITY_H_ // NOLINT (build/header_guard) +#define FRAMEWORKUNIFIED_THREAD_PRIORITY_H_ + +#include +#include +#include + +#define FRAMEWORKUNIFIED_PRIORITY_NOT_FOUND -1 ///< \~english if specified thread name not found + +namespace frameworkunified { +namespace framework { +class args { + public: + enum { + name, + priority + }; +}; + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/// This class parses and stores thread priorities +/////////////////////////////////////////////////////////////////////////////////////////////////// +class CFrameworkunifiedThreadPriorities { + public: + ///////////////////////////////////////////////////////////////////////////////////// + /// \ingroup CFrameworkunifiedThreadPriorities + /// \~english @par Brief + /// CFrameworkunifiedThreadPriorities constructor + /// \~english @param None + /// \~english @retval None + /// \~english @par Prerequisite + /// None + /// \~english @par Change of internal state + /// None + /// \~english @par Conditions of processing failure + /// None + /// \~english @par Detail + /// CFrameworkunifiedThreadPriorities constructor, for create CFrameworkunifiedThreadPriorities + /// \~english @par Classification + /// Public + /// \~english @par Type + /// sync only + /// \~english @see + /// + ///////////////////////////////////////////////////////////////////////////////////// + CFrameworkunifiedThreadPriorities(); + + ///////////////////////////////////////////////////////////////////////////////////// + /// \ingroup CFrameworkunifiedThreadPriorities + /// \~english @par Brief + /// CFrameworkunifiedThreadPriorities destructor + /// \~english @param None + /// \~english @retval None + /// \~english @par Prerequisite + /// None + /// \~english @par Change of internal state + /// None + /// \~english @par Conditions of processing failure + /// None + /// \~english @par Detail + /// CFrameworkunifiedThreadPriorities destructor, for destory CFrameworkunifiedThreadPriorities + /// \~english @par Classification + /// Public + /// \~english @par Type + /// sync only + /// \~english @see + /// + ///////////////////////////////////////////////////////////////////////////////////// + virtual ~CFrameworkunifiedThreadPriorities(); + + ///////////////////////////////////////////////////////////////////////////////////// + /// \ingroup CFrameworkunifiedThreadPriorities + /// \~english @par Brief + /// Get the priority of the thread. Priority of the thread was added by \ref AddPriority(), + /// when parsing command line arguments. + /// \~english @param [in] f_cThreadName + /// const std::string& - Name of thread + /// \~english @retval SI_32 Returns the priority of a thread. + /// \~english @retval FRAMEWORKUNIFIED_PRIORITY_NOT_FOUND if specified thread name not found + /// \~english @par + /// FRAMEWORKUNIFIED_PRIORITY_NOT_FOUND + /// \~english @code + /// #define FRAMEWORKUNIFIED_PRIORITY_NOT_FOUND -1 // if specified thread name not found + /// @endcode + /// \~english @par Prerequisite + /// - Call AddPriority() and set priority. + /// \~english @par Change of internal state + /// - Change of internal state according to the API does not occur. + /// \~english @par Conditions of processing failure + /// - Thread name is not registered in AddPriority() + /// \~english @par Detail + /// Get the priority of the thread. Priority of the thread was added by \ref AddPriority(), + /// when parsing command line arguments. + /// \~english @par Classification + /// Public + /// \~english @par Type + /// sync only + /// \~english @see + /// AddPriority + ///////////////////////////////////////////////////////////////////////////////////// + static SI_32 GetPriority(const std::string &f_cThreadName); + + ///////////////////////////////////////////////////////////////////////////////////// + /// \ingroup CFrameworkunifiedThreadPriorities + /// \~english @par Summary + /// set thread Priority + /// \~english @param [in] f_cThreadName + /// const std::string &f_cThreadName - thread name + /// \~english @param [in] f_si32Priority + /// SI_32 f_si32Priority - Priority + /// \~english @retval eFrameworkunifiedStatusOK set Priority success + /// \~english @par Preconditions + /// - None + /// \~english @par Change of the internal state + /// - ms_mapThreadPritories[f_cThreadName] = f_si32Priority + /// \~english @par Causes of failures + /// None + /// \~english @par Classification + /// public + /// \~english @par Type + /// sync only + /// \~english @par Detail + /// set thread Priority through thread name + /// \~english @see + //////////////////////////////////////////////////////////////////////////////////// + static EFrameworkunifiedStatus AddPriority(const std::string &f_cThreadName, SI_32 f_si32Priority); + + ///////////////////////////////////////////////////////////////////////////////////// + /// \ingroup CFrameworkunifiedThreadPriorities + /// \~english @par Summary + /// print thread Priority + /// \~english @param None + /// \~english @retval None + /// \~english @par Preconditions + /// - None + /// \~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 + /// read each thread and print it's Priority + /// \~english @see + //////////////////////////////////////////////////////////////////////////////////// + static VOID PrintPriorites(); + + ///////////////////////////////////////////////////////////////////////////////////// + /// \ingroup CFrameworkunifiedThreadPriorities + /// \~english @par Summary + /// analyse thread param + /// \~english @param [in] f_cArgumentValue + /// PCHAR f_cArgumentValue - thread param string + /// \~english @retval eFrameworkunifiedStatusOK parse thread param success + /// \~english @retval eFrameworkunifiedStatusFail parse thread param failed + /// \~english @par Preconditions + /// - None + /// \~english @par Change of the internal state + /// - None + /// \~english @par Causes of failures + /// - f_cArgumentValue == NULL + /// - f_cArgumentValue is invalid + /// \~english @par Classification + /// public + /// \~english @par Type + /// sync only + /// \~english @par Detail + /// analyse thread param data, and set param to thread. + /// if given data is NULL or invalid , return false + /// \~english @see getsubopt, AddPriority + //////////////////////////////////////////////////////////////////////////////////// + static EFrameworkunifiedStatus ParseThreadArguments(PCHAR f_cArgumentValue); + + private: + typedef std::map TThreadPriorityList; + typedef TThreadPriorityList::iterator ThreadPrioMapIter; + static TThreadPriorityList ms_mapThreadPritories; // map of thread name and priority +}; + +} // namespace framework +}; // namespace frameworkunified + +#endif /* FRAMEWORKUNIFIED_THREAD_PRIORITY_H_ */ // NOLINT (build/header_guard) +/** @}*/ +/** @}*/ +/** @}*/ +/** @}*/ +//@}