timer_start - start a timer
#include <magenta/syscalls.h>
mx_status_t mx_timer_start(mx_handle_t handle, mx_time_t deadline, mx_duration_t period,
mx_duration_t slack);
mx_timer_start() starts a timer that will fire when deadline passes and optionally continue firing afterwards when each period has elapsed.
The deadline parameter specifies a deadline with respect to MX_CLOCK_MONOTONIC and cannot be zero. To wait for a relative interval, use mx_deadline_after() returned value in deadline.
If period is zero, the timer is one-shot and when the timer fires it asserts MX_TIMER_SIGNALED. To de-assert this signal call timer_cancel() or timer_start() again.
If period is at least MX_TIMER_MIN_PERIOD the timer will fire when deadline passes, then at dealine + period and so on. In this mode the MX_TIMER_SIGNALED signal is not asserted but strobed. This means that it can satisfy an existing wait operation or generate a port signal packet, but it cannot be reliably inspected.
The slack parameter should be set to zero.
mx_timer_start() returns MX_OK on success. In the event of failure, a negative error value is returned.
MX_ERR_BAD_HANDLE handle is not a valid handle.
MX_ERR_ACCESS_DENIED handle lacks the right MX_RIGHT_WRITE.
MX_ERR_INVALID_ARGS deadline is less than MX_TIMER_MIN_DEADLINE
MX_ERR_NOT_SUPPORTED period is less than MX_TIMER_MIN_PERIOD.
slack is ignored at the moment. It will be used to coalesce timers.