| /* |
| * Copyright 2017, Data61, CSIRO (ABN 41 687 119 230) |
| * |
| * SPDX-License-Identifier: BSD-2-Clause |
| */ |
| #pragma once |
| |
| #include <platsupport/ltimer.h> |
| |
| /* the timer op is set in mr0 */ |
| typedef enum rpc_timer_ops { |
| /* get the time. Return error code in mr0, and time values in mr1, mr2 (only use mr2 on 32-bit) */ |
| GET_TIME = 1, |
| /* set a timeout. mr1 is the timeout type, mr2 (+mr3 on 32bit) store the timeout value. */ |
| SET_TIMEOUT = 2 |
| } rpc_ltimer_ops_t; |
| |
| /** |
| * Initialise a client ltimer which calls via rpc to a server for |
| * timer operations. This exists such that it is easy to swap out ltimer |
| * hardware implementations and rpc implementations. |
| * |
| * This provides the RPC stubs for requesting a timeout and getting the time, how they are |
| * implemented depends on the server/client policy. While ltimer_handle_irq can be called for |
| * this timer it is not required and has no effect. |
| * |
| * Users of this interface must provide a mechanism for waiting for a timeout to come in, as per |
| * usual for ltimer interfaces. |
| * |
| * @param ltimer interface to initialise |
| * @param ps_io_ops to allocate memory with |
| * @param ep the endpoint to client should RPC for timer operations |
| * @param label the label to use in timer RPC messages, so they can be identified on the server side. |
| * @return 0 on success |
| */ |
| int sel4utils_rpc_ltimer_init(ltimer_t *ltimer, ps_io_ops_t ops, |
| seL4_CPtr ep, seL4_Word label); |
| |