bug-hurd
[Top][All Lists]
Advanced

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

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


From: Luca Dariz
Subject: [PATCH 3/3] move x86 copy_user.[ch] to ipc/ and make it arch-indipendent
Date: Sat, 9 Mar 2024 15:02:44 +0100

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




reply via email to

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