summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2024-02-12 01:26:33 -0500
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2024-02-12 18:50:00 +0100
commitdf9270ef134498d4fffb921286375137d3639ae5 (patch)
tree1eb4ddb572f24fbc737a99c4c63d39fe6d2b3653
parent2556fdece900d67529d5eda01f1bdaae4ffe96b0 (diff)
Replace kernel header includes in include/mach/mach_types.h with forward declarations.
I was trying to reuse TASK_NAME_SIZE in kern/thread.h but it was impossible because files included from kern/task.h end up requiring kern/thread.h (through percpu.h), creating a recursive dependency. With this change, mach_types.h only defines forward declarations and modules have to explicitly include the appropriate header file if they want to be able touch those structures. Most of the other includes are required because we no longer grab many different includes through mach_types.h. Message-ID: <20240212062634.1082207-1-flaviocruz@gmail.com>
-rw-r--r--ddb/db_examine.c1
-rw-r--r--device/io_req.h1
-rw-r--r--i386/i386/machine_task.c1
-rw-r--r--i386/i386/percpu.h2
-rw-r--r--i386/i386/trap.h1
-rw-r--r--i386/i386at/int_init.c1
-rw-r--r--include/mach/mach_types.h13
-rw-r--r--include/mach/std_types.h4
-rw-r--r--ipc/ipc_space.h1
-rw-r--r--kern/eventcount.h2
-rw-r--r--kern/ipc_mig.h1
-rw-r--r--kern/thread.c4
12 files changed, 20 insertions, 12 deletions
diff --git a/ddb/db_examine.c b/ddb/db_examine.c
index 88d7a575..1941fc38 100644
--- a/ddb/db_examine.c
+++ b/ddb/db_examine.c
@@ -47,6 +47,7 @@
#include <kern/task.h>
#include <kern/smp.h>
#include <mach/vm_param.h>
+#include <vm/vm_map.h>
#define db_thread_to_task(thread) ((thread)? thread->task: TASK_NULL)
diff --git a/device/io_req.h b/device/io_req.h
index e66e0800..fb636969 100644
--- a/device/io_req.h
+++ b/device/io_req.h
@@ -38,6 +38,7 @@
#include <kern/slab.h>
#include <kern/kalloc.h>
#include <kern/lock.h>
+#include <vm/vm_map.h>
#include <vm/vm_page.h>
#include <device/device_types.h>
#include <device/dev_hdr.h>
diff --git a/i386/i386/machine_task.c b/i386/i386/machine_task.c
index d592838a..8bebf368 100644
--- a/i386/i386/machine_task.c
+++ b/i386/i386/machine_task.c
@@ -23,6 +23,7 @@
#include <kern/lock.h>
#include <mach/mach_types.h>
#include <kern/slab.h>
+#include <kern/task.h>
#include <machine/task.h>
#include <machine/io_perm.h>
diff --git a/i386/i386/percpu.h b/i386/i386/percpu.h
index 86b0a315..637d2ca6 100644
--- a/i386/i386/percpu.h
+++ b/i386/i386/percpu.h
@@ -66,7 +66,7 @@ MACRO_END
#endif
#include <kern/processor.h>
-#include <kern/thread.h>
+#include <mach/mach_types.h>
struct percpu {
struct percpu *self;
diff --git a/i386/i386/trap.h b/i386/i386/trap.h
index e82164d0..db222737 100644
--- a/i386/i386/trap.h
+++ b/i386/i386/trap.h
@@ -30,6 +30,7 @@
#include <mach/machine/trap.h>
#ifndef __ASSEMBLER__
+#include <i386/thread.h>
#include <mach/mach_types.h>
char *trap_name(unsigned int trapnum);
diff --git a/i386/i386at/int_init.c b/i386/i386at/int_init.c
index 262bef1b..5c8fce6d 100644
--- a/i386/i386at/int_init.c
+++ b/i386/i386at/int_init.c
@@ -23,6 +23,7 @@
#include <i386at/idt.h>
#include <i386at/int_init.h>
+#include <i386/gdt.h>
#include <i386/mp_desc.h>
#include <kern/printf.h>
#ifdef APIC
diff --git a/include/mach/mach_types.h b/include/mach/mach_types.h
index 57f8f22d..5ecd686a 100644
--- a/include/mach/mach_types.h
+++ b/include/mach/mach_types.h
@@ -57,13 +57,12 @@
#include <mach/vm_sync.h>
#ifdef MACH_KERNEL
-#include <kern/task.h> /* for task_array_t */
-#include <kern/thread.h> /* for thread_array_t */
-#include <kern/processor.h> /* for processor_array_t,
- processor_set_array_t,
- processor_set_name_array_t */
-#include <kern/syscall_emulation.h>
- /* for emulation_vector_t */
+
+typedef struct task *task_t;
+typedef struct thread *thread_t;
+typedef struct processor *processor_t;
+typedef struct processor_set *processor_set_t;
+
#else /* MACH_KERNEL */
typedef mach_port_t task_t;
typedef task_t *task_array_t;
diff --git a/include/mach/std_types.h b/include/mach/std_types.h
index f78e236a..0d5db0ae 100644
--- a/include/mach/std_types.h
+++ b/include/mach/std_types.h
@@ -41,8 +41,4 @@
typedef vm_offset_t pointer_t;
typedef vm_offset_t vm_address_t;
-#ifdef MACH_KERNEL
-#include <ipc/ipc_port.h>
-#endif /* MACH_KERNEL */
-
#endif /* _MACH_STD_TYPES_H_ */
diff --git a/ipc/ipc_space.h b/ipc/ipc_space.h
index 3f0eaa08..96d58942 100644
--- a/ipc/ipc_space.h
+++ b/ipc/ipc_space.h
@@ -49,6 +49,7 @@
#include <kern/slab.h>
#include <kern/printf.h>
#include <ipc/ipc_entry.h>
+#include <ipc/ipc_port.h>
#include <ipc/ipc_types.h>
/*
diff --git a/kern/eventcount.h b/kern/eventcount.h
index 7cc82207..598d7e02 100644
--- a/kern/eventcount.h
+++ b/kern/eventcount.h
@@ -35,6 +35,8 @@
#ifndef _KERN_EVENTCOUNT_H_
#define _KERN_EVENTCOUNT_H_ 1
+#include <kern/lock.h>
+
/* kernel visible only */
typedef struct evc {
diff --git a/kern/ipc_mig.h b/kern/ipc_mig.h
index a8ee7869..422e8d84 100644
--- a/kern/ipc_mig.h
+++ b/kern/ipc_mig.h
@@ -28,6 +28,7 @@
#include <mach/std_types.h>
#include <device/device_types.h>
+#include <ipc/ipc_thread.h>
/*
* Routine: mach_msg_send_from_kernel
diff --git a/kern/thread.c b/kern/thread.c
index de9d1982..23ee8b09 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -32,12 +32,15 @@
*/
#include <kern/printf.h>
+#include <mach/message.h>
#include <mach/std_types.h>
#include <mach/policy.h>
#include <mach/thread_info.h>
#include <mach/thread_special_ports.h>
#include <mach/thread_status.h>
#include <mach/time_value.h>
+#include <mach/vm_prot.h>
+#include <mach/vm_inherit.h>
#include <machine/vm_param.h>
#include <kern/ast.h>
#include <kern/counters.h>
@@ -59,6 +62,7 @@
#include <kern/slab.h>
#include <kern/smp.h>
#include <kern/mach_clock.h>
+#include <string.h>
#include <vm/vm_kern.h>
#include <vm/vm_user.h>
#include <ipc/ipc_kmsg.h>