summaryrefslogtreecommitdiff
path: root/kern/ipc_kobject.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2013-02-04 10:27:44 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-02-04 10:27:44 +0100
commitba1b3afd50913473f3036a63b4a82d7ba5c42009 (patch)
tree9dff0ddec4bf8b927a025b4bf9882cb1731170f3 /kern/ipc_kobject.c
parentbfdb3be16e5a20eebc97b3ca613d9a4da4465533 (diff)
parent51e87d005139a435cd846ac5c224eed5042c4fa0 (diff)
Merge branch 'master' into master-gdb_stubs
Diffstat (limited to 'kern/ipc_kobject.c')
-rw-r--r--kern/ipc_kobject.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/kern/ipc_kobject.c b/kern/ipc_kobject.c
index 3d8775b4..37d4eb99 100644
--- a/kern/ipc_kobject.c
+++ b/kern/ipc_kobject.c
@@ -46,6 +46,7 @@
#include <ipc/ipc_port.h>
#include <ipc/ipc_thread.h>
#include <vm/vm_object.h>
+#include <vm/memory_object_proxy.h>
#include <device/ds_routines.h>
#if MACH_MACHINE_ROUTINES
@@ -150,7 +151,8 @@ ipc_kobject_server(request)
mach_host_server_routine(),
device_server_routine(),
device_pager_server_routine(),
- mach4_server_routine();
+ mach4_server_routine(),
+ gnumach_server_routine();
#if MACH_DEBUG
extern mig_routine_t mach_debug_server_routine();
#endif
@@ -169,20 +171,27 @@ ipc_kobject_server(request)
|| (routine = mach_debug_server_routine(&request->ikm_header)) != 0
#endif /* MACH_DEBUG */
|| (routine = mach4_server_routine(&request->ikm_header)) != 0
+ || (routine = gnumach_server_routine(&request->ikm_header)) != 0
#if MACH_MACHINE_ROUTINES
|| (routine = MACHINE_SERVER_ROUTINE(&request->ikm_header)) != 0
#endif /* MACH_MACHINE_ROUTINES */
) {
(*routine)(&request->ikm_header, &reply->ikm_header);
- }
- else if (!ipc_kobject_notify(&request->ikm_header,&reply->ikm_header)){
+ kernel_task->messages_received++;
+ } else {
+ if (!ipc_kobject_notify(&request->ikm_header,
+ &reply->ikm_header)) {
((mig_reply_header_t *) &reply->ikm_header)->RetCode
= MIG_BAD_ID;
#if MACH_IPC_TEST
printf("ipc_kobject_server: bogus kernel message, id=%d\n",
request->ikm_header.msgh_id);
#endif /* MACH_IPC_TEST */
+ } else {
+ kernel_task->messages_received++;
+ }
}
+ kernel_task->messages_sent++;
}
check_simple_locks();
@@ -318,7 +327,7 @@ ipc_kobject_destroy(
default:
#if MACH_ASSERT
- printf("ipc_kobject_destroy: port 0x%p, kobj 0x%x, type %d\n",
+ printf("ipc_kobject_destroy: port 0x%p, kobj 0x%lx, type %d\n",
port, port->ip_kobject, ip_kotype(port));
#endif /* MACH_ASSERT */
break;