/*************************************************************************************************/
|
/*!
|
* \file wsf_cs.h
|
*
|
* \brief Critical section macros.
|
*
|
* Copyright (c) 2009-2018 Arm Ltd. All Rights Reserved.
|
*
|
* Copyright (c) 2019-2020 Packetcraft, Inc.
|
*
|
* 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 WSF_CS_H
|
#define WSF_CS_H
|
|
#include "wsf_types.h"
|
#include "pal_sys.h"
|
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
/*! \addtogroup WSF_CS_API
|
* \{ */
|
|
/**************************************************************************************************
|
Macros
|
**************************************************************************************************/
|
|
#ifndef WSF_CS_STATS
|
/*! \brief Use CS statistics hooks. */
|
#define WSF_CS_STATS FALSE
|
#endif
|
|
/*************************************************************************************************/
|
/*!
|
* \def WSF_CS_INIT
|
*
|
* \brief Initialize critical section. This macro may define a variable.
|
*
|
* \param cs Critical section variable to be defined.
|
*/
|
/*************************************************************************************************/
|
#define WSF_CS_INIT(cs)
|
|
/*************************************************************************************************/
|
/*!
|
* \def WSF_CS_ENTER
|
*
|
* \brief Enter a critical section.
|
*
|
* \param cs Critical section variable.
|
*/
|
/*************************************************************************************************/
|
//#define WSF_CS_ENTER(cs) WsfCsEnter()
|
#define WSF_CS_ENTER() PalEnterCs()
|
|
/*************************************************************************************************/
|
/*!
|
* \def WSF_CS_EXIT
|
*
|
* \brief Exit a critical section.
|
*
|
* \param cs Critical section variable.
|
*/
|
/*************************************************************************************************/
|
//#define WSF_CS_EXIT(cs) WsfCsExit()
|
#define WSF_CS_EXIT(lock) PalExitCs(lock)
|
|
/**************************************************************************************************
|
Function Declarations
|
**************************************************************************************************/
|
|
/*************************************************************************************************/
|
/*!
|
* \brief Get critical section duration watermark level.
|
*
|
* \return Critical section duration watermark level.
|
*/
|
/*************************************************************************************************/
|
uint32_t WsfCsStatsGetCsWaterMark(void);
|
|
/*************************************************************************************************/
|
/*!
|
* \brief Enter a critical section.
|
*/
|
/*************************************************************************************************/
|
void WsfCsEnter(void);
|
|
/*************************************************************************************************/
|
/*!
|
* \brief Enter a critical section.
|
*/
|
/*************************************************************************************************/
|
void WsfCsExit(void);
|
|
/*! \} */ /* WSF_CS_API */
|
|
#ifdef __cplusplus
|
};
|
#endif
|
|
#endif /* WSF_CS_H */
|