Home | History | Annotate | Download | only in internal
      1 /******************************************************************************/
      2 #ifdef JEMALLOC_H_TYPES
      3 
      4 typedef struct ticker_s ticker_t;
      5 
      6 #endif /* JEMALLOC_H_TYPES */
      7 /******************************************************************************/
      8 #ifdef JEMALLOC_H_STRUCTS
      9 
     10 struct ticker_s {
     11 	int32_t	tick;
     12 	int32_t	nticks;
     13 };
     14 
     15 #endif /* JEMALLOC_H_STRUCTS */
     16 /******************************************************************************/
     17 #ifdef JEMALLOC_H_EXTERNS
     18 
     19 #endif /* JEMALLOC_H_EXTERNS */
     20 /******************************************************************************/
     21 #ifdef JEMALLOC_H_INLINES
     22 
     23 #ifndef JEMALLOC_ENABLE_INLINE
     24 void	ticker_init(ticker_t *ticker, int32_t nticks);
     25 void	ticker_copy(ticker_t *ticker, const ticker_t *other);
     26 int32_t	ticker_read(const ticker_t *ticker);
     27 bool	ticker_ticks(ticker_t *ticker, int32_t nticks);
     28 bool	ticker_tick(ticker_t *ticker);
     29 #endif
     30 
     31 #if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_TICKER_C_))
     32 JEMALLOC_INLINE void
     33 ticker_init(ticker_t *ticker, int32_t nticks)
     34 {
     35 
     36 	ticker->tick = nticks;
     37 	ticker->nticks = nticks;
     38 }
     39 
     40 JEMALLOC_INLINE void
     41 ticker_copy(ticker_t *ticker, const ticker_t *other)
     42 {
     43 
     44 	*ticker = *other;
     45 }
     46 
     47 JEMALLOC_INLINE int32_t
     48 ticker_read(const ticker_t *ticker)
     49 {
     50 
     51 	return (ticker->tick);
     52 }
     53 
     54 JEMALLOC_INLINE bool
     55 ticker_ticks(ticker_t *ticker, int32_t nticks)
     56 {
     57 
     58 	if (unlikely(ticker->tick < nticks)) {
     59 		ticker->tick = ticker->nticks;
     60 		return (true);
     61 	}
     62 	ticker->tick -= nticks;
     63 	return(false);
     64 }
     65 
     66 JEMALLOC_INLINE bool
     67 ticker_tick(ticker_t *ticker)
     68 {
     69 
     70 	return (ticker_ticks(ticker, 1));
     71 }
     72 #endif
     73 
     74 #endif /* JEMALLOC_H_INLINES */
     75 /******************************************************************************/
     76