bug-hurd
[Top][All Lists]
Advanced

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

Re: [PATCH 3/3] move x86 copy_user.[ch] to ipc/ and make it arch-indipen


From: Samuel Thibault
Subject: Re: [PATCH 3/3] move x86 copy_user.[ch] to ipc/ and make it arch-indipendent
Date: Sat, 9 Mar 2024 18:51:41 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Luca Dariz, le sam. 09 mars 2024 15:02:44 +0100, a ecrit:
> From: LD <luca@orpolo.org>
> 
> ---
>  Makefrag.am                    |  2 ++
>  i386/Makefrag.am               |  1 -
>  {x86_64 => ipc}/copy_user.c    |  7 +++++--
>  {i386/i386 => ipc}/copy_user.h | 18 +++++++++---------
>  ipc/ipc_kmsg.c                 |  2 +-
>  ipc/ipc_mqueue.c               |  2 +-
>  ipc/mach_msg.c                 |  2 +-
>  kern/ipc_mig.c                 |  2 +-
>  x86_64/Makefrag.am             |  1 -
>  9 files changed, 20 insertions(+), 17 deletions(-)
>  rename {x86_64 => ipc}/copy_user.c (99%)
>  rename {i386/i386 => ipc}/copy_user.h (90%)
> 
> 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
> similarity index 99%
> rename from x86_64/copy_user.c
> rename to 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
> similarity index 90%
> rename from i386/i386/copy_user.h
> rename to 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 \
> -- 
> 2.39.2
> 
> 

-- 
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]