aboutsummaryrefslogtreecommitdiffstats
path: root/src/framework/lib_common_mem/common_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/framework/lib_common_mem/common_api.c')
-rw-r--r--src/framework/lib_common_mem/common_api.c325
1 files changed, 0 insertions, 325 deletions
diff --git a/src/framework/lib_common_mem/common_api.c b/src/framework/lib_common_mem/common_api.c
deleted file mode 100644
index cfb869d..0000000
--- a/src/framework/lib_common_mem/common_api.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
-*
-* Copyright (c) 2018 Huawei Technologies Co.,Ltd.
-* 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 <string.h>
-#include "common_mem_api.h"
-#include "common_mem_pal.h"
-#include "nstack_log.h"
-#include "nstack_securec.h"
-#include "common_func.h"
-
-void
-sys_sem_init_v2 (sys_sem_t_v2 sem)
-{
- sem->locked = 1;
-}
-
-/** Returns the current time in milliseconds,
- * may be the same as sys_jiffies or at least based on it. */
-u32_t
-sys_now (void)
-{
- struct timespec now;
-
- if (unlikely (0 != clock_gettime (CLOCK_MONOTONIC, &now)))
- {
- NSCOMM_LOGERR ("Failed to get time, errno = %d", errno);
- }
-
- return 1000 * now.tv_sec + now.tv_nsec / 1000000;
-}
-
-long
-sys_jiffies (void)
-{
- return sys_now ();
-}
-
-err_t
-sys_sem_new_v2 (sys_sem_t_v2 * sem, u8_t isUnLockd)
-{
- int retVal;
- if (!sem)
- {
- return -1;
- }
- *sem = malloc (sizeof (common_mem_spinlock_t));
-
- if (NULL == *sem)
- {
- return -1;
- }
- else
- {
- retVal =
- MEMSET_S (*sem, sizeof (common_mem_spinlock_t), 0,
- sizeof (common_mem_spinlock_t));
- if (EOK != retVal)
- {
- NSCOMM_LOGERR ("MEMSET_S failed]ret=%d", retVal);
- free (*sem);
- *sem = NULL;
- return -1;
- }
- common_mem_spinlock_init (*sem);
- }
-
- if (!isUnLockd)
- {
- common_mem_spinlock_lock (*sem);
- }
-
- return 0;
-}
-
-void
-sys_sem_free_v2 (sys_sem_t_v2 * sem)
-{
- if ((sem != NULL) && (*sem != NULL))
- {
- free (*sem);
- *sem = NULL;
- }
- else
- {
- }
-}
-
-void
-sys_sem_signal_v2 (sys_sem_t_v2 * sem)
-{
- common_mem_spinlock_unlock (*sem);
-}
-
-void
-sys_sem_signal_s_v2 (sys_sem_t_v2 sem)
-{
- common_mem_spinlock_unlock (sem);
-}
-
-u32_t
-sys_arch_sem_trywait_v2 (sys_sem_t_v2 * sem)
-{
- return (u32_t) common_mem_spinlock_trylock (*sem);
-}
-
-u32_t
-sys_arch_sem_wait_v2 (sys_sem_t_v2 * pstsem)
-{
- common_mem_spinlock_lock (*pstsem);
- return 0;
-}
-
-u32_t
-sys_arch_sem_wait_s_v2 (sys_sem_t_v2 sem)
-{
- common_mem_spinlock_lock (sem);
- return 0;
-}
-
-volatile pid_t g_sys_host_pid = SYS_HOST_INITIAL_PID;
-
-/*****************************************************************************
-* Prototype : get_exec_name_by_pid
-* Description : get exec name by pid
-* Input : pid_t pid
-* char *task_name
-* Output : None
-* Return Value : void
-* Calls :
-* Called By :
-*****************************************************************************/
-void
-get_exec_name_by_pid (pid_t pid, char *task_name, int task_name_len)
-{
- int retVal;
- char path[READ_FILE_BUFLEN] = { 0 };
- char buf[READ_FILE_BUFLEN] = { 0 };
-
- retVal = SPRINTF_S (path, sizeof (path), "/proc/%d/status", pid);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- return;
- }
-
- FILE *fp = fopen (path, "r");
- if (NULL != fp)
- {
- if (fgets (buf, READ_FILE_BUFLEN - 1, fp) == NULL)
- {
- fclose (fp);
- return;
- }
- fclose (fp);
-
-#ifdef SECUREC_LIB
- retVal = SSCANF_S (buf, "%*s %s", task_name, task_name_len);
-#else
- retVal = SSCANF_S (buf, "%*s %s", task_name);
-#endif
-
- if (1 != retVal)
- {
- NSSOC_LOGERR ("SSCANF_S failed]ret=%d", retVal);
- return;
- }
- }
-}
-
-pid_t
-get_hostpid_from_file_one_time (u32_t pid)
-{
- int retVal;
- char path[READ_FILE_BUFLEN] = { 0 };
- char buf[READ_FILE_BUFLEN] = { 0 };
- char fmt[READ_FILE_BUFLEN] = { 0 };
- char out[READ_FILE_BUFLEN] = { 0 };
- char task_name[BUF_SIZE_FILEPATH] = { 0 };
- pid_t hostpid = SYS_HOST_INITIAL_PID;
- get_exec_name_by_pid (pid, task_name, BUF_SIZE_FILEPATH);
-
- retVal = SPRINTF_S (fmt, sizeof (fmt), "%s%s", task_name, " (%s");
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- return hostpid;
- }
- retVal = SPRINTF_S (path, sizeof (path), "/proc/%d/sched", pid);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- return hostpid;
- }
- FILE *fp = fopen (path, "r");
- if (NULL != fp)
- {
- if (fgets (buf, READ_FILE_BUFLEN - 1, fp) == NULL)
- {
- fclose (fp);
- return hostpid;
- }
- fclose (fp);
- /* Compiler needs "fmt" to be like "%s%s" to
- understand. But we have "fmt" already prepared and used here. It can
- be suppressed, not an issue
- */
-#pragma GCC diagnostic ignored "-Wformat-nonliteral"
- retVal = SSCANF_S (buf, fmt, out, READ_FILE_BUFLEN);
- if (-1 == retVal)
- {
- NSPOL_LOGERR ("SSCANF_S failed]ret=%d", retVal);
- return hostpid;
- }
- }
-
- hostpid = (pid_t) strtol (out, NULL, 0);
- if (hostpid == 0)
- {
- hostpid = 1;
- }
-
- return hostpid;
-}
-
-#define MAX_GET_PID_TIME 10
-pid_t
-get_hostpid_from_file (u32_t pid)
-{
- pid_t ret_pid = SYS_HOST_INITIAL_PID;
- int i = 0;
- ret_pid = get_hostpid_from_file_one_time (pid);
- while (0 == ret_pid || ret_pid == SYS_HOST_INITIAL_PID)
- {
- i++;
- if (i > MAX_GET_PID_TIME)
- {
- NSFW_LOGERR ("get pid failed]pid=%u,hostpid=%d", pid, ret_pid);
- break;
- }
- sys_sleep_ns (0, 5000000);
- ret_pid = get_hostpid_from_file_one_time (pid);
- }
-
- return ret_pid;
-}
-
-/*****************************************************************************
-* Prototype : get_hostpid_from_file
-* Description : get host pid by sub namespace pid in docker
-* Input : uint32_t pid
-* Output : None
-* Return Value : uint32_t
-* Calls :
-* Called By :
-*****************************************************************************/
-pid_t
-sys_get_hostpid_from_file (pid_t pid)
-{
- g_sys_host_pid = get_hostpid_from_file (pid);
- NSCOMM_LOGDBG ("ok]cur pid=%d, input pid=%d", g_sys_host_pid, pid);
- return g_sys_host_pid;
-}
-
-pid_t
-update_sys_pid ()
-{
- g_sys_host_pid = SYS_HOST_INITIAL_PID;
- return get_sys_pid ();
-}
-
-/*****************************************************************************
-* Prototype : get_pid_namespace
-* Description : Get namespace of pid
-* Input : uint32_t pid
-* Output : None
-* Return Value : uint64_t
-* Calls :
-* Called By :
-*****************************************************************************/
-uint64_t
-get_pid_namespace (pid_t pid)
-{
- char buf[BUF_SIZE_FILEPATH] = { 0 };
- char path[BUF_SIZE_FILEPATH] = { 0 };
- const char *pstart;
- int ret = 0;
- if (!pid)
- {
- NSSOC_LOGERR ("Pid is zero!");
- return 0;
- }
-
- ret =
- SNPRINTF_S (path, sizeof (path), sizeof (path) - 1, "/proc/%d/ns/pid",
- pid);
- if (-1 == ret)
- {
- NSSOC_LOGERR ("SNPRINTF_S failed]ret=%d", ret);
- return 0;
- }
-
- ret = readlink (path, buf, sizeof (buf) - 1);
- if (ret <= (int) sizeof (STR_PID))
- {
- NSSOC_LOGERR ("readlink pid ns file error]ret=%d", ret);
- return 0;
- }
-
- buf[ret - 1] = 0;
- pstart = &(buf[sizeof (STR_PID)]);
- return strtoull (pstart, NULL, 10);
-}