| /******************************************************************************/ |
| #ifdef JEMALLOC_H_TYPES |
| |
| typedef struct ticker_s ticker_t; |
| |
| #endif /* JEMALLOC_H_TYPES */ |
| /******************************************************************************/ |
| #ifdef JEMALLOC_H_STRUCTS |
| |
| struct ticker_s { |
| int32_t tick; |
| int32_t nticks; |
| }; |
| |
| #endif /* JEMALLOC_H_STRUCTS */ |
| /******************************************************************************/ |
| #ifdef JEMALLOC_H_EXTERNS |
| |
| #endif /* JEMALLOC_H_EXTERNS */ |
| /******************************************************************************/ |
| #ifdef JEMALLOC_H_INLINES |
| |
| #ifndef JEMALLOC_ENABLE_INLINE |
| void ticker_init(ticker_t *ticker, int32_t nticks); |
| void ticker_copy(ticker_t *ticker, const ticker_t *other); |
| int32_t ticker_read(const ticker_t *ticker); |
| bool ticker_ticks(ticker_t *ticker, int32_t nticks); |
| bool ticker_tick(ticker_t *ticker); |
| #endif |
| |
| #if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_TICKER_C_)) |
| JEMALLOC_INLINE void |
| ticker_init(ticker_t *ticker, int32_t nticks) |
| { |
| |
| ticker->tick = nticks; |
| ticker->nticks = nticks; |
| } |
| |
| JEMALLOC_INLINE void |
| ticker_copy(ticker_t *ticker, const ticker_t *other) |
| { |
| |
| *ticker = *other; |
| } |
| |
| JEMALLOC_INLINE int32_t |
| ticker_read(const ticker_t *ticker) |
| { |
| |
| return (ticker->tick); |
| } |
| |
| JEMALLOC_INLINE bool |
| ticker_ticks(ticker_t *ticker, int32_t nticks) |
| { |
| |
| if (unlikely(ticker->tick < nticks)) { |
| ticker->tick = ticker->nticks; |
| return (true); |
| } |
| ticker->tick -= nticks; |
| return(false); |
| } |
| |
| JEMALLOC_INLINE bool |
| ticker_tick(ticker_t *ticker) |
| { |
| |
| return (ticker_ticks(ticker, 1)); |
| } |
| #endif |
| |
| #endif /* JEMALLOC_H_INLINES */ |
| /******************************************************************************/ |