Skip to content

Latest commit

 

History

History
63 lines (38 loc) · 1.74 KB

timer_start.md

File metadata and controls

63 lines (38 loc) · 1.74 KB

mx_timer_start

NAME

timer_start - start a timer

SYNOPSIS

#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);

DESCRIPTION

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.

RETURN VALUE

mx_timer_start() returns MX_OK on success. In the event of failure, a negative error value is returned.

ERRORS

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.

NOTE

slack is ignored at the moment. It will be used to coalesce timers.

SEE ALSO

timer_create, timer_cancel, deadline_after