// +FHDR------------------------------------------------------------
//                 Copyright (c) 2022 SmartLogic.
//                       ALL RIGHTS RESERVED
// -----------------------------------------------------------------
// Filename      : ucp_utility.h
// Author        : xianfeng.du
// Created On    : 2022-06-25
// Last Modified :
// -----------------------------------------------------------------
// Description:
//
//
// -FHDR------------------------------------------------------------


#ifndef __UCP_UTILITY_H__
#define __UCP_UTILITY_H__

#include "typedef.h"
#include "ospHeap.h"

#ifdef UCP_SPIN_LOCK
#include <pthread.h>
#define ucp_spin_lock(x) pthread_spin_lock((pthread_spinlock_t *)x)
#define ucp_spin_unlock(x) pthread_spin_unlock((pthread_spinlock_t *)x)
extern pthread_spinlock_t lock_dl_tx_alloc;
extern pthread_spinlock_t lock_dl_tx_put;
#else
#define ucp_spin_lock(x)
#define ucp_spin_unlock(x)
#endif
void ucp_spinlock_init();

int32_t isPowerOf2(uint32_t n);

//cache
void ucp_cache_writeback(uint8_t* buf, uint32_t length);
void ucp_cache_invalid(uint8_t* buf, uint32_t length);
void ucp_cache_flush(uint8_t* buf, uint32_t length);

#endif
