bug-hurd
[Top][All Lists]
Advanced

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

[PATCH] Add kern/mach.h and kern/gnumach.h to define rpc prototypes


From: Flavio Cruz
Subject: [PATCH] Add kern/mach.h and kern/gnumach.h to define rpc prototypes
Date: Tue, 17 Jan 2023 00:11:49 -0500

This will remove more warnings for -Wmissing-prototypes.
---
 Makefrag.am              |   2 +
 kern/gnumach.h           |  62 +++++++++++
 kern/ipc_tt.c            |   1 +
 kern/mach.h              | 223 +++++++++++++++++++++++++++++++++++++++
 kern/mach_host.h         |   9 ++
 kern/slab.c              |   1 +
 kern/syscall_emulation.c |   1 +
 kern/task.c              |   2 +
 kern/thread.c            |   2 +-
 kern/thread_swap.c       |   2 +-
 vm/memory_object.c       |   3 +-
 vm/vm_map.c              |   1 +
 vm/vm_object.c           |   1 +
 vm/vm_user.c             |   4 +-
 14 files changed, 310 insertions(+), 4 deletions(-)
 create mode 100644 kern/gnumach.h
 create mode 100644 kern/mach.h

diff --git a/Makefrag.am b/Makefrag.am
index cb5651a2..e09defaa 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -159,6 +159,7 @@ libkernel_a_SOURCES += \
        kern/ipc_sched.h \
        kern/ipc_tt.c \
        kern/ipc_tt.h \
+       kern/gnumach.h \
        kern/kalloc.h \
        kern/kern_types.h \
        kern/kmutex.c \
@@ -168,6 +169,7 @@ libkernel_a_SOURCES += \
        kern/lock.h \
        kern/lock_mon.c \
        kern/log2.h \
+       kern/mach.h \
        kern/mach_clock.c \
        kern/mach_clock.h \
        kern/mach_debug.h \
diff --git a/kern/gnumach.h b/kern/gnumach.h
new file mode 100644
index 00000000..f7ae7c3a
--- /dev/null
+++ b/kern/gnumach.h
@@ -0,0 +1,62 @@
+/*
+ * 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_GNUMACH_H
+#define _KERN_GNUMACH_H
+
+#include <mach/mach_types.h>
+#include <kern/host.h>
+
+/* RPCs */
+
+kern_return_t
+register_new_task_notification(
+       const host_t host,
+       ipc_port_t notification);
+
+kern_return_t vm_wire_all(const ipc_port_t port, vm_map_t map, vm_wire_t 
flags);
+
+kern_return_t vm_object_sync(
+       vm_object_t             object,
+       vm_offset_t             offset,
+       vm_size_t               size,
+       boolean_t               should_flush,
+       boolean_t               should_return,
+       boolean_t               should_iosync);
+
+kern_return_t vm_msync(
+       vm_map_t                map,
+       vm_address_t            address,
+       vm_size_t               size,
+       vm_sync_t               sync_flags);
+
+kern_return_t vm_allocate_contiguous(
+       host_t                  host_priv,
+       vm_map_t                map,
+       vm_address_t            *result_vaddr,
+       rpc_phys_addr_t         *result_paddr,
+       vm_size_t               size,
+       rpc_phys_addr_t         pmin,
+       rpc_phys_addr_t         pmax,
+       rpc_phys_addr_t         palign);
+
+/* End of RPCs */
+
+#endif /* _KERN_GNUMACH_H */
diff --git a/kern/ipc_tt.c b/kern/ipc_tt.c
index 63f6e77a..025f9be0 100644
--- a/kern/ipc_tt.c
+++ b/kern/ipc_tt.c
@@ -42,6 +42,7 @@
 #include <kern/thread.h>
 #include <kern/ipc_kobject.h>
 #include <kern/ipc_tt.h>
+#include <kern/mach.h>
 #include <ipc/ipc_space.h>
 #include <ipc/ipc_table.h>
 #include <ipc/ipc_port.h>
diff --git a/kern/mach.h b/kern/mach.h
new file mode 100644
index 00000000..17345926
--- /dev/null
+++ b/kern/mach.h
@@ -0,0 +1,223 @@
+/*
+ * 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_H
+#define _KERN_MACH_H
+
+#include <mach/mach_types.h>
+
+/* RPCs */
+
+kern_return_t vm_cache_statistics(
+       vm_map_t                        map,
+       vm_cache_statistics_data_t      *stats);
+
+kern_return_t vm_allocate(
+       vm_map_t        map,
+       vm_offset_t     *addr,
+       vm_size_t       size,
+       boolean_t       anywhere);
+
+kern_return_t vm_copy(
+       vm_map_t        map,
+       vm_address_t    source_address,
+       vm_size_t       size,
+       vm_address_t    dest_address);
+
+kern_return_t vm_deallocate(
+       vm_map_t                map,
+       vm_offset_t             start,
+       vm_size_t               size);
+
+kern_return_t vm_inherit(
+       vm_map_t                map,
+       vm_offset_t             start,
+       vm_size_t               size,
+       vm_inherit_t            new_inheritance);
+
+kern_return_t vm_machine_attribute(
+       vm_map_t        map,
+       vm_address_t    address,
+       vm_size_t       size,
+       vm_machine_attribute_t  attribute,
+       vm_machine_attribute_val_t* value);             /* IN/OUT */
+
+kern_return_t vm_map(
+       vm_map_t        target_map,
+       vm_offset_t     *address,
+       vm_size_t       size,
+       vm_offset_t     mask,
+       boolean_t       anywhere,
+       ipc_port_t      memory_object,
+       vm_offset_t     offset,
+       boolean_t       copy,
+       vm_prot_t       cur_protection,
+       vm_prot_t       max_protection,
+       vm_inherit_t    inheritance);
+
+kern_return_t vm_protect(
+       vm_map_t                map,
+       vm_offset_t             start,
+       vm_size_t               size,
+       boolean_t               set_maximum,
+       vm_prot_t               new_protection);
+
+kern_return_t vm_read(
+       vm_map_t        map,
+       vm_address_t    address,
+       vm_size_t       size,
+       pointer_t       *data,
+       mach_msg_type_number_t  *data_size);
+
+kern_return_t  vm_region(
+       vm_map_t        map,
+       vm_offset_t     *address,               /* IN/OUT */
+       vm_size_t       *size,                  /* OUT */
+       vm_prot_t       *protection,            /* OUT */
+       vm_prot_t       *max_protection,        /* OUT */
+       vm_inherit_t    *inheritance,           /* OUT */
+       boolean_t       *is_shared,             /* OUT */
+       ipc_port_t      *object_name,           /* OUT */
+       vm_offset_t     *offset_in_object);     /* OUT */
+
+kern_return_t vm_write(
+       vm_map_t        map,
+       vm_address_t    address,
+       pointer_t       data,
+       mach_msg_type_number_t  size);
+
+kern_return_t
+mach_ports_register(
+       task_t                  task,
+       mach_port_array_t       memory,
+       mach_msg_type_number_t  portsCnt);
+
+kern_return_t
+mach_ports_lookup(
+       task_t                  task,
+       ipc_port_t              **portsp,
+       mach_msg_type_number_t  *portsCnt);
+
+kern_return_t task_set_emulation(
+       task_t          task,
+       vm_offset_t     routine_entry_pt,
+       int             routine_number);
+
+kern_return_t
+task_get_emulation_vector(
+       task_t                  task,
+       int                     *vector_start,                  /* out */
+       emulation_vector_t      *emulation_vector,              /* out */
+       unsigned int            *emulation_vector_count);       /* out */
+
+kern_return_t
+task_set_emulation_vector(
+       task_t                  task,
+       int                     vector_start,
+       emulation_vector_t      emulation_vector,
+       unsigned int            emulation_vector_count);
+
+kern_return_t task_get_assignment(
+       task_t          task,
+       processor_set_t *pset);
+
+kern_return_t
+task_set_essential(
+       task_t                  task,
+       boolean_t               essential);
+
+kern_return_t
+task_ras_control(
+       task_t task,
+       vm_offset_t pc,
+       vm_offset_t endpc,
+       int flavor);
+
+kern_return_t
+task_priority(
+       task_t          task,
+       int             priority,
+       boolean_t       change_threads);
+
+kern_return_t memory_object_data_supply(
+       vm_object_t             object,
+       vm_offset_t             offset,
+       vm_map_copy_t           data_copy,
+       unsigned int            data_cnt,
+       vm_prot_t               lock_value,
+       boolean_t               precious,
+       ipc_port_t              reply_to,
+       mach_msg_type_name_t    reply_to_type);
+
+kern_return_t memory_object_data_error(
+       vm_object_t     object,
+       vm_offset_t     offset,
+       vm_size_t       size,
+       kern_return_t   error_value);
+
+kern_return_t memory_object_data_unavailable(
+       vm_object_t     object,
+       vm_offset_t     offset,
+       vm_size_t       size);
+
+kern_return_t
+memory_object_lock_request(
+       vm_object_t             object,
+       vm_offset_t             offset,
+       vm_size_t               size,
+       memory_object_return_t  should_return,
+       boolean_t               should_flush,
+       vm_prot_t               prot,
+       ipc_port_t              reply_to,
+       mach_msg_type_name_t    reply_to_type);
+
+kern_return_t  memory_object_change_attributes(
+       vm_object_t             object,
+       boolean_t               may_cache,
+       memory_object_copy_strategy_t copy_strategy,
+       ipc_port_t              reply_to,
+       mach_msg_type_name_t    reply_to_type);
+
+kern_return_t  memory_object_get_attributes(
+       vm_object_t     object,
+       boolean_t       *object_ready,
+       boolean_t       *may_cache,
+       memory_object_copy_strategy_t *copy_strategy);
+
+kern_return_t  memory_object_ready(
+       vm_object_t     object,
+       boolean_t       may_cache,
+       memory_object_copy_strategy_t copy_strategy);
+
+kern_return_t memory_object_destroy(
+       vm_object_t     object,
+       kern_return_t   reason);
+
+kern_return_t  vm_set_default_memory_manager(
+               const host_t host,
+               ipc_port_t *default_manager);
+
+kern_return_t vm_statistics(
+       vm_map_t                map,
+       vm_statistics_data_t    *stat);
+
+/* End of RPCs */
+
+#endif /* _KERN_MACH_H */
diff --git a/kern/mach_host.h b/kern/mach_host.h
index de644494..d314bf5d 100644
--- a/kern/mach_host.h
+++ b/kern/mach_host.h
@@ -21,9 +21,12 @@
 #ifndef _KERN_MACH_HOST_H
 #define _KERN_MACH_HOST_H
 
+#include <ipc/ipc_types.h>
 #include <kern/processor.h>
 #include <kern/host.h>
 #include <mach/host_info.h>
+#include <mach/vm_prot.h>
+#include <vm/vm_types.h>
 
 /* RPCs */
 
@@ -81,6 +84,12 @@ kern_return_t thread_get_assignment(
        thread_t        thread,
        processor_set_t *pset);
 
+kern_return_t vm_wire(const ipc_port_t port,
+               vm_map_t map,
+               vm_offset_t start,
+               vm_size_t size,
+               vm_prot_t access);
+
 /* End of RPCs */
 
 #endif /* _KERN_MACH_HOST_H */
diff --git a/kern/slab.c b/kern/slab.c
index d44da165..d14bc080 100644
--- a/kern/slab.c
+++ b/kern/slab.c
@@ -79,6 +79,7 @@
 #include <kern/slab.h>
 #include <kern/kalloc.h>
 #include <kern/cpu_number.h>
+#include <kern/mach_debug.h>
 #include <mach/vm_param.h>
 #include <mach/machine/vm_types.h>
 #include <vm/vm_kern.h>
diff --git a/kern/syscall_emulation.c b/kern/syscall_emulation.c
index 5a477006..baad246d 100644
--- a/kern/syscall_emulation.c
+++ b/kern/syscall_emulation.c
@@ -31,6 +31,7 @@
 #include <kern/syscall_emulation.h>
 #include <kern/task.h>
 #include <kern/kalloc.h>
+#include <kern/mach.h>
 #include <vm/vm_kern.h>
 
 /* XXX */
diff --git a/kern/task.c b/kern/task.c
index d5bd14c2..beb0252b 100644
--- a/kern/task.c
+++ b/kern/task.c
@@ -44,7 +44,9 @@
 #include <kern/task.h>
 #include <kern/thread.h>
 #include <kern/slab.h>
+#include <kern/gnumach.h>
 #include <kern/kalloc.h>
+#include <kern/mach.h>
 #include <kern/processor.h>
 #include <kern/printf.h>
 #include <kern/sched_prim.h>   /* for thread_wakeup */
diff --git a/kern/thread.c b/kern/thread.c
index 06825bff..db290f7e 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -2403,7 +2403,7 @@ void stack_finalize(
  *     *maxusagep must be initialized by the caller.
  */
 
-void stack_statistics(
+static void stack_statistics(
        natural_t *totalp,
        vm_size_t *maxusagep)
 {
diff --git a/kern/thread_swap.c b/kern/thread_swap.c
index 20ad0409..ecfe48e4 100644
--- a/kern/thread_swap.c
+++ b/kern/thread_swap.c
@@ -156,7 +156,7 @@ kern_return_t thread_doswapin(thread_t thread)
  *     This procedure executes as a kernel thread.  Threads that need to
  *     be swapped in are swapped in by this thread.
  */
-void __attribute__((noreturn)) swapin_thread_continue(void)
+static void __attribute__((noreturn)) swapin_thread_continue(void)
 {
        for (;;) {
                thread_t thread;
diff --git a/vm/memory_object.c b/vm/memory_object.c
index 464a036e..7778a9f3 100644
--- a/vm/memory_object.c
+++ b/vm/memory_object.c
@@ -61,6 +61,7 @@
 #include <kern/debug.h>                /* For panic() */
 #include <kern/thread.h>               /* For current_thread() */
 #include <kern/host.h>
+#include <kern/mach.h>         /* For rpc prototypes */
 #include <vm/vm_kern.h>                /* For kernel_map, vm_move */
 #include <vm/vm_map.h>         /* For vm_map_pageable */
 #include <ipc/ipc_port.h>
@@ -425,7 +426,7 @@ kern_return_t memory_object_data_unavailable(
 #define        MEMORY_OBJECT_LOCK_RESULT_MUST_CLEAN    2
 #define        MEMORY_OBJECT_LOCK_RESULT_MUST_RETURN   3
 
-memory_object_lock_result_t memory_object_lock_page(
+static memory_object_lock_result_t memory_object_lock_page(
        vm_page_t               m,
        memory_object_return_t  should_return,
        boolean_t               should_flush,
diff --git a/vm/vm_map.c b/vm/vm_map.c
index b142ab9d..5668c11b 100644
--- a/vm/vm_map.c
+++ b/vm/vm_map.c
@@ -43,6 +43,7 @@
 #include <kern/assert.h>
 #include <kern/debug.h>
 #include <kern/kalloc.h>
+#include <kern/mach.h>
 #include <kern/list.h>
 #include <kern/rbtree.h>
 #include <kern/slab.h>
diff --git a/vm/vm_object.c b/vm/vm_object.c
index 141bd094..7bc5d12a 100644
--- a/vm/vm_object.c
+++ b/vm/vm_object.c
@@ -44,6 +44,7 @@
 #include <ipc/ipc_space.h>
 #include <kern/assert.h>
 #include <kern/debug.h>
+#include <kern/mach.h>
 #include <kern/lock.h>
 #include <kern/queue.h>
 #include <kern/xpr.h>
diff --git a/vm/vm_user.c b/vm/vm_user.c
index b3887ad1..a305c76a 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -40,9 +40,11 @@
 #include <mach/vm_statistics.h>
 #include <mach/vm_cache_statistics.h>
 #include <mach/vm_sync.h>
+#include <kern/gnumach.h>
 #include <kern/host.h>
+#include <kern/mach.h>
+#include <kern/mach_host.h>
 #include <kern/task.h>
-#include <kern/mach.server.h>
 #include <vm/vm_fault.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_map.h>
-- 
2.39.0




reply via email to

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