bug-hurd
[Top][All Lists]
Advanced

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

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


From: Samuel Thibault
Subject: Re: [PATCH] Create kern/mach4.h and kern/mach_host.h and define the RPC prototypes for mach4.defs and mach_host.defs.
Date: Fri, 13 Jan 2023 01:00:07 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Flavio Cruz, le mer. 11 janv. 2023 23:23:24 -0500, a ecrit:
> 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
> 
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



reply via email to

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