bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Create kern/mach4.h and kern/mach_host.h and define the RPC prot


From: Flavio Cruz
Subject: [PATCH] Create kern/mach4.h and kern/mach_host.h and define the RPC prototypes for mach4.defs and mach_host.defs.
Date: Wed, 11 Jan 2023 23:23:24 -0500

Also move more mach_debug rpcs to kern/mach_debug.h.
---
 Makefrag.am       |  2 ++
 ipc/mach_debug.c  |  1 +
 kern/host.c       |  1 +
 kern/ipc_host.c   |  2 ++
 kern/ipc_mig.h    |  9 +++++
 kern/ipc_tt.c     |  1 +
 kern/mach4.h      | 66 ++++++++++++++++++++++++++++++++++++
 kern/mach_debug.h | 73 ++++++++++++++++++++++++++++++++++++++++
 kern/mach_host.h  | 86 +++++++++++++++++++++++++++++++++++++++++++++++
 kern/machine.c    |  1 +
 kern/pc_sample.c  |  1 +
 kern/thread.c     |  2 ++
 vm/vm_debug.c     |  1 +
 13 files changed, 246 insertions(+)
 create mode 100644 kern/mach4.h
 create mode 100644 kern/mach_host.h

diff --git a/Makefrag.am b/Makefrag.am
index 8a82caee..cb5651a2 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -173,6 +173,8 @@ libkernel_a_SOURCES += \
        kern/mach_debug.h \
        kern/mach_factor.c \
        kern/mach_factor.h \
+       kern/mach_host.h \
+       kern/mach4.h \
        kern/machine.c \
        kern/machine.h \
        kern/macros.h \
diff --git a/ipc/mach_debug.c b/ipc/mach_debug.c
index ecbfca47..57c3133a 100644
--- a/ipc/mach_debug.c
+++ b/ipc/mach_debug.c
@@ -41,6 +41,7 @@
 #include <mach/vm_param.h>
 #include <mach_debug/hash_info.h>
 #include <kern/host.h>
+#include <kern/mach_debug.h>
 #include <vm/vm_map.h>
 #include <vm/vm_kern.h>
 #include <ipc/ipc_space.h>
diff --git a/kern/host.c b/kern/host.c
index 3271b0cd..4490a8e1 100644
--- a/kern/host.c
+++ b/kern/host.c
@@ -42,6 +42,7 @@
 #include <kern/processor.h>
 #include <kern/ipc_host.h>
 #include <kern/mach_clock.h>
+#include <kern/mach_host.h>
 #include <mach/vm_param.h>
 
 host_data_t    realhost;
diff --git a/kern/ipc_host.c b/kern/ipc_host.c
index 6163beff..0f35689a 100644
--- a/kern/ipc_host.c
+++ b/kern/ipc_host.c
@@ -35,6 +35,7 @@
 #include <mach/message.h>
 #include <kern/debug.h>
 #include <kern/host.h>
+#include <kern/mach_host.h>
 #include <kern/processor.h>
 #include <kern/task.h>
 #include <kern/thread.h>
@@ -42,6 +43,7 @@
 #include <kern/ipc_kobject.h>
 #include <ipc/ipc_port.h>
 #include <ipc/ipc_space.h>
+#include <mach/mach_traps.h>
 
 #include <machine/machspl.h>   /* for spl */
 
diff --git a/kern/ipc_mig.h b/kern/ipc_mig.h
index 469f629c..e3ad6deb 100644
--- a/kern/ipc_mig.h
+++ b/kern/ipc_mig.h
@@ -139,4 +139,13 @@ io_return_t syscall_device_writev_request(
                        io_buf_vec_t    *iovec,
                        vm_size_t       iocount);
 
+mach_port_name_t mig_get_reply_port(void);
+
+void mig_dealloc_reply_port(mach_port_t reply_port);
+
+void mig_put_reply_port(mach_port_t reply_port);
+
+vm_size_t
+mig_strncpy(char *dest, const char *src, int len);
+
 #endif /* _IPC_MIG_H_ */
diff --git a/kern/ipc_tt.c b/kern/ipc_tt.c
index d2a22f9f..63f6e77a 100644
--- a/kern/ipc_tt.c
+++ b/kern/ipc_tt.c
@@ -32,6 +32,7 @@
 #include <mach/boolean.h>
 #include <mach/kern_return.h>
 #include <mach/mach_param.h>
+#include <mach/mach_traps.h>
 #include <mach/task_special_ports.h>
 #include <mach/thread_special_ports.h>
 #include <vm/vm_kern.h>
diff --git a/kern/mach4.h b/kern/mach4.h
new file mode 100644
index 00000000..bff5d187
--- /dev/null
+++ b/kern/mach4.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2023 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Mach.
+ *
+ * GNU Mach is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _KERN_MACH4_H
+#define _KERN_MACH4_H
+
+#include <kern/thread.h>
+
+/* RPCs */
+
+kern_return_t
+thread_enable_pc_sampling(
+    thread_t thread,
+    int *tickp,
+    sampled_pc_flavor_t flavors);
+
+kern_return_t
+thread_disable_pc_sampling(
+    thread_t thread,
+    int *samplecntp);
+
+kern_return_t
+task_enable_pc_sampling(
+    task_t task,
+    int *tickp,
+    sampled_pc_flavor_t flavors);
+
+kern_return_t
+task_disable_pc_sampling(
+    task_t task,
+    int *samplecntp);
+
+kern_return_t
+thread_get_sampled_pcs(
+       thread_t thread,
+       sampled_pc_seqno_t *seqnop,
+       sampled_pc_array_t sampled_pcs_out,
+       int *sampled_pcs_cntp);
+
+kern_return_t
+task_get_sampled_pcs(
+       task_t task,
+       sampled_pc_seqno_t *seqnop,
+       sampled_pc_array_t sampled_pcs_out,
+       int *sampled_pcs_cntp);
+
+/* End of RPCs */
+
+#endif /* _KERN_MACH4_H */
diff --git a/kern/mach_debug.h b/kern/mach_debug.h
index 63b8ae96..3d49b321 100644
--- a/kern/mach_debug.h
+++ b/kern/mach_debug.h
@@ -35,6 +35,79 @@ kern_return_t host_load_symbol_table(
                unsigned int    symbtab_count);
 #endif /* defined(MACH_KDB) && defined(MACH_DEBUG) */
 
+kern_return_t
+mach_port_get_srights(
+       ipc_space_t             space,
+       mach_port_name_t        name,
+       mach_port_rights_t      *srightsp);
+
+kern_return_t
+mach_port_dnrequest_info(
+       ipc_space_t     space,
+       mach_port_name_t        name,
+       unsigned int    *totalp,
+       unsigned int    *usedp);
+
+kern_return_t
+mach_port_kernel_object(
+       ipc_space_t     space,
+       mach_port_name_t        name,
+       unsigned int    *typep,
+       vm_offset_t     *addrp);
+
+kern_return_t
+host_ipc_marequest_info(
+       host_t                          host,
+       unsigned int                    *maxp,
+       hash_info_bucket_array_t        *infop,
+       unsigned int                    *countp);
+
+#if MACH_DEBUG
+kern_return_t host_slab_info(host_t host, cache_info_array_t *infop,
+                             unsigned int *infoCntp);
+#endif /* MACH_DEBUG */
+
+kern_return_t processor_set_stack_usage(
+       processor_set_t pset,
+       unsigned int    *totalp,
+       vm_size_t       *spacep,
+       vm_size_t       *residentp,
+       vm_size_t       *maxusagep,
+       vm_offset_t     *maxstackp);
+
+kern_return_t host_stack_usage(
+       host_t          host,
+       vm_size_t       *reservedp,
+       unsigned int    *totalp,
+       vm_size_t       *spacep,
+       vm_size_t       *residentp,
+       vm_size_t       *maxusagep,
+       vm_offset_t     *maxstackp);
+
+kern_return_t
+mach_vm_region_info(
+       vm_map_t                map,
+       vm_offset_t             address,
+       vm_region_info_t        *regionp,
+       ipc_port_t              *portp);
+
+kern_return_t
+mach_vm_object_info(
+       vm_object_t             object,
+       vm_object_info_t        *infop,
+       ipc_port_t              *shadowp,
+       ipc_port_t              *copyp);
+
+kern_return_t
+mach_vm_object_pages(
+       vm_object_t             object,
+       vm_page_info_array_t    *pagesp,
+       natural_t               *countp);
+
+kern_return_t
+host_virtual_physical_table_info(const host_t host,
+               hash_info_bucket_array_t *infop, natural_t *countp);
+
 /* End of RPCs */
 
 #endif /* _KERN_MACH_DEBUG_H */
diff --git a/kern/mach_host.h b/kern/mach_host.h
new file mode 100644
index 00000000..de644494
--- /dev/null
+++ b/kern/mach_host.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2023 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Mach.
+ *
+ * GNU Mach is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _KERN_MACH_HOST_H
+#define _KERN_MACH_HOST_H
+
+#include <kern/processor.h>
+#include <kern/host.h>
+#include <mach/host_info.h>
+
+/* RPCs */
+
+kern_return_t host_processors(
+       const host_t            host,
+       processor_array_t       *processor_list,
+       natural_t               *countp);
+
+kern_return_t  host_info(
+       const host_t    host,
+       int             flavor,
+       host_info_t     info,
+       natural_t       *count);
+
+kern_return_t host_kernel_version(
+       const host_t            host,
+       kernel_version_t        out_version);
+
+kern_return_t
+host_processor_sets(
+       const host_t                    host,
+       processor_set_name_array_t      *pset_list,
+       natural_t                       *count);
+
+kern_return_t
+host_processor_set_priv(
+       const host_t    host,
+       processor_set_t pset_name,
+       processor_set_t *pset);
+
+kern_return_t
+processor_set_default(
+       const host_t    host,
+       processor_set_t *pset);
+
+kern_return_t
+host_reboot(const host_t host, int options);
+
+kern_return_t
+host_get_boot_info(
+        host_t              priv_host,
+        kernel_boot_info_t  boot_info);
+
+kern_return_t task_get_assignment(
+       task_t          task,
+       processor_set_t *pset);
+
+kern_return_t
+thread_wire(
+       host_t          host,
+       thread_t        thread,
+       boolean_t       wired);
+
+kern_return_t thread_get_assignment(
+       thread_t        thread,
+       processor_set_t *pset);
+
+/* End of RPCs */
+
+#endif /* _KERN_MACH_HOST_H */
diff --git a/kern/machine.c b/kern/machine.c
index fdf59ce7..cf8060d7 100644
--- a/kern/machine.c
+++ b/kern/machine.c
@@ -45,6 +45,7 @@
 #include <kern/ipc_host.h>
 #include <kern/host.h>
 #include <kern/machine.h>
+#include <kern/mach_host.h>
 #include <kern/lock.h>
 #include <kern/processor.h>
 #include <kern/queue.h>
diff --git a/kern/pc_sample.c b/kern/pc_sample.c
index 6c891fe1..280d8b54 100644
--- a/kern/pc_sample.c
+++ b/kern/pc_sample.c
@@ -35,6 +35,7 @@
 #include <kern/host.h>
 #include <kern/thread.h>
 #include <kern/pc_sample.h>
+#include <kern/mach4.h>
 #include <kern/mach_clock.h>
 
 #if    MACH_PCSAMPLE
diff --git a/kern/thread.c b/kern/thread.c
index c420869f..06825bff 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -45,6 +45,8 @@
 #include <kern/eventcount.h>
 #include <kern/ipc_mig.h>
 #include <kern/ipc_tt.h>
+#include <kern/mach_debug.h>
+#include <kern/mach_host.h>
 #include <kern/processor.h>
 #include <kern/queue.h>
 #include <kern/sched.h>
diff --git a/vm/vm_debug.c b/vm/vm_debug.c
index c76e63b7..526bb163 100644
--- a/vm/vm_debug.c
+++ b/vm/vm_debug.c
@@ -46,6 +46,7 @@
 #include <vm/vm_map.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_object.h>
+#include <kern/mach_debug.h>
 #include <kern/task.h>
 #include <kern/host.h>
 #include <kern/printf.h>
-- 
2.39.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]