diff options
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/ipc_init.c | 5 | ||||
-rw-r--r-- | ipc/ipc_kmsg.c | 75 | ||||
-rw-r--r-- | ipc/ipc_kmsg.h | 10 | ||||
-rw-r--r-- | ipc/ipc_mqueue.c | 65 | ||||
-rw-r--r-- | ipc/ipc_notify.c | 7 | ||||
-rw-r--r-- | ipc/ipc_port.c | 61 | ||||
-rw-r--r-- | ipc/ipc_port.h | 37 | ||||
-rw-r--r-- | ipc/ipc_space.c | 4 | ||||
-rw-r--r-- | ipc/ipc_space.h | 4 | ||||
-rw-r--r-- | ipc/mach_msg.c | 44 |
10 files changed, 0 insertions, 312 deletions
diff --git a/ipc/ipc_init.c b/ipc/ipc_init.c index e94705c..561e3a9 100644 --- a/ipc/ipc_init.c +++ b/ipc/ipc_init.c @@ -108,11 +108,6 @@ ipc_bootstrap(void) kr = ipc_space_create_special(&ipc_space_reply); assert(kr == KERN_SUCCESS); -#if NORMA_IPC - kr = ipc_space_create_special(&ipc_space_remote); - assert(kr == KERN_SUCCESS); -#endif /* NORMA_IPC */ - /* initialize modules with hidden data structures */ ipc_table_init(); diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c index 21a3ecf..44b5d82 100644 --- a/ipc/ipc_kmsg.c +++ b/ipc/ipc_kmsg.c @@ -36,8 +36,6 @@ #include <cpus.h> #include <mach_ipc_compat.h> -#include <norma_ipc.h> -#include <norma_vm.h> #include <mach/boolean.h> #include <mach/kern_return.h> @@ -468,12 +466,6 @@ ipc_kmsg_free(kmsg) vm_size_t size = kmsg->ikm_size; switch (size) { -#if NORMA_IPC - case IKM_SIZE_NORMA: - /* return it to the norma ipc code */ - norma_kmsg_put(kmsg); - break; -#endif /* NORMA_IPC */ case IKM_SIZE_NETWORK: /* return it to the network code */ @@ -1393,13 +1385,6 @@ ipc_kmsg_copyin_body(kmsg, space, map) use_page_lists = ipc_kobject_vm_page_list(ip_kotype((ipc_port_t)dest)); steal_pages = ipc_kobject_vm_page_steal(ip_kotype((ipc_port_t)dest)); -#if NORMA_IPC - if (IP_NORMA_IS_PROXY((ipc_port_t) dest)) { - use_page_lists = TRUE; - steal_pages = TRUE; - } -#endif /* NORMA_IPC */ - saddr = (vm_offset_t) (&kmsg->ikm_header + 1); eaddr = (vm_offset_t) &kmsg->ikm_header + kmsg->ikm_header.msgh_size; @@ -2701,53 +2686,6 @@ ipc_kmsg_copyout_dest(kmsg, space) } } -#if NORMA_IPC || NORMA_VM -/* - * Routine: ipc_kmsg_copyout_to_kernel - * Purpose: - * Copies out the destination and reply ports in the message. - * Leaves all other rights and memory in the message alone. - * Conditions: - * Nothing locked. - * - * Derived from ipc_kmsg_copyout_dest. - * Use by mach_msg_rpc_from_kernel (which used to use copyout_dest). - * We really do want to save rights and memory. - */ - -void -ipc_kmsg_copyout_to_kernel(kmsg, space) - ipc_kmsg_t kmsg; - ipc_space_t space; -{ - mach_msg_bits_t mbits = kmsg->ikm_header.msgh_bits; - ipc_object_t dest = (ipc_object_t) kmsg->ikm_header.msgh_remote_port; - ipc_object_t reply = (ipc_object_t) kmsg->ikm_header.msgh_local_port; - mach_msg_type_name_t dest_type = MACH_MSGH_BITS_REMOTE(mbits); - mach_msg_type_name_t reply_type = MACH_MSGH_BITS_LOCAL(mbits); - mach_port_t dest_name, reply_name; - - assert(IO_VALID(dest)); - - io_lock(dest); - if (io_active(dest)) { - ipc_object_copyout_dest(space, dest, dest_type, &dest_name); - /* dest is unlocked */ - } else { - io_release(dest); - io_check_unlock(dest); - dest_name = MACH_PORT_DEAD; - } - - reply_name = (mach_port_t) reply; - - kmsg->ikm_header.msgh_bits = (MACH_MSGH_BITS_OTHER(mbits) | - MACH_MSGH_BITS(reply_type, dest_type)); - kmsg->ikm_header.msgh_local_port = dest_name; - kmsg->ikm_header.msgh_remote_port = reply_name; -} -#endif /* NORMA_IPC || NORMA_VM */ - #if MACH_IPC_COMPAT /* @@ -2824,13 +2762,6 @@ ipc_kmsg_copyin_compat(kmsg, space, map) use_page_lists = ipc_kobject_vm_page_list(ip_kotype((ipc_port_t)dest)); steal_pages = ipc_kobject_vm_page_steal(ip_kotype((ipc_port_t)dest)); -#if NORMA_IPC - if (IP_NORMA_IS_PROXY((ipc_port_t) dest)) { - use_page_lists = TRUE; - steal_pages = TRUE; - } -#endif /* NORMA_IPC */ - saddr = (vm_offset_t) (&kmsg->ikm_header + 1); eaddr = (vm_offset_t) &kmsg->ikm_header + kmsg->ikm_header.msgh_size; @@ -3309,13 +3240,7 @@ ipc_kmsg_print(kmsg) kmsg->ikm_prev, kmsg->ikm_size, kmsg->ikm_marequest); -#if NORMA_IPC - db_printf(",page=0x%x,copy=0x%x\n", - kmsg->ikm_page, - kmsg->ikm_copy); -#else /* NORMA_IPC */ db_printf("\n"); -#endif /* NORMA_IPC */ ipc_msg_print(&kmsg->ikm_header); } diff --git a/ipc/ipc_kmsg.h b/ipc/ipc_kmsg.h index 2ec8c58..77e7c28 100644 --- a/ipc/ipc_kmsg.h +++ b/ipc/ipc_kmsg.h @@ -36,7 +36,6 @@ #include <cpus.h> #include <mach_ipc_compat.h> -#include <norma_ipc.h> #include <mach/machine/vm_types.h> #include <mach/message.h> @@ -45,10 +44,6 @@ #include <kern/macro_help.h> #include <kern/kalloc.h> #include <ipc/ipc_marequest.h> -#if NORMA_IPC -#include <vm/vm_page.h> -#include <vm/vm_map.h> -#endif /* NORMA_IPC */ /* * This structure is only the header for a kmsg buffer; @@ -66,11 +61,6 @@ typedef struct ipc_kmsg { struct ipc_kmsg *ikm_next, *ikm_prev; vm_size_t ikm_size; ipc_marequest_t ikm_marequest; -#if NORMA_IPC - vm_page_t ikm_page; - vm_map_copy_t ikm_copy; - unsigned long ikm_source_node; -#endif /* NORMA_IPC */ mach_msg_header_t ikm_header; } *ipc_kmsg_t; diff --git a/ipc/ipc_mqueue.c b/ipc/ipc_mqueue.c index 17af1ff..e0ebc86 100644 --- a/ipc/ipc_mqueue.c +++ b/ipc/ipc_mqueue.c @@ -34,8 +34,6 @@ * Functions to manipulate IPC message queues. */ -#include <norma_ipc.h> - #include <mach/port.h> #include <mach/message.h> #include <kern/assert.h> @@ -53,14 +51,6 @@ -#if NORMA_IPC -extern ipc_mqueue_t norma_ipc_handoff_mqueue; -extern ipc_kmsg_t norma_ipc_handoff_msg; -extern mach_msg_size_t norma_ipc_handoff_max_size; -extern mach_msg_size_t norma_ipc_handoff_msg_size; -extern ipc_kmsg_t norma_ipc_kmsg_accept(); -#endif /* NORMA_IPC */ - /* * Routine: ipc_mqueue_init * Purpose: @@ -212,16 +202,6 @@ ipc_mqueue_send(kmsg, option, time_out) return MACH_MSG_SUCCESS; } -#if NORMA_IPC - if (IP_NORMA_IS_PROXY(port)) { - mach_msg_return_t mr; - - mr = norma_ipc_send(kmsg); - ip_unlock(port); - return mr; - } -#endif /* NORMA_IPC */ - for (;;) { ipc_thread_t self; @@ -242,10 +222,6 @@ ipc_mqueue_send(kmsg, option, time_out) ip_release(port); ip_check_unlock(port); kmsg->ikm_header.msgh_remote_port = MACH_PORT_NULL; -#if NORMA_IPC - /* XXX until ipc_kmsg_destroy is fixed... */ - norma_ipc_finish_receiving(&kmsg); -#endif /* NORMA_IPC */ ipc_kmsg_destroy(kmsg); return MACH_MSG_SUCCESS; } @@ -329,10 +305,6 @@ ipc_mqueue_send(kmsg, option, time_out) /* don't allow the creation of a circular loop */ -#if NORMA_IPC - /* XXX until ipc_kmsg_destroy is fixed... */ - norma_ipc_finish_receiving(&kmsg); -#endif /* NORMA_IPC */ ipc_kmsg_destroy(kmsg); return MACH_MSG_SUCCESS; } @@ -370,16 +342,6 @@ ipc_mqueue_send(kmsg, option, time_out) /* check for a receiver for the message */ -#if NORMA_IPC - if (mqueue == norma_ipc_handoff_mqueue) { - norma_ipc_handoff_msg = kmsg; - if (kmsg->ikm_header.msgh_size <= norma_ipc_handoff_max_size) { - imq_unlock(mqueue); - return MACH_MSG_SUCCESS; - } - norma_ipc_handoff_msg_size = kmsg->ikm_header.msgh_size; - } -#endif /* NORMA_IPC */ for (;;) { receiver = ipc_thread_queue_first(receivers); if (receiver == ITH_NULL) { @@ -572,30 +534,6 @@ ipc_mqueue_receive( for (;;) { kmsg = ipc_kmsg_queue_first(kmsgs); -#if NORMA_IPC - /* - * It may be possible to make this work even when a timeout - * is specified. - * - * Netipc_replenish should be moved somewhere else. - */ - if (kmsg == IKM_NULL && ! (option & MACH_RCV_TIMEOUT)) { - netipc_replenish(FALSE); - *kmsgp = IKM_NULL; - kmsg = norma_ipc_kmsg_accept(mqueue, max_size, - (mach_msg_size_t *)kmsgp); - if (kmsg != IKM_NULL) { - port = (ipc_port_t) - kmsg->ikm_header.msgh_remote_port; - seqno = port->ip_seqno++; - break; - } - if (*kmsgp) { - imq_unlock(mqueue); - return MACH_RCV_TOO_LARGE; - } - } -#endif /* NORMA_IPC */ if (kmsg != IKM_NULL) { /* check space requirements */ @@ -745,9 +683,6 @@ ipc_mqueue_receive( ip_unlock(port); } -#if NORMA_IPC - norma_ipc_finish_receiving(&kmsg); -#endif /* NORMA_IPC */ *kmsgp = kmsg; *seqnop = seqno; return MACH_MSG_SUCCESS; diff --git a/ipc/ipc_notify.c b/ipc/ipc_notify.c index e789edf..d10ac99 100644 --- a/ipc/ipc_notify.c +++ b/ipc/ipc_notify.c @@ -382,13 +382,6 @@ ipc_notify_no_senders(port, mscount) ipc_kmsg_t kmsg; mach_no_senders_notification_t *n; -#if NORMA_IPC - if (ip_nsproxyp(port)) { - assert(mscount == 0); - norma_ipc_notify_no_senders(ip_nsproxy(port)); - return; - } -#endif /* NORMA_IPC */ kmsg = ikm_alloc(sizeof *n); if (kmsg == IKM_NULL) { printf("dropped no-senders (0x%08x, %u)\n", port, mscount); diff --git a/ipc/ipc_port.c b/ipc/ipc_port.c index 73009b1..262ab5e 100644 --- a/ipc/ipc_port.c +++ b/ipc/ipc_port.c @@ -49,9 +49,6 @@ #include <ipc/ipc_thread.h> #include <ipc/ipc_mqueue.h> #include <ipc/ipc_notify.h> -#if NORMA_IPC -#include <norma/ipc_node.h> -#endif /* NORMA_IPC */ @@ -492,24 +489,6 @@ ipc_port_init( port->ip_msgcount = 0; port->ip_qlimit = MACH_PORT_QLIMIT_DEFAULT; -#if NORMA_IPC - port->ip_norma_uid = 0; - port->ip_norma_dest_node = 0; - port->ip_norma_stransit = 0; - port->ip_norma_sotransit = 0; - port->ip_norma_xmm_object_refs = 0; - port->ip_norma_is_proxy = FALSE; - port->ip_norma_is_special = FALSE; - port->ip_norma_atrium = IP_NULL; - port->ip_norma_queue_next = port; - port->ip_norma_xmm_object = IP_NULL; - port->ip_norma_next = port; - port->ip_norma_spare1 = 0L; - port->ip_norma_spare2 = 0L; - port->ip_norma_spare3 = 0L; - port->ip_norma_spare4 = 0L; -#endif /* NORMA_IPC */ - ipc_mqueue_init(&port->ip_messages); ipc_thread_queue_init(&port->ip_blocked); } @@ -725,13 +704,6 @@ ipc_port_destroy( /* fall through and destroy the port */ } -#if NORMA_IPC - /* - * destroy any NORMA_IPC state associated with port - */ - norma_ipc_port_destroy(port); -#endif /* NORMA_IPC */ - /* * rouse all blocked senders * @@ -1240,14 +1212,6 @@ ipc_port_t ipc_port_alloc_special(space) ipc_space_t space; { -#if NORMA_IPC -#if i386 - int ret = (&ret)[2]; /* where we were called from */ -#else - int ret = (int) ipc_port_alloc_special; -#endif - extern int input_msgh_id; -#endif /* NORMA_IPC */ ipc_port_t port; port = (ipc_port_t) io_alloc(IOT_PORT); @@ -1271,10 +1235,6 @@ ipc_port_alloc_special(space) ipc_port_init(port, space, (mach_port_t)port); -#if NORMA_IPC - port->ip_norma_spare1 = ret; - port->ip_norma_spare2 = input_msgh_id; -#endif /* NORMA_IPC */ return port; } @@ -1518,27 +1478,6 @@ ipc_port_print(port) printf(", sndrs=0x%x", port->ip_blocked.ithq_base); printf(", kobj=0x%x\n", port->ip_kobject); -#if NORMA_IPC - iprintf("norma_uid=%x", port->ip_norma_uid); - printf(", dest_node=%d", port->ip_norma_dest_node); - printf(", stransit=%d", port->ip_norma_stransit); - printf(", xorefs=%d", port->ip_norma_xmm_object_refs); - printf(", sotransit=%d\n", port->ip_norma_sotransit); - - iprintf("norma_is_proxy=%d", port->ip_norma_is_proxy); - printf(", is_special=%d\n", port->ip_norma_is_special); - - iprintf("norma_atrium=0x%x", port->ip_norma_atrium); - printf(", queue_next=0x%x", port->ip_norma_queue_next); - printf(", xmm_object=0x%x", port->ip_norma_xmm_object); - printf(", next=0x%x\n", port->ip_norma_next); - - iprintf("norma_spare1=0x%x", port->ip_norma_spare1); - printf(", norma_spare2=0x%x", port->ip_norma_spare2); - printf(", norma_spare3=0x%x", port->ip_norma_spare3); - printf(", norma_spare4=0x%x\n", port->ip_norma_spare4); -#endif /* NORMA_IPC */ - indent -=2; } diff --git a/ipc/ipc_port.h b/ipc/ipc_port.h index 6b6fac0..6707268 100644 --- a/ipc/ipc_port.h +++ b/ipc/ipc_port.h @@ -40,7 +40,6 @@ #define _IPC_IPC_PORT_H_ #include <mach_ipc_compat.h> -#include <norma_ipc.h> #include <mach/boolean.h> #include <mach/kern_return.h> @@ -99,24 +98,6 @@ struct ipc_port { mach_port_msgcount_t ip_msgcount; mach_port_msgcount_t ip_qlimit; struct ipc_thread_queue ip_blocked; - -#if NORMA_IPC - unsigned long ip_norma_uid; - unsigned long ip_norma_dest_node; - long ip_norma_stransit; - long ip_norma_sotransit; - long ip_norma_xmm_object_refs; - boolean_t ip_norma_is_proxy; - boolean_t ip_norma_is_special; - struct ipc_port *ip_norma_atrium; - struct ipc_port *ip_norma_queue_next; - struct ipc_port *ip_norma_xmm_object; - struct ipc_port *ip_norma_next; - long ip_norma_spare1; - long ip_norma_spare2; - long ip_norma_spare3; - long ip_norma_spare4; -#endif /* NORMA_IPC */ }; #define ip_object ip_target.ipt_object @@ -386,22 +367,4 @@ ipc_port_copyout_receiver(/* ipc_port_t, ipc_space_t */); extern void ipc_port_print(/* ipc_port_t */); -#if NORMA_IPC - -#define IP_NORMA_IS_PROXY(port) ((port)->ip_norma_is_proxy) - -/* - * A proxy never has a real nsrequest, but is always has a fake - * nsrequest so that the norma ipc system is notified when there - * are no send rights for a proxy. A fake nsrequest is indicated by - * the low bit of the pointer. This works because the zone package - * guarantees that the two low bits of port pointers are zero. - */ - -#define ip_nsproxyp(nsrequest) ((unsigned int)(nsrequest) & 1) -#define ip_nsproxy(nsrequest) ((ipc_port_t)((unsigned int)(nsrequest) &~ 1)) -#define ip_nsproxym(proxy) ((ipc_port_t)((unsigned int)(proxy) | 1)) - -#endif /* NORMA_IPC */ - #endif /* _IPC_IPC_PORT_H_ */ diff --git a/ipc/ipc_space.c b/ipc/ipc_space.c index cd40b58..bbe8a2f 100644 --- a/ipc/ipc_space.c +++ b/ipc/ipc_space.c @@ -37,7 +37,6 @@ */ #include <mach_ipc_compat.h> -#include <norma_ipc.h> #include <mach/boolean.h> #include <mach/kern_return.h> @@ -59,9 +58,6 @@ zone_t ipc_space_zone; ipc_space_t ipc_space_kernel; ipc_space_t ipc_space_reply; -#if NORMA_IPC -ipc_space_t ipc_space_remote; -#endif /* NORMA_IPC */ /* * Routine: ipc_space_reference diff --git a/ipc/ipc_space.h b/ipc/ipc_space.h index e242911..14f2404 100644 --- a/ipc/ipc_space.h +++ b/ipc/ipc_space.h @@ -40,7 +40,6 @@ #define _IPC_IPC_SPACE_H_ #include <mach_ipc_compat.h> -#include <norma_ipc.h> #include <mach/boolean.h> #include <mach/kern_return.h> @@ -94,9 +93,6 @@ extern zone_t ipc_space_zone; extern struct ipc_space *ipc_space_kernel; extern struct ipc_space *ipc_space_reply; -#if NORMA_IPC -extern struct ipc_space *ipc_space_remote; -#endif /* NORMA_IPC */ #define is_ref_lock_init(is) simple_lock_init(&(is)->is_ref_lock_data) diff --git a/ipc/mach_msg.c b/ipc/mach_msg.c index ab132af..2ae250c 100644 --- a/ipc/mach_msg.c +++ b/ipc/mach_msg.c @@ -37,7 +37,6 @@ */ #include <mach_ipc_compat.h> -#include <norma_ipc.h> #include <mach/kern_return.h> #include <mach/port.h> @@ -635,14 +634,6 @@ mach_msg_trap(msg, option, send_size, rcv_size, rcv_name, time_out, notify) goto kernel_send; } -#if NORMA_IPC - if (IP_NORMA_IS_PROXY(dest_port)) { - ip_unlock(dest_port); - ip_unlock(reply_port); - goto norma_send; - } -#endif /* NORMA_IPC */ - if (dest_port->ip_msgcount >= dest_port->ip_qlimit) goto abort_request_send_receive; @@ -754,13 +745,6 @@ mach_msg_trap(msg, option, send_size, rcv_size, rcv_name, time_out, notify) /* make sure we can queue to the destination */ assert(dest_port->ip_receiver != ipc_space_kernel); -#if NORMA_IPC - if (IP_NORMA_IS_PROXY(dest_port)) { - is_write_unlock(space); - ip_unlock(dest_port); - goto norma_send; - } -#endif /* NORMA_IPC */ /* optimized ipc_entry_lookup/ipc_mqueue_copyin */ @@ -859,9 +843,6 @@ mach_msg_trap(msg, option, send_size, rcv_size, rcv_name, time_out, notify) assert(ip_active(dest_port)); assert(dest_port->ip_receiver != ipc_space_kernel); -#if NORMA_IPC - assert(! IP_NORMA_IS_PROXY(dest_port)); -#endif /* NORMA_IPC */ assert((dest_port->ip_msgcount < dest_port->ip_qlimit) || (MACH_MSGH_BITS_REMOTE(kmsg->ikm_header.msgh_bits) == MACH_MSG_TYPE_PORT_SEND_ONCE)); @@ -1341,9 +1322,6 @@ mach_msg_trap(msg, option, send_size, rcv_size, rcv_name, time_out, notify) } if (ip_active(dest_port) && -#if NORMA_IPC - (! IP_NORMA_IS_PROXY(dest_port)) && -#endif /* NORMA_IPC */ ((dest_port->ip_msgcount < dest_port->ip_qlimit) || (MACH_MSGH_BITS_REMOTE(kmsg->ikm_header.msgh_bits) == MACH_MSG_TYPE_PORT_SEND_ONCE))) @@ -1380,28 +1358,6 @@ mach_msg_trap(msg, option, send_size, rcv_size, rcv_name, time_out, notify) ip_unlock(dest_port); goto slow_send; -#if NORMA_IPC - norma_send: - /* - * Nothing is locked. We have acquired kmsg, but - * we still need to send it and receive a reply. - */ - - mr = norma_ipc_send(kmsg); - if (mr != MACH_MSG_SUCCESS) { - mr |= ipc_kmsg_copyout_pseudo(kmsg, space, - current_map()); - - assert(kmsg->ikm_marequest == IMAR_NULL); - (void) ipc_kmsg_put(msg, kmsg, - kmsg->ikm_header.msgh_size); - thread_syscall_return(mr); - /*NOTREACHED*/ - } - - goto slow_get_rcv_port; -#endif /* NORMA_IPC */ - kernel_send: /* * Special case: send message to kernel services. |