diff options
author | Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> | 2020-11-20 23:36:23 +0900 |
---|---|---|
committer | Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> | 2020-11-22 09:02:55 +0900 |
commit | 17cf21bcf8a2e29d2cbcf0a313474d2a4ee44f5d (patch) | |
tree | 582a9768558d9eaf261ca5df6136e9de54c95816 /service/native/framework_unified/client/NS_FrameworkCore/src/frameworkunified_thread_priority.cpp | |
parent | 9e86046cdb356913ae026f616e5bf17f6f238aa5 (diff) |
Re-organized sub-directory by category
Since all the sub-directories were placed in the
first level, created sub-directories, "hal", "module",
and "service" for classification and relocated each component.
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Change-Id: Ifdf743ac0d1893bd8e445455cf0d2c199a011d5c
Diffstat (limited to 'service/native/framework_unified/client/NS_FrameworkCore/src/frameworkunified_thread_priority.cpp')
-rwxr-xr-x | service/native/framework_unified/client/NS_FrameworkCore/src/frameworkunified_thread_priority.cpp | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/service/native/framework_unified/client/NS_FrameworkCore/src/frameworkunified_thread_priority.cpp b/service/native/framework_unified/client/NS_FrameworkCore/src/frameworkunified_thread_priority.cpp new file mode 100755 index 0000000..88b5c50 --- /dev/null +++ b/service/native/framework_unified/client/NS_FrameworkCore/src/frameworkunified_thread_priority.cpp @@ -0,0 +1,156 @@ +/* + * @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 +/// \brief <INSERT INFO HERE>. +/// +////////////////////////////////////////////////////////////////////////////////////////////////// +#include <stdlib.h> +#include <string.h> + +#include <native_service/frameworkunified_thread_priority.h> +#include <native_service/ns_logger_if.h> + +#include <string> + +char *priopts[] = { +#define THREAD 0 + const_cast<PSTR>("thrd"), + NULL +}; + +namespace frameworkunified { +namespace framework { + +CFrameworkunifiedThreadPriorities::TThreadPriorityList CFrameworkunifiedThreadPriorities::ms_mapThreadPritories; + +////////////////////////////////////////// +// Constructor +////////////////////////////////////////// +CFrameworkunifiedThreadPriorities::CFrameworkunifiedThreadPriorities() { // LCOV_EXCL_START 200:only use static function of this class + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert +} +// LCOV_EXCL_STOP + +////////////////////////////////////////// +// Destructor +////////////////////////////////////////// +CFrameworkunifiedThreadPriorities::~CFrameworkunifiedThreadPriorities() { // LCOV_EXCL_START 200:only use static function of this class + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert +} +// LCOV_EXCL_STOP + +////////////////////////////////////////// +// GetPriority +////////////////////////////////////////// +SI_32 CFrameworkunifiedThreadPriorities::GetPriority(const std::string &f_cThreadName) { + SI_32 l_si32Prio = FRAMEWORKUNIFIED_PRIORITY_NOT_FOUND; + ThreadPrioMapIter iter = ms_mapThreadPritories.find(f_cThreadName); + if (iter != ms_mapThreadPritories.end() && (FRAMEWORKUNIFIED_PRIORITY_NOT_FOUND == l_si32Prio)) { + l_si32Prio = iter->second; + } + + return l_si32Prio; +} + +////////////////////////////////////////// +// AddPriority +////////////////////////////////////////// +EFrameworkunifiedStatus CFrameworkunifiedThreadPriorities::AddPriority(const std::string &f_cThreadName, SI_32 f_si32Priority) { + ms_mapThreadPritories[f_cThreadName] = f_si32Priority; + return eFrameworkunifiedStatusOK; +} + +////////////////////////////////////////// +// PrintPriorites +////////////////////////////////////////// +VOID CFrameworkunifiedThreadPriorities::PrintPriorites() { // LCOV_EXCL_START 7: debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + ThreadPrioMapIter iter = ms_mapThreadPritories.begin(); + for (; iter != ms_mapThreadPritories.end(); iter++) { + std::string name = iter->first; + FRAMEWORKUNIFIEDLOG(ZONE_NS_DIS, __FUNCTION__, "Thread name: %s Priority: %d", name.data(), iter->second); + } +} +// LCOV_EXCL_STOP + +////////////////////////////////////////// +// ParseThreadArguments +////////////////////////////////////////// +EFrameworkunifiedStatus CFrameworkunifiedThreadPriorities::ParseThreadArguments(PCHAR f_cArgumentValue) { + EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; + PCHAR l_cData = NULL; + PSTR l_cOptions; + PSTR l_cValue; + PCHAR saveptr; + + if (NULL != f_cArgumentValue) { + l_cOptions = f_cArgumentValue; + FRAMEWORKUNIFIEDLOG(ZONE_NS_DIS, __FUNCTION__, "args of -p: %s", l_cOptions); // LCOV_EXCL_BR_LINE 15:marco defined in "native_service/ns_logger_if.h" + + while (*l_cOptions != '\0' && (eFrameworkunifiedStatusOK == l_eStatus)) { + switch (getsubopt(&l_cOptions, priopts, &l_cValue)) { + case THREAD: { + if (l_cValue == NULL) { + l_eStatus = eFrameworkunifiedStatusFail; + } else { + std::string l_cName(""); + std::string l_cPriority(""); // LCOV_EXCL_BR_LINE 11: except branch + int at = static_cast<int>(frameworkunified::framework::args::name); + + l_cData = strtok_r(l_cValue, ":", &saveptr); // NOLINT (readability/nolint) + while (NULL != l_cData) { + switch (at) { + case frameworkunified::framework::args::name: + l_cName = l_cData; + break; + case frameworkunified::framework::args::priority: + l_cPriority = l_cData; + break; + default: + break; + } + + if (!l_cName.empty() && !l_cPriority.empty()) { + frameworkunified::framework::CFrameworkunifiedThreadPriorities::AddPriority(l_cName, atoi(l_cPriority.data())); + at = static_cast<int>(frameworkunified::framework::args::name); + l_cName.clear(); + l_cPriority.clear(); + } else { + at++; + } + + l_cData = strtok_r(NULL, ":", &saveptr); // NOLINT (readability/nolint) + } + } + break; + } + default: { + l_eStatus = eFrameworkunifiedStatusFail; + break; + } + } + } + } + return l_eStatus; +} + +} // namespace framework +}; // namespace frameworkunified +/// EOF + + |