1 /* 2 * Copyright (C) 2022 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 FILLP_FUNCTIONS_H 17 #define FILLP_FUNCTIONS_H 18 19 #include "fillp_os.h" 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 #define FILLP_FD_CLR (g_fillpOsSocketLibFun.fillpFuncFdClr) 26 #define FILLP_FD_SET (g_fillpOsSocketLibFun.fillpFuncFdSet) 27 #define FILLP_FD_ISSET (g_fillpOsSocketLibFun.fillpFuncFdIsSet) 28 29 30 #define FILLP_FD_CREATE_FD_SET (g_fillpOsSocketLibFun.fillpFuncCreateFdSet) 31 #define FILLP_FD_DESTROY_FD_SET (g_fillpOsSocketLibFun.fillpFuncDestroyFdSet) 32 #define FILLP_FD_COPY_FD_SET (g_fillpOsSocketLibFun.fillpFuncCopyFdSet) 33 34 35 #define FILLP_GETSOCKOPT (g_fillpOsSocketLibFun.getSockOpt) 36 #define FILLP_SETSOCKOPT (g_fillpOsSocketLibFun.setSockOpt) 37 #define FILLP_IOCTLSOCKET (g_fillpOsSocketLibFun.ioctl) 38 #define FILLP_FCNTL (g_fillpOsSocketLibFun.fcntl) 39 #define FILLP_SOCKET (g_fillpOsSocketLibFun.socketCallbackFunc) 40 #define FILLP_BIND (g_fillpOsSocketLibFun.bindCallbackFunc) 41 #define FILLP_GETSOCKNAME (g_fillpOsSocketLibFun.getSockNameCallbackFunc) 42 #define FILLP_CONNECT (g_fillpOsSocketLibFun.connectCallbackFunc) 43 #define FILLP_SENDTO (g_fillpOsSocketLibFun.sendtoCallbackFunc) 44 #define FILLP_SEND (g_fillpOsSocketLibFun.sendCallbackFunc) 45 #define FILLP_RECVFROM (g_fillpOsSocketLibFun.recvFromCallbackFunc) 46 #define FILLP_STRLEN (g_fillpOsBasicLibFun.fillpStrLen) 47 #define FILLP_CALLOC (g_fillpOsBasicLibFun.memCalloc) 48 #define FILLP_MALLOC (g_fillpOsBasicLibFun.memAlloc) 49 #define FILLP_FREE (g_fillpOsBasicLibFun.memFree) 50 #define FILLP_SELECT (g_fillpOsSocketLibFun.select) 51 #define FILLP_RAND (g_fillpOsBasicLibFun.fillpRand) 52 #define FILLP_CRYPTO_RAND (g_fillpOsBasicLibFun.cryptoRand) 53 #define FILLP_CLOSE (g_fillpOsSocketLibFun.closeSocketCallbackFunc) 54 #define FILLP_MEMCHR (g_fillpOsBasicLibFun.memChr) 55 #define FILLP_SYS_START_NEWTHREAD (g_fillpOsBasicLibFun.fillpCreateThread) 56 #define SYS_ARCH_INIT (g_fillpOsBasicLibFun.sysArcInit) 57 #define SYS_ARCH_GET_CUR_TIME_LONGLONG (g_fillpOsBasicLibFun.sysArcGetCurTimeLongLong) 58 #define CAS (g_fillpOsBasicLibFun.sysArchCompAndSwap) 59 #define FILLP_SLEEP_MS (g_fillpOsBasicLibFun.sysSleepMs) 60 #define FILLP_RTE_PAUSE (g_fillpOsBasicLibFun.rtePause) 61 #define SYS_ARCH_ATOMIC_INC (g_fillpOsBasicLibFun.sysArchAtomicInc) 62 #define SYS_ARCH_ATOMIC_INC_AND_TEST (g_fillpOsBasicLibFun.sysArchAtomicIncAndTest) 63 #define SYS_ARCH_ATOMIC_DEC (g_fillpOsBasicLibFun.sysArchAtomicDec) 64 #define SYS_ARCH_ATOMIC_DEC_AND_TEST (g_fillpOsBasicLibFun.sysArchAtomicDecAndTest) 65 #define SYS_ARCH_ATOMIC_READ (g_fillpOsBasicLibFun.sysArchAtomicRead) 66 #define SYS_ARCH_ATOMIC_SET (g_fillpOsBasicLibFun.sysArchAtomicSet) 67 #define FILLP_USLEEP (g_fillpOsBasicLibFun.sysUsleep) 68 69 /* Once inited with semaphore_create() in callback sysArchSemInit, it will be destroyed 70 semaphore_destroy() in sysArchSemDestroy. There is no semaphore_close() in MAC 71 */ 72 #ifndef FILLP_MAC 73 #define SYS_ARCH_SEM_CLOSE (g_fillpOsSemLibFun.sysArchSemClose) 74 #endif 75 76 #define SYS_ARCH_SEM_INIT (g_fillpOsSemLibFun.sysArchSemInit) 77 #define SYS_ARCH_SEM_TRYWAIT (g_fillpOsSemLibFun.sysArchSemTryWait) 78 #define SYS_ARCH_SEM_WAIT (g_fillpOsSemLibFun.sysArchSemWait) 79 #define SYS_ARCH_SEM_POST (g_fillpOsSemLibFun.sysArchSemPost) 80 #define SYS_ARCH_SEM_DESTROY (g_fillpOsSemLibFun.sysArchSemDestroy) 81 #define SYS_ARCH_SEM_WAIT_TIMEOUT (g_fillpOsSemLibFun.sysArchSemWaitTimeout) 82 #define SYS_ARCH_SCHED_YIELD (g_fillpOsSemLibFun.sysArchSchedYield) 83 sys_arch_compiler_barrier(void)84static inline void sys_arch_compiler_barrier(void) 85 { 86 #ifdef FILLP_LINUX 87 #if !defined(__clang__) && (((__GNUC__ <= 4) && (__GNUC_MINOR__ < 4)) || (__GNUC__ <= 3)) 88 #error "GCC 4.4.0 FIXED GCC Bug[36793] x86-64 does not get __sync_synchronize right" 89 #endif 90 __sync_synchronize(); 91 #else 92 MemoryBarrier(); 93 #endif 94 } 95 96 #define SYS_ARCH_RWSEM_INIT (g_fillpOsSemLibFun.sysArchRWSemInit) 97 #define SYS_ARCH_RWSEM_TRYRDWAIT (g_fillpOsSemLibFun.sysArchRWSemTryRDWait) 98 #define SYS_ARCH_RWSEM_TRYWRWAIT (g_fillpOsSemLibFun.sysArchRWSemTryWRWait) 99 #define SYS_ARCH_RWSEM_RDPOST (g_fillpOsSemLibFun.sysArchRWSemRDPost) 100 #define SYS_ARCH_RWSEM_WRPOST (g_fillpOsSemLibFun.sysArchRWSemWRPost) 101 #define SYS_ARCH_RWSEM_DESTROY (g_fillpOsSemLibFun.sysArchRWSemDestroy) 102 #define SYS_ARCH_RWSEM_WAIT_TIMEOUT (g_fillpOsSemLibFun.pfSysArchRWSemWaitTimeout) 103 104 #define FILLP_SOCKETCLOSE_CBK (g_fillpAppCbkFun.fillpSockCloseCbkFunc) 105 106 #ifdef __cplusplus 107 } 108 #endif 109 110 #endif /* FILLP_FUNCTIONS_H */ 111