aboutsummaryrefslogtreecommitdiff
path: root/include/arch
diff options
context:
space:
mode:
Diffstat (limited to 'include/arch')
-rw-r--r--include/arch/cpu.h6
-rw-r--r--include/arch/irq.h43
-rw-r--r--include/arch/proc.h2
3 files changed, 41 insertions, 10 deletions
diff --git a/include/arch/cpu.h b/include/arch/cpu.h
index d142433..1fd146e 100644
--- a/include/arch/cpu.h
+++ b/include/arch/cpu.h
@@ -1,8 +1,8 @@
/* SPDX-License-Identifier: copyleft-next-0.3.1 */
/* Copyright 2021 - 2022, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */
-#ifndef KMI_CPU_H
-#define KMI_CPU_H
+#ifndef KMI_ARCH_CPU_H
+#define KMI_ARCH_CPU_H
/**
* @file cpu.h
@@ -43,4 +43,4 @@ void cpu_assign(struct tcb *t);
*/
void cpu_send_ipi(id_t cpu_id);
-#endif /* KMI_CPU_H */
+#endif /* KMI_ARCH_CPU_H */
diff --git a/include/arch/irq.h b/include/arch/irq.h
index 72b998e..85a7360 100644
--- a/include/arch/irq.h
+++ b/include/arch/irq.h
@@ -1,8 +1,11 @@
/* SPDX-License-Identifier: copyleft-next-0.3.1 */
/* Copyright 2021 - 2022, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */
-#ifndef KMI_IRQ_H
-#define KMI_IRQ_H
+#ifndef KMI_ARCH_IRQ_H
+#define KMI_ARCH_IRQ_H
+
+/** Type for IRQ id. */
+typedef uint_fast32_t irq_t;
/**
* @file irq.h
@@ -19,16 +22,42 @@
#endif
/**
- * Initialize IRQ subsystem.
+ * Initialize arch-specific IRQ stuff.
*
* @param fdt Global FDT pointer.
*/
-void init_irq(void *fdt);
+void setup_irq(void *fdt);
+
+/**
+ * Activate IRQ for \p id.
+ * Assumes there's one interrupt controller for the whole system, which might be
+ * an oversimplification.
+ *
+ * @param id IRQ id to deactivate.
+ * @return OK on success, non-zero otherwise.
+ */
+stat_t activate_irq(irq_t id);
+
+/**
+ * Deactivates IRQ for \p id.
+ *
+ * @param id IRQ id to deactivate.
+ * @return OK on success, non-zero otherwise.
+ */
+stat_t deactivate_irq(irq_t id);
/** Enable IRQs. */
-void enable_irq();
+void enable_irqs();
/** Disable IRQs. */
-void disable_irq();
+void disable_irqs();
+
+/** Get IRQ to handle.
+ *
+ * @return ID of IRQ to handle.
+ *
+ * @todo what about illegal IRQs due to bug or something?
+ */
+irq_t get_irq();
-#endif /* KMI_IRQ_H */
+#endif /* KMI_ARCH_IRQ_H */
diff --git a/include/arch/proc.h b/include/arch/proc.h
index 79b099e..341a2f4 100644
--- a/include/arch/proc.h
+++ b/include/arch/proc.h
@@ -21,6 +21,8 @@
* Attach argument data to thread.
*
* @param t Thread that will run after return.
+ * @param n How many of the arguments to attach. Might micro-optimize some
+ * stuff.
* @param a Arguments to attach.
*/
void set_args(struct tcb *t, size_t n, struct sys_ret a);