diff options
author | LD <luca@orpolo.org> | 2024-03-09 15:02:44 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2024-03-09 18:51:33 +0100 |
commit | afec41f9d80cb1f923d0d4f76af832b036dc2f4f (patch) | |
tree | 2952a39068c1660b96f589593ab435de8e12fa94 | |
parent | 8e726dc9abda7027922444a53eb3131c8e267666 (diff) | |
download | gnumach-afec41f9d80cb1f923d0d4f76af832b036dc2f4f.tar.gz gnumach-afec41f9d80cb1f923d0d4f76af832b036dc2f4f.tar.bz2 gnumach-afec41f9d80cb1f923d0d4f76af832b036dc2f4f.zip |
move x86 copy_user.[ch] to ipc/ and make it arch-indipendent
Message-ID: <20240309140244.347835-3-luca@orpolo.org>
-rw-r--r-- | Makefrag.am | 2 | ||||
-rw-r--r-- | i386/Makefrag.am | 1 | ||||
-rw-r--r-- | ipc/copy_user.c (renamed from x86_64/copy_user.c) | 7 | ||||
-rw-r--r-- | ipc/copy_user.h (renamed from i386/i386/copy_user.h) | 18 | ||||
-rw-r--r-- | ipc/ipc_kmsg.c | 2 | ||||
-rw-r--r-- | ipc/ipc_mqueue.c | 2 | ||||
-rw-r--r-- | ipc/mach_msg.c | 2 | ||||
-rw-r--r-- | kern/ipc_mig.c | 2 | ||||
-rw-r--r-- | x86_64/Makefrag.am | 1 |
9 files changed, 20 insertions, 17 deletions
diff --git a/Makefrag.am b/Makefrag.am index 5b61a1d6..82fce628 100644 --- a/Makefrag.am +++ b/Makefrag.am @@ -76,6 +76,8 @@ endif # libkernel_a_SOURCES += \ + ipc/copy_user.c \ + ipc/copy_user.h \ ipc/ipc_entry.c \ ipc/ipc_entry.h \ ipc/ipc_init.c \ diff --git a/i386/Makefrag.am b/i386/Makefrag.am index 58ee3273..5e7d4740 100644 --- a/i386/Makefrag.am +++ b/i386/Makefrag.am @@ -91,7 +91,6 @@ endif # libkernel_a_SOURCES += \ - i386/i386/copy_user.h \ i386/i386/cswitch.S \ i386/i386/debug_trace.S \ i386/i386/idt_inittab.S \ diff --git a/x86_64/copy_user.c b/ipc/copy_user.c index c6e125d9..5c6329d3 100644 --- a/x86_64/copy_user.c +++ b/ipc/copy_user.c @@ -16,14 +16,15 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifdef __LP64__ + #include <stddef.h> #include <string.h> +#include <ipc/copy_user.h> #include <kern/debug.h> #include <mach/boolean.h> -#include <copy_user.h> - /* Mach field descriptors measure size in bits */ #define descsize_to_bytes(n) (n / 8) @@ -611,3 +612,5 @@ int copyoutmsg (const void *kernelbuf, void *userbuf, const size_t ksize) return 0; } + +#endif /* __LP64__ */ diff --git a/i386/i386/copy_user.h b/ipc/copy_user.h index 3d1c7278..a57b3ee5 100644 --- a/i386/i386/copy_user.h +++ b/ipc/copy_user.h @@ -28,7 +28,7 @@ /* * The copyin_32to64() and copyout_64to32() routines are meant for data types * that have different size in kernel and user space. They should be independent - * of endianness and hopefully can be reused in the future on other archs. + * of endianness and hopefully can be reused on all archs. * These types are e.g.: * - port names vs port pointers, on a 64-bit kernel * - memory addresses, on a 64-bit kernel and 32-bit user @@ -71,23 +71,23 @@ static inline int copyout_address(const vm_offset_t *kaddr, rpc_vm_offset_t *uad static inline int copyin_port(const mach_port_name_t *uaddr, mach_port_t *kaddr) { -#ifdef __x86_64__ +#ifdef __LP64__ return copyin_32to64(uaddr, kaddr); -#else /* __x86_64__ */ +#else /* __LP64__ */ return copyin(uaddr, kaddr, sizeof(*uaddr)); -#endif /* __x86_64__ */ +#endif /* __LP64__ */ } static inline int copyout_port(const mach_port_t *kaddr, mach_port_name_t *uaddr) { -#ifdef __x86_64__ +#ifdef __LP64__ return copyout_64to32(kaddr, uaddr); -#else /* __x86_64__ */ +#else /* __LP64__ */ return copyout(kaddr, uaddr, sizeof(*kaddr)); -#endif /* __x86_64__ */ +#endif /* __LP64__ */ } -#if defined(__x86_64__) && defined(USER32) +#if defined(__LP64__) && defined(USER32) /* For 32 bit userland, kernel and user land messages are not the same size. */ size_t msg_usize(const mach_msg_header_t *kmsg); #else @@ -95,6 +95,6 @@ static inline size_t msg_usize(const mach_msg_header_t *kmsg) { return kmsg->msgh_size; } -#endif /* __x86_64__ && USER32 */ +#endif /* __LP64__ && USER32 */ #endif /* COPY_USER_H */ diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c index bd843804..8bd645ff 100644 --- a/ipc/ipc_kmsg.c +++ b/ipc/ipc_kmsg.c @@ -42,7 +42,6 @@ #include <mach/message.h> #include <mach/port.h> #include <machine/locore.h> -#include <machine/copy_user.h> #include <kern/assert.h> #include <kern/debug.h> #include <kern/kalloc.h> @@ -51,6 +50,7 @@ #include <vm/vm_kern.h> #include <vm/vm_user.h> #include <ipc/port.h> +#include <ipc/copy_user.h> #include <ipc/ipc_entry.h> #include <ipc/ipc_kmsg.h> #include <ipc/ipc_thread.h> diff --git a/ipc/ipc_mqueue.c b/ipc/ipc_mqueue.c index 44e1eb98..95308f35 100644 --- a/ipc/ipc_mqueue.c +++ b/ipc/ipc_mqueue.c @@ -36,13 +36,13 @@ #include <mach/port.h> #include <mach/message.h> -#include <machine/copy_user.h> #include <kern/assert.h> #include <kern/counters.h> #include <kern/debug.h> #include <kern/sched_prim.h> #include <kern/ipc_sched.h> #include <kern/ipc_kobject.h> +#include <ipc/copy_user.h> #include <ipc/ipc_mqueue.h> #include <ipc/ipc_thread.h> #include <ipc/ipc_kmsg.h> diff --git a/ipc/mach_msg.c b/ipc/mach_msg.c index 6194ef7b..ff5e5b09 100644 --- a/ipc/mach_msg.c +++ b/ipc/mach_msg.c @@ -39,7 +39,6 @@ #include <mach/kern_return.h> #include <mach/port.h> #include <mach/message.h> -#include <machine/copy_user.h> #include <kern/assert.h> #include <kern/counters.h> #include <kern/debug.h> @@ -49,6 +48,7 @@ #include <kern/ipc_sched.h> #include <kern/exception.h> #include <vm/vm_map.h> +#include <ipc/copy_user.h> #include <ipc/ipc_kmsg.h> #include <ipc/ipc_marequest.h> #include <ipc/ipc_mqueue.h> diff --git a/kern/ipc_mig.c b/kern/ipc_mig.c index d26d2c6d..b753a25f 100644 --- a/kern/ipc_mig.c +++ b/kern/ipc_mig.c @@ -30,7 +30,6 @@ #include <mach/mig_support.h> #include <mach/thread_status.h> #include <machine/locore.h> -#include <machine/copy_user.h> #include <kern/ast.h> #include <kern/debug.h> #include <kern/ipc_tt.h> @@ -42,6 +41,7 @@ #include <kern/ipc_mig.h> #include <vm/vm_map.h> #include <vm/vm_user.h> +#include <ipc/copy_user.h> #include <ipc/port.h> #include <ipc/ipc_kmsg.h> #include <ipc/ipc_entry.h> diff --git a/x86_64/Makefrag.am b/x86_64/Makefrag.am index b0bc45c2..2bbed986 100644 --- a/x86_64/Makefrag.am +++ b/x86_64/Makefrag.am @@ -90,7 +90,6 @@ libkernel_a_SOURCES += \ i386/i386/percpu.h \ i386/i386/percpu.c \ x86_64/cswitch.S \ - x86_64/copy_user.c \ x86_64/debug_trace.S \ x86_64/idt_inittab.S \ x86_64/locore.S \ |