14d6c458bSopenharmony_ci/*
24d6c458bSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License.
54d6c458bSopenharmony_ci * You may obtain a copy of the License at
64d6c458bSopenharmony_ci *
74d6c458bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d6c458bSopenharmony_ci *
94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and
134d6c458bSopenharmony_ci * limitations under the License.
144d6c458bSopenharmony_ci */
154d6c458bSopenharmony_ci
164d6c458bSopenharmony_ci#include "process_helper.h"
174d6c458bSopenharmony_ci
184d6c458bSopenharmony_ci#include <map>
194d6c458bSopenharmony_ci#include <sys/sysctl.h>
204d6c458bSopenharmony_ci
214d6c458bSopenharmony_cinamespace Commonlibrary::Platform {
224d6c458bSopenharmony_ci
234d6c458bSopenharmony_ci#define MACOS_ARG_MAX 4096
244d6c458bSopenharmony_ci#define MACOS_NOT_EXIST (-1)
254d6c458bSopenharmony_ci
264d6c458bSopenharmony_cienum class SYSArgUnix : uint8_t {
274d6c458bSopenharmony_ci    SC_ARG_MAX = 0, // kernel
284d6c458bSopenharmony_ci    SC_CHILD_MAX = 1,
294d6c458bSopenharmony_ci    SC_CLK_TCK = 2,
304d6c458bSopenharmony_ci    SC_NGROUPS_MAX = 3,
314d6c458bSopenharmony_ci    SC_OPEN_MAX = 4,
324d6c458bSopenharmony_ci    SC_STREAM_MAX = 5,
334d6c458bSopenharmony_ci    SC_TZNAME_MAX = 6,
344d6c458bSopenharmony_ci    SC_JOB_CONTROL = 7,
354d6c458bSopenharmony_ci    SC_SAVED_IDS = 8,
364d6c458bSopenharmony_ci    SC_REALTIME_SIGNALS = 9,
374d6c458bSopenharmony_ci    SC_PRIORITY_SCHEDULING = 10,
384d6c458bSopenharmony_ci    SC_TIMERS = 11,
394d6c458bSopenharmony_ci    SC_ASYNCHRONOUS_IO = 12,
404d6c458bSopenharmony_ci    SC_PRIORITIZED_IO = 13,
414d6c458bSopenharmony_ci    SC_SYNCHRONIZED_IO = 14,
424d6c458bSopenharmony_ci    SC_FSYNC = 15,
434d6c458bSopenharmony_ci    SC_MAPPED_FILES = 16,
444d6c458bSopenharmony_ci    SC_MEMLOCK = 17,
454d6c458bSopenharmony_ci    SC_MEMLOCK_RANGE = 18,
464d6c458bSopenharmony_ci    SC_MEMORY_PROTECTION = 19,
474d6c458bSopenharmony_ci    SC_MESSAGE_PASSING = 20,
484d6c458bSopenharmony_ci    SC_SEMAPHORES = 21,
494d6c458bSopenharmony_ci    SC_SHARED_MEMORY_OBJECTS = 22,
504d6c458bSopenharmony_ci    SC_AIO_LISTIO_MAX = 23,
514d6c458bSopenharmony_ci    SC_AIO_MAX = 24,
524d6c458bSopenharmony_ci    SC_AIO_PRIO_DELTA_MAX = 25,
534d6c458bSopenharmony_ci    SC_DELAYTIMER_MAX = 26,
544d6c458bSopenharmony_ci    SC_MQ_OPEN_MAX = 27,
554d6c458bSopenharmony_ci    SC_MQ_PRIO_MAX = 28,
564d6c458bSopenharmony_ci    SC_VERSION = 29,
574d6c458bSopenharmony_ci    SC_PAGESIZE = 30,  // same with _SC_PAGE_SIZE in unix
584d6c458bSopenharmony_ci    SC_RTSIG_MAX = 31,
594d6c458bSopenharmony_ci    SC_SEM_NSEMS_MAX = 32,
604d6c458bSopenharmony_ci    SC_SEM_VALUE_MAX = 33,
614d6c458bSopenharmony_ci    SC_SIGQUEUE_MAX = 34,
624d6c458bSopenharmony_ci    SC_TIMER_MAX = 35,
634d6c458bSopenharmony_ci    SC_BC_BASE_MAX = 36,
644d6c458bSopenharmony_ci    SC_BC_DIM_MAX = 37,
654d6c458bSopenharmony_ci    SC_BC_SCALE_MAX = 38,
664d6c458bSopenharmony_ci    SC_BC_STRING_MAX = 39,
674d6c458bSopenharmony_ci    SC_COLL_WEIGHTS_MAX = 40,
684d6c458bSopenharmony_ci    SC_EXPR_NEST_MAX = 42,
694d6c458bSopenharmony_ci    SC_LINE_MAX = 43,
704d6c458bSopenharmony_ci    SC_RE_DUP_MAX = 44,
714d6c458bSopenharmony_ci    SC_2_VERSION = 46,
724d6c458bSopenharmony_ci    SC_2_C_BIND = 47,
734d6c458bSopenharmony_ci    SC_2_C_DEV = 48,
744d6c458bSopenharmony_ci    SC_2_FORT_DEV = 49,
754d6c458bSopenharmony_ci    SC_2_FORT_RUN = 50,
764d6c458bSopenharmony_ci    SC_2_SW_DEV = 51,
774d6c458bSopenharmony_ci    SC_2_LOCALEDEF = 52,
784d6c458bSopenharmony_ci    SC_IOV_MAX = 60,   //  same with _SC_UIO_MAXIOV in unix
794d6c458bSopenharmony_ci    SC_THREADS = 67,
804d6c458bSopenharmony_ci    SC_THREAD_SAFE_FUNCTIONS = 68,
814d6c458bSopenharmony_ci    SC_GETGR_R_SIZE_MAX = 69,
824d6c458bSopenharmony_ci    SC_GETPW_R_SIZE_MAX = 70,
834d6c458bSopenharmony_ci    SC_LOGIN_NAME_MAX = 71,
844d6c458bSopenharmony_ci    SC_TTY_NAME_MAX = 72,
854d6c458bSopenharmony_ci    SC_THREAD_DESTRUCTOR_ITERATIONS = 73,
864d6c458bSopenharmony_ci    SC_THREAD_KEYS_MAX = 74,
874d6c458bSopenharmony_ci    SC_THREAD_STACK_MIN = 75,
884d6c458bSopenharmony_ci    SC_THREAD_THREADS_MAX = 76,
894d6c458bSopenharmony_ci    SC_THREAD_ATTR_STACKADDR = 77,
904d6c458bSopenharmony_ci    SC_THREAD_ATTR_STACKSIZE = 78,
914d6c458bSopenharmony_ci    SC_THREAD_PRIORITY_SCHEDULING = 79,
924d6c458bSopenharmony_ci    SC_THREAD_PRIO_INHERIT = 80,
934d6c458bSopenharmony_ci    SC_THREAD_PRIO_PROTECT = 81,
944d6c458bSopenharmony_ci    SC_THREAD_PROCESS_SHARED = 82,
954d6c458bSopenharmony_ci    SC_NPROCESSORS_CONF = 83,
964d6c458bSopenharmony_ci    SC_NPROCESSORS_ONLN = 84,
974d6c458bSopenharmony_ci    SC_PHYS_PAGES = 85,
984d6c458bSopenharmony_ci    SC_AVPHYS_PAGES = 86,
994d6c458bSopenharmony_ci    SC_ATEXIT_MAX = 87,
1004d6c458bSopenharmony_ci    SC_PASS_MAX = 88,
1014d6c458bSopenharmony_ci    SC_XOPEN_VERSION = 89,
1024d6c458bSopenharmony_ci    SC_XOPEN_XCU_VERSION = 90,
1034d6c458bSopenharmony_ci    SC_XOPEN_UNIX = 91,
1044d6c458bSopenharmony_ci    SC_XOPEN_CRYPT = 92,
1054d6c458bSopenharmony_ci    SC_XOPEN_ENH_I18N = 93,
1064d6c458bSopenharmony_ci    SC_XOPEN_SHM = 94,
1074d6c458bSopenharmony_ci    SC_2_CHAR_TERM = 95,
1084d6c458bSopenharmony_ci    SC_2_UPE = 97,
1094d6c458bSopenharmony_ci    SC_XOPEN_XPG2 = 98,
1104d6c458bSopenharmony_ci    SC_XOPEN_XPG3 = 99,
1114d6c458bSopenharmony_ci    SC_XOPEN_XPG4 = 100,
1124d6c458bSopenharmony_ci    SC_NZERO = 109,
1134d6c458bSopenharmony_ci    SC_XBS5_ILP32_OFF32 = 125,
1144d6c458bSopenharmony_ci    SC_XBS5_ILP32_OFFBIG = 126,
1154d6c458bSopenharmony_ci    SC_XBS5_LP64_OFF64 = 127,
1164d6c458bSopenharmony_ci    SC_XBS5_LPBIG_OFFBIG = 128,
1174d6c458bSopenharmony_ci    SC_XOPEN_LEGACY = 129,
1184d6c458bSopenharmony_ci    SC_XOPEN_REALTIME = 130,
1194d6c458bSopenharmony_ci    SC_XOPEN_REALTIME_THREADS = 131,
1204d6c458bSopenharmony_ci    SC_ADVISORY_INFO = 132,
1214d6c458bSopenharmony_ci    SC_BARRIERS = 133,
1224d6c458bSopenharmony_ci    SC_CLOCK_SELECTION = 137,
1234d6c458bSopenharmony_ci    SC_CPUTIME = 138,
1244d6c458bSopenharmony_ci    SC_THREAD_CPUTIME = 139,
1254d6c458bSopenharmony_ci    SC_MONOTONIC_CLOCK = 149,
1264d6c458bSopenharmony_ci    SC_READER_WRITER_LOCKS = 153,
1274d6c458bSopenharmony_ci    SC_SPIN_LOCKS = 154,
1284d6c458bSopenharmony_ci    SC_REGEXP = 155,
1294d6c458bSopenharmony_ci    SC_SHELL = 157,
1304d6c458bSopenharmony_ci    SC_SPAWN = 159,
1314d6c458bSopenharmony_ci    SC_SPORADIC_SERVER = 160,
1324d6c458bSopenharmony_ci    SC_THREAD_SPORADIC_SERVER = 161,
1334d6c458bSopenharmony_ci    SC_TIMEOUTS = 164,
1344d6c458bSopenharmony_ci    SC_TYPED_MEMORY_OBJECTS = 165,
1354d6c458bSopenharmony_ci    SC_2_PBS = 168,
1364d6c458bSopenharmony_ci    SC_2_PBS_ACCOUNTING = 169,
1374d6c458bSopenharmony_ci    SC_2_PBS_LOCATE = 170,
1384d6c458bSopenharmony_ci    SC_2_PBS_MESSAGE = 171,
1394d6c458bSopenharmony_ci    SC_2_PBS_TRACK = 172,
1404d6c458bSopenharmony_ci    SC_SYMLOOP_MAX = 173,
1414d6c458bSopenharmony_ci    SC_STREAMS = 174,
1424d6c458bSopenharmony_ci    SC_2_PBS_CHECKPOINT = 175,
1434d6c458bSopenharmony_ci    SC_V6_ILP32_OFF32 = 176,
1444d6c458bSopenharmony_ci    SC_V6_ILP32_OFFBIG = 177,
1454d6c458bSopenharmony_ci    SC_V6_LP64_OFF64 = 178,
1464d6c458bSopenharmony_ci    SC_V6_LPBIG_OFFBIG = 179,
1474d6c458bSopenharmony_ci    SC_HOST_NAME_MAX = 180,
1484d6c458bSopenharmony_ci    SC_TRACE = 181,
1494d6c458bSopenharmony_ci    SC_TRACE_EVENT_FILTER = 182,
1504d6c458bSopenharmony_ci    SC_TRACE_INHERIT = 183,
1514d6c458bSopenharmony_ci    SC_TRACE_LOG = 184,
1524d6c458bSopenharmony_ci    SC_IPV6 = 235,
1534d6c458bSopenharmony_ci    SC_RAW_SOCKETS = 236,
1544d6c458bSopenharmony_ci    SC_V7_ILP32_OFF32 = 237,
1554d6c458bSopenharmony_ci    SC_V7_ILP32_OFFBIG = 238,
1564d6c458bSopenharmony_ci    SC_V7_LP64_OFF64 = 239,
1574d6c458bSopenharmony_ci    SC_V7_LPBIG_OFFBIG = 240,
1584d6c458bSopenharmony_ci    SC_SS_REPL_MAX = 241,
1594d6c458bSopenharmony_ci    SC_TRACE_EVENT_NAME_MAX = 242,
1604d6c458bSopenharmony_ci    SC_TRACE_NAME_MAX = 243,
1614d6c458bSopenharmony_ci    SC_TRACE_SYS_MAX = 244,
1624d6c458bSopenharmony_ci    SC_TRACE_USER_EVENT_MAX = 245,
1634d6c458bSopenharmony_ci    SC_XOPEN_STREAMS = 246,
1644d6c458bSopenharmony_ci    SC_THREAD_ROBUST_PRIO_INHERIT = 247,
1654d6c458bSopenharmony_ci    SC_THREAD_ROBUST_PRIO_PROTECT = 248
1664d6c458bSopenharmony_ci};
1674d6c458bSopenharmony_ci
1684d6c458bSopenharmony_cienum class SYSArgMacOS : uint16_t {
1694d6c458bSopenharmony_ci    SC_ARG_MAX = 1,
1704d6c458bSopenharmony_ci    SC_CHILD_MAX = 2,
1714d6c458bSopenharmony_ci    SC_CLK_TCK = 3,
1724d6c458bSopenharmony_ci    SC_NGROUPS_MAX = 4,
1734d6c458bSopenharmony_ci    SC_OPEN_MAX = 5,
1744d6c458bSopenharmony_ci    SC_JOB_CONTROL = 6,
1754d6c458bSopenharmony_ci    SC_SAVED_IDS = 7,
1764d6c458bSopenharmony_ci    SC_VERSION = 8,
1774d6c458bSopenharmony_ci    SC_BC_BASE_MAX = 9,
1784d6c458bSopenharmony_ci    SC_BC_DIM_MAX = 10,
1794d6c458bSopenharmony_ci    SC_BC_SCALE_MAX = 11,
1804d6c458bSopenharmony_ci    SC_BC_STRING_MAX = 12,
1814d6c458bSopenharmony_ci    SC_COLL_WEIGHTS_MAX = 13,
1824d6c458bSopenharmony_ci    SC_EXPR_NEST_MAX = 14,
1834d6c458bSopenharmony_ci    SC_LINE_MAX = 15,
1844d6c458bSopenharmony_ci    SC_RE_DUP_MAX = 16,
1854d6c458bSopenharmony_ci    SC_2_VERSION = 17,
1864d6c458bSopenharmony_ci    SC_2_C_BIND = 18,
1874d6c458bSopenharmony_ci    SC_2_C_DEV = 19,
1884d6c458bSopenharmony_ci    SC_2_CHAR_TERM = 20,
1894d6c458bSopenharmony_ci    SC_2_FORT_DEV = 21,
1904d6c458bSopenharmony_ci    SC_2_FORT_RUN = 22,
1914d6c458bSopenharmony_ci    SC_2_LOCALEDEF = 23,
1924d6c458bSopenharmony_ci    SC_2_SW_DEV = 24,
1934d6c458bSopenharmony_ci    SC_2_UPE = 25,
1944d6c458bSopenharmony_ci    SC_STREAM_MAX = 26,
1954d6c458bSopenharmony_ci    SC_TZNAME_MAX = 27,
1964d6c458bSopenharmony_ci    SC_ASYNCHRONOUS_IO = 28,
1974d6c458bSopenharmony_ci    SC_PAGESIZE = 29,   // same with _SC_PAGE_SIZE in mac platform
1984d6c458bSopenharmony_ci    SC_MEMLOCK = 30,
1994d6c458bSopenharmony_ci    SC_MEMLOCK_RANGE = 31,
2004d6c458bSopenharmony_ci    SC_MEMORY_PROTECTION = 32,
2014d6c458bSopenharmony_ci    SC_MESSAGE_PASSING = 33,
2024d6c458bSopenharmony_ci    SC_PRIORITIZED_IO = 34,
2034d6c458bSopenharmony_ci    SC_PRIORITY_SCHEDULING = 35,
2044d6c458bSopenharmony_ci    SC_REALTIME_SIGNALS = 36,
2054d6c458bSopenharmony_ci    SC_SEMAPHORES = 37,
2064d6c458bSopenharmony_ci    SC_FSYNC = 38,
2074d6c458bSopenharmony_ci    SC_SHARED_MEMORY_OBJECTS = 39,
2084d6c458bSopenharmony_ci    SC_SYNCHRONIZED_IO = 40,
2094d6c458bSopenharmony_ci    SC_TIMERS = 41,
2104d6c458bSopenharmony_ci    SC_AIO_LISTIO_MAX = 42,
2114d6c458bSopenharmony_ci    SC_AIO_MAX = 43,
2124d6c458bSopenharmony_ci    SC_AIO_PRIO_DELTA_MAX = 44,
2134d6c458bSopenharmony_ci    SC_DELAYTIMER_MAX = 45,
2144d6c458bSopenharmony_ci    SC_MQ_OPEN_MAX = 46,
2154d6c458bSopenharmony_ci    SC_MAPPED_FILES = 47,
2164d6c458bSopenharmony_ci    SC_RTSIG_MAX = 48,
2174d6c458bSopenharmony_ci    SC_SEM_NSEMS_MAX = 49,
2184d6c458bSopenharmony_ci    SC_SEM_VALUE_MAX = 50,
2194d6c458bSopenharmony_ci    SC_SIGQUEUE_MAX = 51,
2204d6c458bSopenharmony_ci    SC_TIMER_MAX = 52,
2214d6c458bSopenharmony_ci    SC_NPROCESSORS_CONF = 57,
2224d6c458bSopenharmony_ci    SC_NPROCESSORS_ONLN = 58,
2234d6c458bSopenharmony_ci    SC_2_PBS = 59,
2244d6c458bSopenharmony_ci    SC_2_PBS_ACCOUNTING = 60,
2254d6c458bSopenharmony_ci    SC_2_PBS_CHECKPOINT = 61,
2264d6c458bSopenharmony_ci    SC_2_PBS_LOCATE = 62,
2274d6c458bSopenharmony_ci    SC_2_PBS_MESSAGE = 63,
2284d6c458bSopenharmony_ci    SC_2_PBS_TRACK = 64,
2294d6c458bSopenharmony_ci    SC_ADVISORY_INFO = 65,
2304d6c458bSopenharmony_ci    SC_BARRIERS = 66,
2314d6c458bSopenharmony_ci    SC_CLOCK_SELECTION = 67,
2324d6c458bSopenharmony_ci    SC_CPUTIME = 68,
2334d6c458bSopenharmony_ci    SC_FILE_LOCKING = 69,
2344d6c458bSopenharmony_ci    SC_GETGR_R_SIZE_MAX = 70,
2354d6c458bSopenharmony_ci    SC_GETPW_R_SIZE_MAX = 71,
2364d6c458bSopenharmony_ci    SC_HOST_NAME_MAX = 72,
2374d6c458bSopenharmony_ci    SC_LOGIN_NAME_MAX = 73,
2384d6c458bSopenharmony_ci    SC_MONOTONIC_CLOCK = 74,
2394d6c458bSopenharmony_ci    SC_MQ_PRIO_MAX = 75,
2404d6c458bSopenharmony_ci    SC_READER_WRITER_LOCKS = 76,
2414d6c458bSopenharmony_ci    SC_REGEXP = 77,
2424d6c458bSopenharmony_ci    SC_SHELL = 78,
2434d6c458bSopenharmony_ci    SC_SPAWN = 79,
2444d6c458bSopenharmony_ci    SC_SPIN_LOCKS = 80,
2454d6c458bSopenharmony_ci    SC_SPORADIC_SERVER = 81,
2464d6c458bSopenharmony_ci    SC_THREAD_ATTR_STACKADDR = 82,
2474d6c458bSopenharmony_ci    SC_THREAD_ATTR_STACKSIZE = 83,
2484d6c458bSopenharmony_ci    SC_THREAD_CPUTIME = 84,
2494d6c458bSopenharmony_ci    SC_THREAD_DESTRUCTOR_ITERATIONS = 85,
2504d6c458bSopenharmony_ci    SC_THREAD_KEYS_MAX = 86,
2514d6c458bSopenharmony_ci    SC_THREAD_PRIO_INHERIT = 87,
2524d6c458bSopenharmony_ci    SC_THREAD_PRIO_PROTECT = 88,
2534d6c458bSopenharmony_ci    SC_THREAD_PRIORITY_SCHEDULING = 89,
2544d6c458bSopenharmony_ci    SC_THREAD_PROCESS_SHARED = 90,
2554d6c458bSopenharmony_ci    SC_THREAD_SAFE_FUNCTIONS = 91,
2564d6c458bSopenharmony_ci    SC_THREAD_SPORADIC_SERVER = 92,
2574d6c458bSopenharmony_ci    SC_THREAD_STACK_MIN = 93,
2584d6c458bSopenharmony_ci    SC_THREAD_THREADS_MAX = 94,
2594d6c458bSopenharmony_ci    SC_TIMEOUTS = 95,
2604d6c458bSopenharmony_ci    SC_THREADS = 96,
2614d6c458bSopenharmony_ci    SC_TRACE = 97,
2624d6c458bSopenharmony_ci    SC_TRACE_EVENT_FILTER = 98,
2634d6c458bSopenharmony_ci    SC_TRACE_INHERIT = 99,
2644d6c458bSopenharmony_ci    SC_TRACE_LOG = 100,
2654d6c458bSopenharmony_ci    SC_TTY_NAME_MAX = 101,
2664d6c458bSopenharmony_ci    SC_TYPED_MEMORY_OBJECTS = 102,
2674d6c458bSopenharmony_ci    SC_V6_ILP32_OFF32 = 103,
2684d6c458bSopenharmony_ci    SC_V6_ILP32_OFFBIG = 104,
2694d6c458bSopenharmony_ci    SC_V6_LP64_OFF64 = 105,
2704d6c458bSopenharmony_ci    SC_V6_LPBIG_OFFBIG = 106,
2714d6c458bSopenharmony_ci    SC_IPV6 = 118,
2724d6c458bSopenharmony_ci    SC_RAW_SOCKETS = 119,
2734d6c458bSopenharmony_ci    SC_SYMLOOP_MAX = 120,
2744d6c458bSopenharmony_ci    SC_ATEXIT_MAX = 107,
2754d6c458bSopenharmony_ci    SC_IOV_MAX = 56,
2764d6c458bSopenharmony_ci    SC_XOPEN_CRYPT = 108,
2774d6c458bSopenharmony_ci    SC_XOPEN_ENH_I18N = 109,
2784d6c458bSopenharmony_ci    SC_XOPEN_LEGACY = 110,
2794d6c458bSopenharmony_ci    SC_XOPEN_REALTIME = 111,
2804d6c458bSopenharmony_ci    SC_XOPEN_REALTIME_THREADS = 112,
2814d6c458bSopenharmony_ci    SC_XOPEN_SHM = 113,
2824d6c458bSopenharmony_ci    SC_XOPEN_STREAMS = 114,
2834d6c458bSopenharmony_ci    SC_XOPEN_UNIX = 115,
2844d6c458bSopenharmony_ci    SC_XOPEN_VERSION = 116,
2854d6c458bSopenharmony_ci    SC_XOPEN_XCU_VERSION = 121,
2864d6c458bSopenharmony_ci    SC_XBS5_ILP32_OFF32 = 122,
2874d6c458bSopenharmony_ci    SC_XBS5_ILP32_OFFBIG = 123,
2884d6c458bSopenharmony_ci    SC_XBS5_LP64_OFF64 = 124,
2894d6c458bSopenharmony_ci    SC_XBS5_LPBIG_OFFBIG = 125,
2904d6c458bSopenharmony_ci    SC_SS_REPL_MAX = 126,
2914d6c458bSopenharmony_ci    SC_TRACE_EVENT_NAME_MAX = 127,
2924d6c458bSopenharmony_ci    SC_TRACE_NAME_MAX = 128,
2934d6c458bSopenharmony_ci    SC_TRACE_SYS_MAX = 129,
2944d6c458bSopenharmony_ci    SC_TRACE_USER_EVENT_MAX = 130,
2954d6c458bSopenharmony_ci    SC_PASS_MAX = 131,
2964d6c458bSopenharmony_ci    SC_PHYS_PAGES = 200
2974d6c458bSopenharmony_ci};
2984d6c458bSopenharmony_ci
2994d6c458bSopenharmony_cistd::map<SYSArgUnix, SYSArgMacOS> sysconfig_map = {
3004d6c458bSopenharmony_ci    {SYSArgUnix::SC_ARG_MAX, SYSArgMacOS::SC_ARG_MAX},
3014d6c458bSopenharmony_ci    {SYSArgUnix::SC_CHILD_MAX, SYSArgMacOS::SC_CHILD_MAX},
3024d6c458bSopenharmony_ci    {SYSArgUnix::SC_CLK_TCK, SYSArgMacOS::SC_CLK_TCK},
3034d6c458bSopenharmony_ci    {SYSArgUnix::SC_NGROUPS_MAX, SYSArgMacOS::SC_NGROUPS_MAX},
3044d6c458bSopenharmony_ci    {SYSArgUnix::SC_OPEN_MAX, SYSArgMacOS::SC_OPEN_MAX},
3054d6c458bSopenharmony_ci    {SYSArgUnix::SC_STREAM_MAX, SYSArgMacOS::SC_STREAM_MAX},
3064d6c458bSopenharmony_ci    {SYSArgUnix::SC_TZNAME_MAX, SYSArgMacOS::SC_TZNAME_MAX},
3074d6c458bSopenharmony_ci    {SYSArgUnix::SC_JOB_CONTROL, SYSArgMacOS::SC_JOB_CONTROL},
3084d6c458bSopenharmony_ci    {SYSArgUnix::SC_SAVED_IDS, SYSArgMacOS::SC_SAVED_IDS},
3094d6c458bSopenharmony_ci    {SYSArgUnix::SC_REALTIME_SIGNALS, SYSArgMacOS::SC_REALTIME_SIGNALS},
3104d6c458bSopenharmony_ci    {SYSArgUnix::SC_PRIORITY_SCHEDULING, SYSArgMacOS::SC_PRIORITY_SCHEDULING},
3114d6c458bSopenharmony_ci    {SYSArgUnix::SC_TIMERS, SYSArgMacOS::SC_TIMERS},
3124d6c458bSopenharmony_ci    {SYSArgUnix::SC_ASYNCHRONOUS_IO, SYSArgMacOS::SC_ASYNCHRONOUS_IO},
3134d6c458bSopenharmony_ci    {SYSArgUnix::SC_PRIORITIZED_IO, SYSArgMacOS::SC_PRIORITIZED_IO},
3144d6c458bSopenharmony_ci    {SYSArgUnix::SC_SYNCHRONIZED_IO, SYSArgMacOS::SC_SYNCHRONIZED_IO},
3154d6c458bSopenharmony_ci    {SYSArgUnix::SC_FSYNC, SYSArgMacOS::SC_FSYNC},
3164d6c458bSopenharmony_ci    {SYSArgUnix::SC_MAPPED_FILES, SYSArgMacOS::SC_MAPPED_FILES},
3174d6c458bSopenharmony_ci    {SYSArgUnix::SC_MEMLOCK, SYSArgMacOS::SC_MEMLOCK},
3184d6c458bSopenharmony_ci    {SYSArgUnix::SC_MEMLOCK_RANGE, SYSArgMacOS::SC_MEMLOCK_RANGE},
3194d6c458bSopenharmony_ci    {SYSArgUnix::SC_MEMORY_PROTECTION, SYSArgMacOS::SC_MEMORY_PROTECTION},
3204d6c458bSopenharmony_ci    {SYSArgUnix::SC_MESSAGE_PASSING, SYSArgMacOS::SC_MESSAGE_PASSING},
3214d6c458bSopenharmony_ci    {SYSArgUnix::SC_SEMAPHORES, SYSArgMacOS::SC_SEMAPHORES},
3224d6c458bSopenharmony_ci    {SYSArgUnix::SC_SHARED_MEMORY_OBJECTS, SYSArgMacOS::SC_SHARED_MEMORY_OBJECTS},
3234d6c458bSopenharmony_ci    {SYSArgUnix::SC_AIO_LISTIO_MAX, SYSArgMacOS::SC_AIO_LISTIO_MAX},
3244d6c458bSopenharmony_ci    {SYSArgUnix::SC_AIO_MAX, SYSArgMacOS::SC_AIO_MAX},
3254d6c458bSopenharmony_ci    {SYSArgUnix::SC_AIO_PRIO_DELTA_MAX, SYSArgMacOS::SC_AIO_PRIO_DELTA_MAX},
3264d6c458bSopenharmony_ci    {SYSArgUnix::SC_DELAYTIMER_MAX, SYSArgMacOS::SC_DELAYTIMER_MAX},
3274d6c458bSopenharmony_ci    {SYSArgUnix::SC_MQ_OPEN_MAX, SYSArgMacOS::SC_MQ_OPEN_MAX},
3284d6c458bSopenharmony_ci    {SYSArgUnix::SC_MQ_PRIO_MAX, SYSArgMacOS::SC_MQ_PRIO_MAX},
3294d6c458bSopenharmony_ci    {SYSArgUnix::SC_VERSION, SYSArgMacOS::SC_VERSION},
3304d6c458bSopenharmony_ci    {SYSArgUnix::SC_PAGESIZE, SYSArgMacOS::SC_PAGESIZE},
3314d6c458bSopenharmony_ci    {SYSArgUnix::SC_RTSIG_MAX, SYSArgMacOS::SC_RTSIG_MAX},
3324d6c458bSopenharmony_ci    {SYSArgUnix::SC_SEM_NSEMS_MAX, SYSArgMacOS::SC_SEM_NSEMS_MAX},
3334d6c458bSopenharmony_ci    {SYSArgUnix::SC_SEM_VALUE_MAX, SYSArgMacOS::SC_SEM_VALUE_MAX},
3344d6c458bSopenharmony_ci    {SYSArgUnix::SC_SIGQUEUE_MAX, SYSArgMacOS::SC_SIGQUEUE_MAX},
3354d6c458bSopenharmony_ci    {SYSArgUnix::SC_TIMER_MAX, SYSArgMacOS::SC_TIMER_MAX},
3364d6c458bSopenharmony_ci    {SYSArgUnix::SC_BC_BASE_MAX, SYSArgMacOS::SC_BC_BASE_MAX},
3374d6c458bSopenharmony_ci    {SYSArgUnix::SC_BC_DIM_MAX, SYSArgMacOS::SC_BC_DIM_MAX},
3384d6c458bSopenharmony_ci    {SYSArgUnix::SC_BC_SCALE_MAX, SYSArgMacOS::SC_BC_SCALE_MAX},
3394d6c458bSopenharmony_ci    {SYSArgUnix::SC_BC_STRING_MAX, SYSArgMacOS::SC_BC_STRING_MAX},
3404d6c458bSopenharmony_ci    {SYSArgUnix::SC_COLL_WEIGHTS_MAX, SYSArgMacOS::SC_COLL_WEIGHTS_MAX},
3414d6c458bSopenharmony_ci    {SYSArgUnix::SC_EXPR_NEST_MAX, SYSArgMacOS::SC_EXPR_NEST_MAX},
3424d6c458bSopenharmony_ci    {SYSArgUnix::SC_LINE_MAX, SYSArgMacOS::SC_LINE_MAX},
3434d6c458bSopenharmony_ci    {SYSArgUnix::SC_RE_DUP_MAX, SYSArgMacOS::SC_RE_DUP_MAX},
3444d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_VERSION, SYSArgMacOS::SC_2_VERSION},
3454d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_C_BIND, SYSArgMacOS::SC_2_C_BIND},
3464d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_C_DEV, SYSArgMacOS::SC_2_C_DEV},
3474d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_FORT_DEV, SYSArgMacOS::SC_2_FORT_DEV},
3484d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_FORT_RUN, SYSArgMacOS::SC_2_FORT_RUN},
3494d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_SW_DEV, SYSArgMacOS::SC_2_SW_DEV},
3504d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_LOCALEDEF, SYSArgMacOS::SC_2_LOCALEDEF},
3514d6c458bSopenharmony_ci    {SYSArgUnix::SC_IOV_MAX, SYSArgMacOS::SC_IOV_MAX},
3524d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREADS, SYSArgMacOS::SC_THREADS},
3534d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_SAFE_FUNCTIONS, SYSArgMacOS::SC_THREAD_SAFE_FUNCTIONS},
3544d6c458bSopenharmony_ci    {SYSArgUnix::SC_GETGR_R_SIZE_MAX, SYSArgMacOS::SC_GETGR_R_SIZE_MAX},
3554d6c458bSopenharmony_ci    {SYSArgUnix::SC_GETPW_R_SIZE_MAX, SYSArgMacOS::SC_GETPW_R_SIZE_MAX},
3564d6c458bSopenharmony_ci    {SYSArgUnix::SC_LOGIN_NAME_MAX, SYSArgMacOS::SC_LOGIN_NAME_MAX},
3574d6c458bSopenharmony_ci    {SYSArgUnix::SC_TTY_NAME_MAX, SYSArgMacOS::SC_TTY_NAME_MAX},
3584d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_DESTRUCTOR_ITERATIONS, SYSArgMacOS::SC_THREAD_DESTRUCTOR_ITERATIONS},
3594d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_KEYS_MAX, SYSArgMacOS::SC_THREAD_KEYS_MAX},
3604d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_STACK_MIN, SYSArgMacOS::SC_THREAD_STACK_MIN},
3614d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_THREADS_MAX, SYSArgMacOS::SC_THREAD_THREADS_MAX},
3624d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_ATTR_STACKADDR, SYSArgMacOS::SC_THREAD_ATTR_STACKADDR},
3634d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_ATTR_STACKSIZE, SYSArgMacOS::SC_THREAD_ATTR_STACKSIZE},
3644d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_PRIORITY_SCHEDULING, SYSArgMacOS::SC_THREAD_PRIORITY_SCHEDULING},
3654d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_PRIO_INHERIT, SYSArgMacOS::SC_THREAD_PRIO_INHERIT},
3664d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_PRIO_PROTECT, SYSArgMacOS::SC_THREAD_PRIO_PROTECT},
3674d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_PROCESS_SHARED, SYSArgMacOS::SC_THREAD_PROCESS_SHARED},
3684d6c458bSopenharmony_ci    {SYSArgUnix::SC_NPROCESSORS_CONF, SYSArgMacOS::SC_NPROCESSORS_CONF},
3694d6c458bSopenharmony_ci    {SYSArgUnix::SC_NPROCESSORS_ONLN, SYSArgMacOS::SC_NPROCESSORS_ONLN},
3704d6c458bSopenharmony_ci    {SYSArgUnix::SC_PHYS_PAGES, SYSArgMacOS::SC_PHYS_PAGES},
3714d6c458bSopenharmony_ci    {SYSArgUnix::SC_ATEXIT_MAX, SYSArgMacOS::SC_ATEXIT_MAX},
3724d6c458bSopenharmony_ci    {SYSArgUnix::SC_PASS_MAX, SYSArgMacOS::SC_PASS_MAX},
3734d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_VERSION, SYSArgMacOS::SC_XOPEN_VERSION},
3744d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_XCU_VERSION, SYSArgMacOS::SC_XOPEN_XCU_VERSION},
3754d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_UNIX, SYSArgMacOS::SC_XOPEN_UNIX},
3764d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_CRYPT, SYSArgMacOS::SC_XOPEN_CRYPT},
3774d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_ENH_I18N, SYSArgMacOS::SC_XOPEN_ENH_I18N},
3784d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_SHM, SYSArgMacOS::SC_XOPEN_SHM},
3794d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_CHAR_TERM, SYSArgMacOS::SC_2_CHAR_TERM},
3804d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_UPE, SYSArgMacOS::SC_2_UPE},
3814d6c458bSopenharmony_ci    {SYSArgUnix::SC_XBS5_ILP32_OFF32, SYSArgMacOS::SC_XBS5_ILP32_OFF32},
3824d6c458bSopenharmony_ci    {SYSArgUnix::SC_XBS5_ILP32_OFFBIG, SYSArgMacOS::SC_XBS5_ILP32_OFFBIG},
3834d6c458bSopenharmony_ci    {SYSArgUnix::SC_XBS5_LP64_OFF64, SYSArgMacOS::SC_XBS5_LP64_OFF64},
3844d6c458bSopenharmony_ci    {SYSArgUnix::SC_XBS5_LPBIG_OFFBIG, SYSArgMacOS::SC_XBS5_LPBIG_OFFBIG},
3854d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_LEGACY, SYSArgMacOS::SC_XOPEN_LEGACY},
3864d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_REALTIME, SYSArgMacOS::SC_XOPEN_REALTIME},
3874d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_REALTIME_THREADS, SYSArgMacOS::SC_XOPEN_REALTIME_THREADS},
3884d6c458bSopenharmony_ci    {SYSArgUnix::SC_ADVISORY_INFO, SYSArgMacOS::SC_ADVISORY_INFO},
3894d6c458bSopenharmony_ci    {SYSArgUnix::SC_BARRIERS, SYSArgMacOS::SC_BARRIERS},
3904d6c458bSopenharmony_ci    {SYSArgUnix::SC_CLOCK_SELECTION, SYSArgMacOS::SC_CLOCK_SELECTION},
3914d6c458bSopenharmony_ci    {SYSArgUnix::SC_CPUTIME, SYSArgMacOS::SC_CPUTIME},
3924d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_CPUTIME, SYSArgMacOS::SC_THREAD_CPUTIME},
3934d6c458bSopenharmony_ci    {SYSArgUnix::SC_MONOTONIC_CLOCK, SYSArgMacOS::SC_MONOTONIC_CLOCK},
3944d6c458bSopenharmony_ci    {SYSArgUnix::SC_READER_WRITER_LOCKS, SYSArgMacOS::SC_READER_WRITER_LOCKS},
3954d6c458bSopenharmony_ci    {SYSArgUnix::SC_SPIN_LOCKS, SYSArgMacOS::SC_SPIN_LOCKS},
3964d6c458bSopenharmony_ci    {SYSArgUnix::SC_REGEXP, SYSArgMacOS::SC_REGEXP},
3974d6c458bSopenharmony_ci    {SYSArgUnix::SC_SHELL, SYSArgMacOS::SC_SHELL},
3984d6c458bSopenharmony_ci    {SYSArgUnix::SC_SPAWN, SYSArgMacOS::SC_SPAWN},
3994d6c458bSopenharmony_ci    {SYSArgUnix::SC_SPORADIC_SERVER, SYSArgMacOS::SC_SPORADIC_SERVER},
4004d6c458bSopenharmony_ci    {SYSArgUnix::SC_THREAD_SPORADIC_SERVER, SYSArgMacOS::SC_THREAD_SPORADIC_SERVER},
4014d6c458bSopenharmony_ci    {SYSArgUnix::SC_TIMEOUTS, SYSArgMacOS::SC_TIMEOUTS},
4024d6c458bSopenharmony_ci    {SYSArgUnix::SC_TYPED_MEMORY_OBJECTS, SYSArgMacOS::SC_TYPED_MEMORY_OBJECTS},
4034d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_PBS, SYSArgMacOS::SC_2_PBS},
4044d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_PBS_ACCOUNTING, SYSArgMacOS::SC_2_PBS_ACCOUNTING},
4054d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_PBS_LOCATE, SYSArgMacOS::SC_2_PBS_LOCATE},
4064d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_PBS_MESSAGE, SYSArgMacOS::SC_2_PBS_MESSAGE},
4074d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_PBS_TRACK, SYSArgMacOS::SC_2_PBS_TRACK},
4084d6c458bSopenharmony_ci    {SYSArgUnix::SC_SYMLOOP_MAX, SYSArgMacOS::SC_SYMLOOP_MAX},
4094d6c458bSopenharmony_ci    {SYSArgUnix::SC_2_PBS_CHECKPOINT, SYSArgMacOS::SC_2_PBS_CHECKPOINT},
4104d6c458bSopenharmony_ci    {SYSArgUnix::SC_V6_ILP32_OFF32, SYSArgMacOS::SC_V6_ILP32_OFF32},
4114d6c458bSopenharmony_ci    {SYSArgUnix::SC_V6_ILP32_OFFBIG, SYSArgMacOS::SC_V6_ILP32_OFFBIG},
4124d6c458bSopenharmony_ci    {SYSArgUnix::SC_V6_LP64_OFF64, SYSArgMacOS::SC_V6_LP64_OFF64},
4134d6c458bSopenharmony_ci    {SYSArgUnix::SC_V6_LPBIG_OFFBIG, SYSArgMacOS::SC_V6_LPBIG_OFFBIG},
4144d6c458bSopenharmony_ci    {SYSArgUnix::SC_HOST_NAME_MAX, SYSArgMacOS::SC_HOST_NAME_MAX},
4154d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE, SYSArgMacOS::SC_TRACE},
4164d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_EVENT_FILTER, SYSArgMacOS::SC_TRACE_EVENT_FILTER},
4174d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_INHERIT, SYSArgMacOS::SC_TRACE_INHERIT},
4184d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_LOG, SYSArgMacOS::SC_TRACE_LOG},
4194d6c458bSopenharmony_ci    {SYSArgUnix::SC_IPV6, SYSArgMacOS::SC_IPV6},
4204d6c458bSopenharmony_ci    {SYSArgUnix::SC_RAW_SOCKETS, SYSArgMacOS::SC_RAW_SOCKETS},
4214d6c458bSopenharmony_ci    {SYSArgUnix::SC_SS_REPL_MAX, SYSArgMacOS::SC_SS_REPL_MAX},
4224d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_EVENT_NAME_MAX, SYSArgMacOS::SC_TRACE_EVENT_NAME_MAX},
4234d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_NAME_MAX, SYSArgMacOS::SC_TRACE_NAME_MAX},
4244d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_SYS_MAX, SYSArgMacOS::SC_TRACE_SYS_MAX},
4254d6c458bSopenharmony_ci    {SYSArgUnix::SC_TRACE_USER_EVENT_MAX, SYSArgMacOS::SC_TRACE_USER_EVENT_MAX},
4264d6c458bSopenharmony_ci    {SYSArgUnix::SC_XOPEN_STREAMS, SYSArgMacOS::SC_XOPEN_STREAMS},
4274d6c458bSopenharmony_ci};
4284d6c458bSopenharmony_ci
4294d6c458bSopenharmony_civoid ProcessExit(int signal)
4304d6c458bSopenharmony_ci{
4314d6c458bSopenharmony_ci    exit(signal);
4324d6c458bSopenharmony_ci}
4334d6c458bSopenharmony_ci
4344d6c458bSopenharmony_ciint GetSysConfig(int number)
4354d6c458bSopenharmony_ci{
4364d6c458bSopenharmony_ci    SYSArgUnix unixSysconf = static_cast<SYSArgUnix>(number);
4374d6c458bSopenharmony_ci    if (unixSysconf == SYSArgUnix::SC_ARG_MAX) {
4384d6c458bSopenharmony_ci        return MACOS_ARG_MAX;
4394d6c458bSopenharmony_ci    }
4404d6c458bSopenharmony_ci    uint16_t index = static_cast<uint16_t>(sysconfig_map[unixSysconf]);
4414d6c458bSopenharmony_ci    auto configinfo = static_cast<int32_t>(sysconf(index));
4424d6c458bSopenharmony_ci    if (configinfo < 0) {
4434d6c458bSopenharmony_ci        HILOG_ERROR("Unable to find this system configuration on MAC platform:[unix]%d", unixSysconf);
4444d6c458bSopenharmony_ci        return MACOS_NOT_EXIST;
4454d6c458bSopenharmony_ci    }
4464d6c458bSopenharmony_ci    return configinfo;
4474d6c458bSopenharmony_ci}
4484d6c458bSopenharmony_ci
4494d6c458bSopenharmony_cidouble GetSysTimer()
4504d6c458bSopenharmony_ci{
4514d6c458bSopenharmony_ci    struct timeval boottime;
4524d6c458bSopenharmony_ci    struct timeval now;
4534d6c458bSopenharmony_ci    struct timezone tz;
4544d6c458bSopenharmony_ci    int mib[2] = { CTL_KERN, KERN_BOOTTIME };
4554d6c458bSopenharmony_ci    size_t size = sizeof(boottime);
4564d6c458bSopenharmony_ci    gettimeofday(&now, &tz);
4574d6c458bSopenharmony_ci    double systimer = -1;
4584d6c458bSopenharmony_ci#define MIB_SIZE 2
4594d6c458bSopenharmony_ci#define MICROSECONDS_OF_SECOND (1000.0*1000.0)
4604d6c458bSopenharmony_ci    if (sysctl(mib, MIB_SIZE, &boottime, &size, NULL, 0) != -1 && boottime.tv_sec != 0) {
4614d6c458bSopenharmony_ci        systimer = now.tv_sec - boottime.tv_sec;
4624d6c458bSopenharmony_ci        systimer += (double)(now.tv_usec - boottime.tv_usec) / MICROSECONDS_OF_SECOND;
4634d6c458bSopenharmony_ci    }
4644d6c458bSopenharmony_ci    return systimer;
4654d6c458bSopenharmony_ci}
4664d6c458bSopenharmony_ci
4674d6c458bSopenharmony_ciint GetThreadId()
4684d6c458bSopenharmony_ci{
4694d6c458bSopenharmony_ci    uint64_t proTid;
4704d6c458bSopenharmony_ci    pthread_threadid_np(0, &proTid);
4714d6c458bSopenharmony_ci    return proTid;
4724d6c458bSopenharmony_ci}
4734d6c458bSopenharmony_ci
4744d6c458bSopenharmony_ciint GetThreadPRY(int tid)
4754d6c458bSopenharmony_ci{
4764d6c458bSopenharmony_ci    int32_t pri = getpriority(PRIO_DARWIN_THREAD, 0);   // 0: current thread
4774d6c458bSopenharmony_ci    return pri;
4784d6c458bSopenharmony_ci}
4794d6c458bSopenharmony_ci
4804d6c458bSopenharmony_cidouble GetProcessStartRealtime()
4814d6c458bSopenharmony_ci{
4824d6c458bSopenharmony_ci    int pid = getpid();
4834d6c458bSopenharmony_ci    struct kinfo_proc info;
4844d6c458bSopenharmony_ci    size_t size = sizeof(info);
4854d6c458bSopenharmony_ci    int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
4864d6c458bSopenharmony_ci
4874d6c458bSopenharmony_ci    int ret = sysctl(mib, sizeof(mib)/sizeof(*mib), &info, &size, NULL, 0);
4884d6c458bSopenharmony_ci    if (ret == 0) {
4894d6c458bSopenharmony_ci        double tvSec = info.kp_proc.p_un.__p_starttime.tv_sec;
4904d6c458bSopenharmony_ci        double tvUsec = info.kp_proc.p_un.__p_starttime.tv_usec;
4914d6c458bSopenharmony_ci        return tvSec * 1000.0 + tvUsec / 1000.0; // 1000.0 : Calculate milliseconds
4924d6c458bSopenharmony_ci    }
4934d6c458bSopenharmony_ci    return 0;
4944d6c458bSopenharmony_ci}
4954d6c458bSopenharmony_ci} // namespace Commonlibrary::Platform