Lines Matching defs:timer

19  * This file provides the interface for an OS independant consisent timer interface.
22 * a single timer driver will back the implementation, for others, there may be many.
48 /* logical timers are the interface used by the timer manager to multiplex
49 * timer requests from clients - only one timeout can be registered at a time.
50 * logical timers may be backed by several timer drivers to implement the
57 * @param data for the logical timer to use
58 * @return the number of irqs this timer needs.
65 * @param data for the logical timer to use
74 * @param data for the logical timer to use
75 * @return the number of pmem regions this timer needs.
80 * Populate a region structure with details of the nth pmem region this timer requires.
82 * @param data for the logical timer to use
92 * @param data for the logical timer to use
99 * Get the precision of this time returned by get_time. i.e if the timer is
102 * @param data for the logical timer to use
113 * @param data for the logical timer to use
114 * @param ns ns value (depends on timer type)
121 * Reset the timer into a state similar to what it was when first initialized. This
125 * @param data for the logical timer to use
137 /* Logical timer helper functions */
138 static inline int ltimer_get_resolution(ltimer_t *timer, uint64_t *resolution)
140 if (!timer) {
141 ZF_LOGE("Logical timer invalid!");
150 if (timer->get_resolution == NULL) {
155 return timer->get_resolution(timer->data, resolution);
158 static inline int ltimer_set_timeout(ltimer_t *timer, uint64_t nanoseconds, timeout_type_t type)
160 if (!timer) {
161 ZF_LOGE("Logical timer invalid!");
165 if (timer->set_timeout == NULL) {
176 ZF_LOGE("Invalid timer type");
180 return timer->set_timeout(timer->data, nanoseconds, type);
183 static inline size_t ltimer_get_num_irqs(ltimer_t *timer)
185 if (timer->get_num_irqs == NULL) {
186 /* assume no irqs for this timer */
190 return timer->get_num_irqs(timer->data);
193 static inline int ltimer_get_nth_irq(ltimer_t *timer, size_t n, ps_irq_t *irq)
195 if (!timer || !irq) {
200 if (!timer->get_nth_irq || !timer->get_num_irqs) {
205 size_t nirqs = ltimer_get_num_irqs(timer);
211 return timer->get_nth_irq(timer->data, n, irq);
214 static inline size_t ltimer_get_num_pmems(ltimer_t *timer)
216 if (timer->get_num_pmems == NULL) {
221 return timer->get_num_pmems(timer->data);
224 static inline int ltimer_get_nth_pmem(ltimer_t *timer, size_t n, pmem_region_t *pmem)
226 if (!timer || !pmem) {
231 if (!timer->get_nth_pmem || !timer->get_num_pmems) {
236 size_t npmems = ltimer_get_num_pmems(timer);
242 return timer->get_nth_pmem(timer->data, n, pmem);
245 static inline int ltimer_get_time(ltimer_t *timer, uint64_t *time)
247 if (!timer) {
248 ZF_LOGE("Logical timer invalid!");
257 if (timer->get_time == NULL) {
262 return timer->get_time(timer->data, time);
265 static inline int ltimer_reset(ltimer_t *timer)
267 if (!timer) {
268 ZF_LOGE("Logical timer invalid!");
272 if (timer->reset == NULL) {
277 return timer->reset(timer->data);
280 static inline void ltimer_destroy(ltimer_t *timer)
282 if (!timer || !timer->destroy) {
287 return timer->destroy(timer->data);
291 static inline void ltimer_ns_delay(ltimer_t *timer, uint64_t nanoseconds) {
294 int error = ltimer_get_time(timer, &start);
297 error = ltimer_get_time(timer, &end);
306 static inline void ltimer_s_delay(ltimer_t *timer, uint64_t seconds) {
307 ltimer_ns_delay(timer, seconds * NS_IN_S);
310 static inline void ltimer_ms_delay(ltimer_t *timer, uint64_t milliseconds) {
311 ltimer_ns_delay(timer, milliseconds * NS_IN_MS);
314 static inline void ltimer_us_delay(ltimer_t *timer, uint64_t microseconds) {
315 ltimer_ns_delay(timer, microseconds * NS_IN_US);
327 int ltimer_default_init(ltimer_t *timer, ps_io_ops_t ops, ltimer_callback_fn_t callback, void *callback_token);
329 * the resources this ltimer needs without initialising the actual timer
331 int ltimer_default_describe(ltimer_t *timer, ps_io_ops_t ops);