From 566c227636481b246d928772ebeaacbc7c37145b Mon Sep 17 00:00:00 2001 From: Flavio Cruz Date: Wed, 11 Jan 2023 23:23:24 -0500 Subject: Create kern/mach4.h and kern/mach_host.h and define the RPC prototypes for mach4.defs and mach_host.defs. Also move more mach_debug rpcs to kern/mach_debug.h. Message-Id: --- 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 #include #include +#include #include #include #include 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 #include #include +#include #include 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 #include #include +#include #include #include #include @@ -42,6 +43,7 @@ #include #include #include +#include #include /* 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 #include #include +#include #include #include #include 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 + +/* 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 +#include +#include + +/* 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 #include #include +#include #include #include #include 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 #include #include +#include #include #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 #include #include +#include +#include #include #include #include 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 #include #include +#include #include #include #include -- cgit v1.2.3