17 #ifndef __CNAT_INLINE_H__ 18 #define __CNAT_INLINE_H__ static void clib_rwlock_reader_lock(clib_rwlock_t *p)
#define CNAT_TIMESTAMP_INIT_REFCNT
static void clib_rwlock_writer_lock(clib_rwlock_t *p)
static void cnat_timestamp_free(u32 index)
static u32 cnat_timestamp_new(f64 t)
static void cnat_timestamp_update(u32 index, f64 t)
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment).
static void cnat_timestamp_set_lifetime(u32 index, u16 lifetime)
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
static void clib_rwlock_reader_unlock(clib_rwlock_t *p)
cnat_timestamp_t * cnat_timestamps
#define pool_put(P, E)
Free an object E in pool P.
static f64 cnat_timestamp_exp(u32 index)
static void clib_rwlock_writer_unlock(clib_rwlock_t *p)
static void cnat_timestamp_inc_refcnt(u32 index)
#define INDEX_INVALID
Invalid index - used when no index is known blazoned capitals INVALID speak volumes where ~0 does not...