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