aboutsummaryrefslogtreecommitdiff
path: root/include/apos/ipi.h
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-11-09 16:27:23 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2022-11-09 17:27:11 +0200
commita3e45d5dcaf1bf3a9e684b5fcc301413ec994a9b (patch)
treeae319c8f389e7ca39bbdd4b114655f8604563305 /include/apos/ipi.h
parent2b5533aefef026fe7bada314ebdb2651b809979a (diff)
downloadkmi-a3e45d5dcaf1bf3a9e684b5fcc301413ec994a9b.tar.gz
kmi-a3e45d5dcaf1bf3a9e684b5fcc301413ec994a9b.zip
add basic IPI structure
Diffstat (limited to 'include/apos/ipi.h')
-rw-r--r--include/apos/ipi.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/apos/ipi.h b/include/apos/ipi.h
new file mode 100644
index 0000000..c895d58
--- /dev/null
+++ b/include/apos/ipi.h
@@ -0,0 +1,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 */