1/* 2 * Copyright (C) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef NSTACKX_UTIL_H 17#define NSTACKX_UTIL_H 18 19#include "nstackx_dev.h" 20#include "sys_util.h" 21 22#ifdef __cplusplus 23extern "C" { 24#endif 25 26typedef enum { 27 CPU_IDX_0 = 0, 28 CPU_IDX_1, 29 CPU_IDX_2, 30 CPU_IDX_3, 31 CPU_IDX_4, 32 CPU_IDX_5, 33 CPU_IDX_6, 34 CPU_IDX_7, 35} CpuIdx; 36 37#define FIRST_CPU_NUM_LEVEL 8 38#define SECOND_CPU_NUM_LEVEL 4 39#define THIRD_CPU_NUM_LEVEL 2 40#define MAX_THREAD_NAME_LEN 100 41#define THREAD_MAXIMUM_PRIORITY (-20) 42 43#define BLOCK_LEN 512 44#define MAX_NAME_LEN 99 45 46NSTACKX_EXPORT int32_t GetTargetFileSize(const char *dir, uint64_t *size); 47NSTACKX_EXPORT int32_t CheckPathSeprator(const char *path); 48NSTACKX_EXPORT int32_t CheckFilenameSeprator(const char *fileName); 49NSTACKX_EXPORT uint32_t GetFileNameLen(const char *dir); 50NSTACKX_EXPORT int32_t GetFileName(const char *dir, char *name, uint32_t nameLen); 51NSTACKX_EXPORT uint8_t IsAccessiblePath(const char *fileName, int32_t mode, uint32_t fileType); 52NSTACKX_EXPORT int32_t TestAndCreateDirectory(const char *path); 53NSTACKX_EXPORT uint8_t IsFileNameLegal(const char *fileName); 54NSTACKX_EXPORT uint8_t IsExistingFile(const char *fileName); 55 56NSTACKX_EXPORT void StartThreadBindCore(int32_t cpu); 57NSTACKX_EXPORT void BindThreadToTargetMask(pid_t tid, uint32_t cpuMask); 58NSTACKX_EXPORT int32_t GetCpuNum(void); 59NSTACKX_EXPORT void SetThreadName(const char *name); 60NSTACKX_EXPORT void ClockGetTime(clockid_t id, struct timespec *tp); 61NSTACKX_EXPORT void SetMaximumPriorityForThread(void); 62 63/* pthread series */ 64NSTACKX_EXPORT void SemGetValue(sem_t *sem, int *sval); 65NSTACKX_EXPORT void SemPost(sem_t *sem); 66NSTACKX_EXPORT void SemWait(sem_t *sem); 67NSTACKX_EXPORT void SemDestroy(sem_t *sem); 68NSTACKX_EXPORT int32_t SemInit(sem_t *sem, int pshared, unsigned int value); 69NSTACKX_EXPORT int32_t PthreadMutexInit(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); 70NSTACKX_EXPORT void PthreadMutexDestroy(pthread_mutex_t *mutex); 71NSTACKX_EXPORT int32_t PthreadMutexLock(pthread_mutex_t *mutex); 72NSTACKX_EXPORT int32_t PthreadMutexUnlock(pthread_mutex_t *mutex); 73NSTACKX_EXPORT int32_t PthreadCreate(pthread_t *tid, const pthread_attr_t *attr, void *(*entry)(void *), void *arg); 74NSTACKX_EXPORT void PthreadJoin(pthread_t thread, void **retval); 75 76NSTACKX_EXPORT int32_t IpAddrAnonymousFormat(char *buf, size_t len, const struct sockaddr *addr, size_t addrLen); 77 78#ifdef __cplusplus 79} 80#endif 81 82#endif // NSTACKX_UTIL_H 83