| /* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef CRAS_TM_H_ |
| #define CRAS_TM_H_ |
| |
| /* cras_timer provides an interface to register a function to be called at a |
| * later time. This interface should be used from the main thread only, it is |
| * not thread safe. |
| */ |
| |
| struct cras_tm; /* timer manager */ |
| struct cras_timer; |
| |
| /* Creates a timer. Must later be removed with cras_rm_cancel_timer. |
| * Args: |
| * tm - Timer manager. |
| * ms - Call 'cb' in ms milliseconds. |
| * cb - The callback to call at timeout. |
| * cb_data - Passed to the callback when it is run. |
| * Returns: |
| * Pointer to a newly allocated timer, passed timer to cras_tm_cancel_timer |
| * to cancel before it fires. |
| */ |
| struct cras_timer *cras_tm_create_timer(struct cras_tm *tm, unsigned int ms, |
| void (*cb)(struct cras_timer *t, |
| void *data), |
| void *cb_data); |
| |
| /* Deletes a timer returned from cras_tm_create_timer. */ |
| void cras_tm_cancel_timer(struct cras_tm *tm, struct cras_timer *t); |
| |
| /* Interface for system to create the timer manager. */ |
| struct cras_tm *cras_tm_init(); |
| |
| /* Interface for system to destroy the timer manager. */ |
| void cras_tm_deinit(struct cras_tm *tm); |
| |
| /* Get the amount of time before the next timer expires. ts is set to an |
| * the amount of time before the next timer expires (0 if already past due). |
| * Args: |
| * tm - Timer manager. |
| * ts - Filled with time before next event. |
| * Returns: |
| * 0 if no timers are active, 1 if they are. |
| */ |
| int cras_tm_get_next_timeout(const struct cras_tm *tm, struct timespec *ts); |
| |
| /* Calls any expired timers. */ |
| void cras_tm_call_callbacks(struct cras_tm *tm); |
| |
| #endif /* CRAS_TM_H_ */ |