summaryrefslogtreecommitdiffstats
path: root/systemservice/resource_manager/server/src/proc_watch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'systemservice/resource_manager/server/src/proc_watch.cpp')
-rwxr-xr-xsystemservice/resource_manager/server/src/proc_watch.cpp285
1 files changed, 0 insertions, 285 deletions
diff --git a/systemservice/resource_manager/server/src/proc_watch.cpp b/systemservice/resource_manager/server/src/proc_watch.cpp
deleted file mode 100755
index c432af1..0000000
--- a/systemservice/resource_manager/server/src/proc_watch.cpp
+++ /dev/null
@@ -1,285 +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.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/timerfd.h>
-#include <sys/vfs.h> /* or <sys/statfs.h> */
-#include <dirent.h>
-#include <stdlib.h>
-
-#include <soc_temperature_hal.h>
-
-#include "ss_resm_resourcemanagerlog.h"
-#include "proc_watch.h"
-#include "resm_cfg.h"
-#include "resm_internal.h"
-
-#define WTC_TMPFS_INTERVAL (5)
-#define WTC_MEM_INTERVAL (5)
-#define DEBUG_INFO_OUTPUT_FREQ (1)
-
-extern int isNfs;
-extern void watchMem(void);
-extern void outputResouceInfo(void);
-extern EFrameworkunifiedStatus resourcemanagerlog_flag_check(UI_8 *mode);
-
-#define _SOC_TEMP_MONITOR_
-
-#if defined(_SOC_TEMP_MONITOR_)
-
-/*********************************************************************************
- * Soc Temperature
- register THSSR : T = CTEMP[5-0] x 5 - 65 [Celsius]
- *********************************************************************************/
-#define SOC_TEMP_WATCH_INTVAL_TIMESEC (3 * 60) // 3 minutes
-// #define SOC_TEMP_WATCH_INTVAL_TIMESEC (1 * 5) // for debug
-#define THSSR_TEMP_MASK 0x0000003F
-#define TEMP_120 (120)
-
-static float last_temp;
-
-static void soc_temp_init(void) {
- FRAMEWORKUNIFIEDLOG(ZONE_SOC_TEMP, __FUNCTION__, "start");
- last_temp = 0.0f;
-}
-
-static void soc_temp(void) {
- float temp = 0.0f;
- EFrameworkunifiedStatus e_status = GetSoCTemperature(&temp);
- if (eFrameworkunifiedStatusOK != e_status) {
- FRAMEWORKUNIFIEDLOG(ZONE_SOC_TEMP, __FUNCTION__,
- "THSSR:GetSoCTemperature e_status(%d)", e_status);
- return;
- }
-
- if (TEMP_120 <= temp) {
- // FRAMEWORKUNIFIEDLOG
- FRAMEWORKUNIFIEDLOG(ZONE_SOC_TEMP, __FUNCTION__, "%f", temp); // LCOV_EXCL_BR_LINE 15: marco defined in "native_service/ns_logger_if.h" // NOLINT[whitespace/line_length]
- } else {
- // FRAMEWORKUNIFIEDLOG
- if (TEMP_120 <= last_temp) {
- FRAMEWORKUNIFIEDLOG(ZONE_SOC_TEMP, __FUNCTION__, "%f", temp); // LCOV_EXCL_BR_LINE 15: marco defined in "native_service/ns_logger_if.h" // NOLINT[whitespace/line_length]
- }
- }
- last_temp = temp;
-}
-#endif // defined ( _SOC_TEMP_MONITOR_ )
-
-//
-// Monitor /tmp
-//
-#define TMP_USED_SIZE (100*1024) // 100MB
-#define TMPFS_PATH "/tmp"
-static int watch_tmpfs_enable = 1;
-
-static void printdir(const char* path) {
- DIR *dirp;
- struct dirent entry, *next;
- char buf[512];
-
- dirp = opendir(path);
- if (dirp == NULL) { // LCOV_EXCL_BR_LINE 5: opendir's error case.
- // LCOV_EXCL_START 5: opendir's error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "opendir(%s) error.(%d)\n", path, errno);
- return;
- // LCOV_EXCL_STOP 5: opendir's error case.
- }
- while ((readdir_r(dirp, &entry, &next) == 0) && next != NULL) {
- if (((strlen(entry.d_name) == 1) && (strcmp(entry.d_name, ".") == 0))
- || ((strlen(entry.d_name) == 2) && (strcmp(entry.d_name, "..") == 0))) {
- continue;
- }
- if ((strlen(path) + strlen(entry.d_name) + 2) <= sizeof(buf)) {/* 2: '/','\0' */
- struct stat stat_buf;
-
- strcpy(buf, path); // NOLINT
- strcat(buf, "/"); // NOLINT
- strcat(buf, entry.d_name); // NOLINT
- if (stat(buf, &stat_buf) == -1) { // LCOV_EXCL_BR_LINE 5: stat error case
- // LCOV_EXCL_START 5: stat error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "%s stat error! (%d)\n", buf, errno);
- // LCOV_EXCL_STOP 5: stat's error case.
- } else if (S_ISDIR(stat_buf.st_mode)) {
- printdir(buf);
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "%s %ld bytes", buf, stat_buf.st_size);
- }
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "path(%s) name(%s) length over!\n", path,
- entry.d_name);
- }
- }
- closedir(dirp);
-
- return;
-}
-
-static void watchtmpfs(void) {
- int ret;
- struct statfs buf;
- long used; // NOLINT
-
- if (!watch_tmpfs_enable) {
- return;
- }
- ret = statfs(TMPFS_PATH, &buf);
- if (ret < 0) { // LCOV_EXCL_BR_LINE 5: statfs error case
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return; // LCOV_EXCL_LINE 5: statfs error case
- }
- used = (buf.f_blocks - buf.f_bavail) * buf.f_bsize / 1024; // KB
- if (used > TMP_USED_SIZE) {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "%s Used %ld KB > %d KB",
- TMPFS_PATH,
- used, TMP_USED_SIZE);
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "----- print %s start -----", TMPFS_PATH);
- printdir(TMPFS_PATH);
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "----- print %s end -----", TMPFS_PATH);
- watch_tmpfs_enable = 0;
- }
-}
-
-/*********************************************************************************
- * proc_watch thread main
- *********************************************************************************/
-void *
-PRCW_main(void *p) {
- fd_set fds;
- int32_t maxFd = 0;
- int32_t timerFd;
- struct itimerspec tm;
- int32_t sec = 0;
- EFrameworkunifiedStatus flagRet;
- uint64_t exp;
- int ret;
- UI_8 mode;
-#if defined(_SOC_TEMP_MONITOR_)
- int32_t timerFd2;
- struct itimerspec tm2;
-#endif // defined(_SOC_TEMP_MONITOR_)
-
- /* Memory monitoring and display debug information */
- timerFd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);
- if (timerFd == -1) { // LCOV_EXCL_BR_LINE 5: timerfd_create error case
- // LCOV_EXCL_START 5: timerfd_create error case
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- "[RESM_ERR]ResMgr Create timerFd Failed. errno[%d]", errno);
- // LCOV_EXCL_STOP 5: timerfd_create error case
- } else {
- tm.it_value.tv_sec = MONITORING_START_DELAT_TIME;
- tm.it_value.tv_nsec = 0;
- tm.it_interval.tv_sec = 1;
- tm.it_interval.tv_nsec = 0;
- if (timerfd_settime(timerFd, 0, &tm, NULL) == -1) { // LCOV_EXCL_BR_LINE 5: timerfd_create error case
- // LCOV_EXCL_START 5: timerfd_settime error case
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- "[RESM_ERR]ResMgr Set timerFd Failed. errno[%d]", errno);
- // LCOV_EXCL_STOP 5: timerfd_settime error case
- }
- }
-
-#if defined(_SOC_TEMP_MONITOR_)
- /* Soc temperature monitoring */
- timerFd2 = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);
- if (timerFd2 == -1) { // LCOV_EXCL_BR_LINE 5: timerfd_create error case
- // LCOV_EXCL_START 5: timerfd_create error case
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- "[RESM_ERR]ResMgr Create timerFd2 Failed. errno[%d]", errno);
- // LCOV_EXCL_STOP 5: timerfd_create error case
- } else {
- tm2.it_value.tv_sec = 1;
- tm2.it_value.tv_nsec = 0;
- tm2.it_interval.tv_sec = SOC_TEMP_WATCH_INTVAL_TIMESEC;
- tm2.it_interval.tv_nsec = 0;
- if (timerfd_settime(timerFd2, 0, &tm2, NULL) == -1) { // LCOV_EXCL_BR_LINE 5: timerfd_settime error case
- // LCOV_EXCL_START 5: timerfd_settime error case
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- "[RESM_ERR]ResMgr Set timerFd2 Failed. errno[%d]", errno);
- // LCOV_EXCL_STOP 5: timerfd_settime error case
- }
- soc_temp_init();
- }
-#endif // defined(_SOC_TEMP_MONITOR_)
-
- while (1) {
- FD_ZERO(&fds);
- if (timerFd != -1) { // LCOV_EXCL_BR_LINE 5: timerfd_create's error case
- FD_SET(timerFd, &fds);
- maxFd = MY_MAX(maxFd, timerFd);
- }
-#if defined(_SOC_TEMP_MONITOR_)
- if (timerFd2 != -1) { // LCOV_EXCL_BR_LINE 5: timerfd_create's error case
- FD_SET(timerFd2, &fds);
- maxFd = MY_MAX(maxFd, timerFd2);
- }
-#endif // defined(_SOC_TEMP_MONITOR_)
-
- ret = select(maxFd + 1, &fds, NULL, NULL, NULL);
- if (ret < 0) { // LCOV_EXCL_BR_LINE 5: select error case
- // LCOV_EXCL_START 5: select error case
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- if (errno != EINTR) {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "[RESM_ERR]ResMgr Handle Error");
- exit(EXIT_FAILURE);
- }
- continue;
- // LCOV_EXCL_STOP 5: select error case
- }
-
- if ((timerFd != -1) && FD_ISSET(timerFd, &fds)) {
- read(timerFd, &exp, sizeof(uint64_t));
- /* Memory monitoring */
- if ((sec % WTC_MEM_INTERVAL) == 0) {
- watchMem();
- }
- /* tmpfs monitoring */
- if (!isNfs && ((sec % WTC_TMPFS_INTERVAL) == 0)) {
- watchtmpfs();
- }
- /* Display debug information */
- if ((sec % DEBUG_INFO_OUTPUT_FREQ) == 0) {
- flagRet = resourcemanagerlog_flag_check(&mode);
- if ((flagRet == eFrameworkunifiedStatusOK) && (mode == FRAMEWORKUNIFIEDLOG_FLAG_MODE_DEBUG)) {
- outputResouceInfo();
- }
- }
- if (sec >= RESET_SEC) {
- sec = 0;
- }
- sec++;
- }
-#if defined(_SOC_TEMP_MONITOR_)
- if ((timerFd2 != -1) && FD_ISSET(timerFd2, &fds)) {
- read(timerFd2, &exp, sizeof(uint64_t));
- soc_temp();
- }
-#endif // defined(_SOC_TEMP_MONITOR_)
- }
- return p;
-}