/* * * Copyright (c) 2018 Huawei Technologies 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 _COMMON_MEM_SPINLOCK_X86_64_H_ #define _COMMON_MEM_SPINLOCK_X86_64_H_ #ifdef HAL_LIB #else #include "rte_spinlock.h" static inline void dmm_spinlock_lock_with_pid(rte_spinlock_t * sl, int pid) { while (!__sync_bool_compare_and_swap(&sl->locked, 0, pid)) while (sl->locked) rte_pause(); } static inline int dmm_spinlock_try_lock_with_pid(rte_spinlock_t * sl, int pid) { return __sync_bool_compare_and_swap(&sl->locked, 0, pid); } #endif #endif /* _COMMON_MEM_SPINLOCK_X86_64_H_ */