* Copyright (c) 2022 Huawei Device 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.
*/
#ifndef FILLP_FUNCTIONS_H
#define FILLP_FUNCTIONS_H
#include "fillp_os.h"
#ifdef __cplusplus
extern "C" {
#endif
#define FILLP_FD_CLR (g_fillpOsSocketLibFun.fillpFuncFdClr)
#define FILLP_FD_SET (g_fillpOsSocketLibFun.fillpFuncFdSet)
#define FILLP_FD_ISSET (g_fillpOsSocketLibFun.fillpFuncFdIsSet)
#define FILLP_FD_CREATE_FD_SET (g_fillpOsSocketLibFun.fillpFuncCreateFdSet)
#define FILLP_FD_DESTROY_FD_SET (g_fillpOsSocketLibFun.fillpFuncDestroyFdSet)
#define FILLP_FD_COPY_FD_SET (g_fillpOsSocketLibFun.fillpFuncCopyFdSet)
#define FILLP_GETSOCKOPT (g_fillpOsSocketLibFun.getSockOpt)
#define FILLP_SETSOCKOPT (g_fillpOsSocketLibFun.setSockOpt)
#define FILLP_IOCTLSOCKET (g_fillpOsSocketLibFun.ioctl)
#define FILLP_FCNTL (g_fillpOsSocketLibFun.fcntl)
#define FILLP_SOCKET (g_fillpOsSocketLibFun.socketCallbackFunc)
#define FILLP_BIND (g_fillpOsSocketLibFun.bindCallbackFunc)
#define FILLP_GETSOCKNAME (g_fillpOsSocketLibFun.getSockNameCallbackFunc)
#define FILLP_CONNECT (g_fillpOsSocketLibFun.connectCallbackFunc)
#define FILLP_SENDTO (g_fillpOsSocketLibFun.sendtoCallbackFunc)
#define FILLP_SEND (g_fillpOsSocketLibFun.sendCallbackFunc)
#define FILLP_RECVFROM (g_fillpOsSocketLibFun.recvFromCallbackFunc)
#define FILLP_STRLEN (g_fillpOsBasicLibFun.fillpStrLen)
#define FILLP_CALLOC (g_fillpOsBasicLibFun.memCalloc)
#define FILLP_MALLOC (g_fillpOsBasicLibFun.memAlloc)
#define FILLP_FREE (g_fillpOsBasicLibFun.memFree)
#define FILLP_SELECT (g_fillpOsSocketLibFun.select)
#define FILLP_RAND (g_fillpOsBasicLibFun.fillpRand)
#define FILLP_CRYPTO_RAND (g_fillpOsBasicLibFun.cryptoRand)
#define FILLP_CLOSE (g_fillpOsSocketLibFun.closeSocketCallbackFunc)
#define FILLP_MEMCHR (g_fillpOsBasicLibFun.memChr)
#define FILLP_SYS_START_NEWTHREAD (g_fillpOsBasicLibFun.fillpCreateThread)
#define SYS_ARCH_INIT (g_fillpOsBasicLibFun.sysArcInit)
#define SYS_ARCH_GET_CUR_TIME_LONGLONG (g_fillpOsBasicLibFun.sysArcGetCurTimeLongLong)
#define CAS (g_fillpOsBasicLibFun.sysArchCompAndSwap)
#define FILLP_SLEEP_MS (g_fillpOsBasicLibFun.sysSleepMs)
#define FILLP_RTE_PAUSE (g_fillpOsBasicLibFun.rtePause)
#define SYS_ARCH_ATOMIC_INC (g_fillpOsBasicLibFun.sysArchAtomicInc)
#define SYS_ARCH_ATOMIC_INC_AND_TEST (g_fillpOsBasicLibFun.sysArchAtomicIncAndTest)
#define SYS_ARCH_ATOMIC_DEC (g_fillpOsBasicLibFun.sysArchAtomicDec)
#define SYS_ARCH_ATOMIC_DEC_AND_TEST (g_fillpOsBasicLibFun.sysArchAtomicDecAndTest)
#define SYS_ARCH_ATOMIC_READ (g_fillpOsBasicLibFun.sysArchAtomicRead)
#define SYS_ARCH_ATOMIC_SET (g_fillpOsBasicLibFun.sysArchAtomicSet)
#define FILLP_USLEEP (g_fillpOsBasicLibFun.sysUsleep)
semaphore_destroy() in sysArchSemDestroy. There is no semaphore_close() in MAC
*/
#ifndef FILLP_MAC
#define SYS_ARCH_SEM_CLOSE (g_fillpOsSemLibFun.sysArchSemClose)
#endif
#define SYS_ARCH_SEM_INIT (g_fillpOsSemLibFun.sysArchSemInit)
#define SYS_ARCH_SEM_TRYWAIT (g_fillpOsSemLibFun.sysArchSemTryWait)
#define SYS_ARCH_SEM_WAIT (g_fillpOsSemLibFun.sysArchSemWait)
#define SYS_ARCH_SEM_POST (g_fillpOsSemLibFun.sysArchSemPost)
#define SYS_ARCH_SEM_DESTROY (g_fillpOsSemLibFun.sysArchSemDestroy)
#define SYS_ARCH_SEM_WAIT_TIMEOUT (g_fillpOsSemLibFun.sysArchSemWaitTimeout)
#define SYS_ARCH_SCHED_YIELD (g_fillpOsSemLibFun.sysArchSchedYield)
static inline void sys_arch_compiler_barrier(void)
{
#ifdef FILLP_LINUX
#if !defined(__clang__) && (((__GNUC__ <= 4) && (__GNUC_MINOR__ < 4)) || (__GNUC__ <= 3))
#error "GCC 4.4.0 FIXED GCC Bug[36793] x86-64 does not get __sync_synchronize right"
#endif
__sync_synchronize();
#else
MemoryBarrier();
#endif
}
#define SYS_ARCH_RWSEM_INIT (g_fillpOsSemLibFun.sysArchRWSemInit)
#define SYS_ARCH_RWSEM_TRYRDWAIT (g_fillpOsSemLibFun.sysArchRWSemTryRDWait)
#define SYS_ARCH_RWSEM_TRYWRWAIT (g_fillpOsSemLibFun.sysArchRWSemTryWRWait)
#define SYS_ARCH_RWSEM_RDPOST (g_fillpOsSemLibFun.sysArchRWSemRDPost)
#define SYS_ARCH_RWSEM_WRPOST (g_fillpOsSemLibFun.sysArchRWSemWRPost)
#define SYS_ARCH_RWSEM_DESTROY (g_fillpOsSemLibFun.sysArchRWSemDestroy)
#define SYS_ARCH_RWSEM_WAIT_TIMEOUT (g_fillpOsSemLibFun.pfSysArchRWSemWaitTimeout)
#define FILLP_SOCKETCLOSE_CBK (g_fillpAppCbkFun.fillpSockCloseCbkFunc)
#ifdef __cplusplus
}
#endif
#endif