void ipc_mqueue_init( ipc_mqueue_t mqueue) { imq_lock_init(mqueue); ipc_kmsg_queue_init(&mqueue->imq_messages); ipc_thread_queue_init(&mqueue->imq_threads); }
/* * Routine: ipc_mqueue_init * Purpose: * Initialize a newly-allocated message queue. */ void ipc_mqueue_init( ipc_mqueue_t mqueue, boolean_t is_set) { if (is_set) { wait_queue_set_init(&mqueue->imq_set_queue, SYNC_POLICY_FIFO|SYNC_POLICY_PREPOST); } else { wait_queue_init(&mqueue->imq_wait_queue, SYNC_POLICY_FIFO); ipc_kmsg_queue_init(&mqueue->imq_messages); mqueue->imq_seqno = 0; mqueue->imq_msgcount = 0; mqueue->imq_qlimit = MACH_PORT_QLIMIT_DEFAULT; mqueue->imq_fullwaiters = FALSE; } }
void ipc_thread_init(thread_t thread) { ipc_port_t kport; kport = ipc_port_alloc_kernel(); if (kport == IP_NULL) panic("ipc_thread_init"); ipc_thread_links_init(thread); ipc_kmsg_queue_init(&thread->ith_messages); ith_lock_init(thread); thread->ith_self = kport; thread->ith_sself = ipc_port_make_send(kport); thread->ith_exception = IP_NULL; thread->ith_mig_reply = MACH_PORT_NULL; thread->ith_rpc_reply = IP_NULL; }
void ipc_thread_init( thread_t thread) { ipc_port_t kport; int i; kport = ipc_port_alloc_kernel(); if (kport == IP_NULL) panic("ipc_thread_init"); thread->ith_self = kport; thread->ith_sself = ipc_port_make_send(kport); for (i = FIRST_EXCEPTION; i < EXC_TYPES_COUNT; ++i) thread->exc_actions[i].port = IP_NULL; ipc_kobject_set(kport, (ipc_kobject_t)thread, IKOT_THREAD); ipc_kmsg_queue_init(&thread->ith_messages); thread->ith_rpc_reply = IP_NULL; }
void ipc_thread_init( thread_t thread) { ipc_port_t kport; kport = ipc_port_alloc_kernel(); if (kport == IP_NULL) panic("ipc_thread_init"); thread->ith_self = kport; thread->ith_sself = ipc_port_make_send(kport); thread->exc_actions = NULL; ipc_kobject_set(kport, (ipc_kobject_t)thread, IKOT_THREAD); #if IMPORTANCE_INHERITANCE thread->ith_assertions = 0; #endif ipc_kmsg_queue_init(&thread->ith_messages); thread->ith_rpc_reply = IP_NULL; }