| /* |
| * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| * Distributed under the terms of the GNU General Public License v2 |
| */ |
| #ifndef _TICKCOUNTER_H_ |
| #define _TICKCOUNTER_H_ 1 |
| |
| enum { WHEEL_SIZE = 60 }; |
| |
| typedef struct Avg_s { |
| u32 avg; |
| u32 peak; |
| } Avg_s; |
| |
| typedef struct TickCounter_s { |
| u32 tick_size; /* Must be factor of WHEEL_SIZE */ |
| u32 ticks_per_wheel; |
| u32 hour_wrapped; |
| u8 itick; |
| u8 iminute; |
| u8 ihour; |
| u32 tick[WHEEL_SIZE]; |
| Avg_s minute[WHEEL_SIZE]; |
| Avg_s hour[WHEEL_SIZE]; |
| } TickCounter_s; |
| |
| void tick(TickCounter_s *counter, u32 n); |
| bool init_counter(TickCounter_s *counter, u32 tick); |
| |
| #endif |