aboutsummaryrefslogtreecommitdiff
path: root/include/apos/ipi.h
blob: c895d585cae0bd919fad4f2a94409dffb26e3edf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef APOS_IPI_H
#define APOS_IPI_H

/**
 * @file ipi.h
 *
 * IPI function definitions.
 */

#include <apos/types.h>
#include <apos/uapi.h>
#include <apos/tcb.h>

/**
 * Clear potential IPI in \p t, and return its value.
 *
 * @param t \ref tcb to clear possible IPI status of.
 * @return \ref true if \p was interrupted by IPI, \ref false otherwise.
 */
bool clear_ipi(struct tcb *t);

/**
 * Send IPI to \p t. Assumes \c running(t).
 *
 * @param t \ref tcb to send IPI to.
 */
void send_ipi(struct tcb *t);

/**
 * Handle IPI.
 *
 * @param t Thread who was interrupted by IPI.
 * @return Possible arguments to IPI.
 */
struct sys_ret handle_ipi(struct tcb *t);

#endif /* APOS_IPI_H */