aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mach/mach_traps.h18
-rw-r--r--kern/ipc_mig.c41
-rw-r--r--kern/ipc_mig.h30
3 files changed, 41 insertions, 48 deletions
diff --git a/include/mach/mach_traps.h b/include/mach/mach_traps.h
index 0433707a..2a87f62a 100644
--- a/include/mach/mach_traps.h
+++ b/include/mach/mach_traps.h
@@ -35,19 +35,9 @@
#include <mach/port.h>
-mach_port_t mach_reply_port
- (void);
-
-mach_port_t mach_thread_self
- (void);
-
-#ifdef __386BSD__
-#undef mach_task_self
-#endif
-mach_port_t mach_task_self
- (void);
-
-mach_port_t mach_host_self
- (void);
+mach_port_name_t mach_reply_port (void);
+mach_port_name_t mach_thread_self (void);
+mach_port_name_t mach_task_self (void);
+mach_port_name_t mach_host_self (void);
#endif /* _MACH_MACH_TRAPS_H_ */
diff --git a/kern/ipc_mig.c b/kern/ipc_mig.c
index a9e3f53b..afda1016 100644
--- a/kern/ipc_mig.c
+++ b/kern/ipc_mig.c
@@ -29,6 +29,7 @@
#include <mach/message.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>
@@ -576,12 +577,12 @@ port_name_to_space(mach_port_name_t name)
kern_return_t
syscall_vm_map(
mach_port_name_t target_map,
- vm_offset_t *address,
- vm_size_t size,
- vm_offset_t mask,
+ rpc_vm_offset_t *address,
+ rpc_vm_size_t size,
+ rpc_vm_offset_t mask,
boolean_t anywhere,
mach_port_name_t memory_object,
- vm_offset_t offset,
+ rpc_vm_offset_t offset,
boolean_t copy,
vm_prot_t cur_protection,
vm_prot_t max_protection,
@@ -607,12 +608,12 @@ syscall_vm_map(
} else
port = (ipc_port_t) memory_object;
- copyin(address, &addr, sizeof(vm_offset_t));
+ copyin_address(address, &addr);
result = vm_map(map, &addr, size, mask, anywhere,
port, offset, copy,
cur_protection, max_protection, inheritance);
if (result == KERN_SUCCESS)
- copyout(&addr, address, sizeof(vm_offset_t));
+ copyout_address(&addr, address);
if (IP_VALID(port))
ipc_port_release_send(port);
vm_map_deallocate(map);
@@ -621,9 +622,9 @@ syscall_vm_map(
}
kern_return_t syscall_vm_allocate(
- mach_port_name_t target_map,
- vm_offset_t *address,
- vm_size_t size,
+ mach_port_name_t target_map,
+ rpc_vm_offset_t *address,
+ rpc_vm_size_t size,
boolean_t anywhere)
{
vm_map_t map;
@@ -634,19 +635,19 @@ kern_return_t syscall_vm_allocate(
if (map == VM_MAP_NULL)
return MACH_SEND_INTERRUPTED;
- copyin(address, &addr, sizeof(vm_offset_t));
+ copyin_address(address, &addr);
result = vm_allocate(map, &addr, size, anywhere);
if (result == KERN_SUCCESS)
- copyout(&addr, address, sizeof(vm_offset_t));
+ copyout_address(&addr, address);
vm_map_deallocate(map);
return result;
}
kern_return_t syscall_vm_deallocate(
- mach_port_name_t target_map,
- vm_offset_t start,
- vm_size_t size)
+ mach_port_name_t target_map,
+ rpc_vm_offset_t start,
+ rpc_vm_size_t size)
{
vm_map_t map;
kern_return_t result;
@@ -682,7 +683,7 @@ kern_return_t syscall_task_create(
(void) ipc_kmsg_copyout_object(current_space(),
(ipc_object_t) port,
MACH_MSG_TYPE_PORT_SEND, &name);
- copyout(&name, child_task, sizeof(mach_port_name_t));
+ copyout_port(&name, child_task);
}
task_deallocate(t);
@@ -767,7 +768,9 @@ syscall_mach_port_allocate(
kr = mach_port_allocate(space, right, &name);
if (kr == KERN_SUCCESS)
- copyout(&name, namep, sizeof(mach_port_name_t));
+ {
+ copyout_port(&name, namep);
+ }
is_release(space);
return kr;
@@ -873,8 +876,8 @@ syscall_device_write_request(mach_port_name_t device_name,
mach_port_name_t reply_name,
dev_mode_t mode,
recnum_t recnum,
- vm_offset_t data,
- vm_size_t data_count)
+ rpc_vm_offset_t data,
+ rpc_vm_size_t data_count)
{
device_t dev;
/*ipc_port_t reply_port;*/
@@ -925,7 +928,7 @@ syscall_device_writev_request(mach_port_name_t device_name,
dev_mode_t mode,
recnum_t recnum,
io_buf_vec_t *iovec,
- vm_size_t iocount)
+ rpc_vm_size_t iocount)
{
device_t dev;
/*ipc_port_t reply_port;*/
diff --git a/kern/ipc_mig.h b/kern/ipc_mig.h
index e3ad6deb..c96a00da 100644
--- a/kern/ipc_mig.h
+++ b/kern/ipc_mig.h
@@ -65,12 +65,12 @@ extern mach_msg_return_t mach_msg_rpc_from_kernel(
extern kern_return_t syscall_vm_map(
mach_port_name_t target_map,
- vm_offset_t *address,
- vm_size_t size,
- vm_offset_t mask,
+ rpc_vm_offset_t *address,
+ rpc_vm_size_t size,
+ rpc_vm_offset_t mask,
boolean_t anywhere,
mach_port_name_t memory_object,
- vm_offset_t offset,
+ rpc_vm_offset_t offset,
boolean_t copy,
vm_prot_t cur_protection,
vm_prot_t max_protection,
@@ -78,19 +78,19 @@ extern kern_return_t syscall_vm_map(
extern kern_return_t syscall_vm_allocate(
mach_port_name_t target_map,
- vm_offset_t *address,
- vm_size_t size,
+ rpc_vm_offset_t *address,
+ rpc_vm_size_t size,
boolean_t anywhere);
extern kern_return_t syscall_vm_deallocate(
mach_port_name_t target_map,
- vm_offset_t start,
- vm_size_t size);
+ rpc_vm_offset_t start,
+ rpc_vm_size_t size);
extern kern_return_t syscall_task_create(
mach_port_name_t parent_task,
- boolean_t inherit_memory,
- mach_port_name_t *child_task);
+ boolean_t inherit_memory,
+ mach_port_name_t *child_task);
extern kern_return_t syscall_task_terminate(mach_port_name_t task);
@@ -126,10 +126,10 @@ extern kern_return_t syscall_thread_depress_abort(mach_port_name_t thread);
extern io_return_t syscall_device_write_request(
mach_port_name_t device_name,
mach_port_name_t reply_name,
- dev_mode_t mode,
- recnum_t recnum,
- vm_offset_t data,
- vm_size_t data_count);
+ dev_mode_t mode,
+ recnum_t recnum,
+ rpc_vm_offset_t data,
+ rpc_vm_size_t data_count);
io_return_t syscall_device_writev_request(
mach_port_name_t device_name,
@@ -137,7 +137,7 @@ io_return_t syscall_device_writev_request(
dev_mode_t mode,
recnum_t recnum,
io_buf_vec_t *iovec,
- vm_size_t iocount);
+ rpc_vm_size_t iocount);
mach_port_name_t mig_get_reply_port(void);