• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/xnu-2782.1.97/osfmk/ipc/

Lines Matching defs:kmsg

180 			ipc_kmsg_t      kmsg,
296 ipc_kmsg_t kmsg,
299 kprintf("%s kmsg=%p:\n", str, kmsg);
301 kmsg->ikm_next,
302 kmsg->ikm_prev,
303 kmsg->ikm_size);
305 ipc_msg_print64(kmsg->ikm_header);
477 #define DEBUG_IPC_KMSG_PRINT(kmsg,string) \
480 ipc_kmsg_print64(kmsg, string); \
491 #define DEBUG_IPC_KMSG_PRINT(kmsg,string)
549 ipc_kmsg_t kmsg);
552 ipc_kmsg_t kmsg,
557 ipc_kmsg_t kmsg,
564 ipc_kmsg_t kmsg,
589 ipc_kmsg_t kmsg;
634 kmsg = cache->entries[--i];
637 ikm_check_init(kmsg, max_expanded_size);
638 ikm_set_header(kmsg, msg_and_trailer_size);
639 return (kmsg);
642 kmsg = (ipc_kmsg_t)zalloc(ipc_kmsg_zone);
644 kmsg = (ipc_kmsg_t)kalloc(ikm_plus_overhead(max_expanded_size));
647 if (kmsg != IKM_NULL) {
648 ikm_init(kmsg, max_expanded_size);
649 ikm_set_header(kmsg, msg_and_trailer_size);
652 return(kmsg);
669 ipc_kmsg_t kmsg)
671 mach_msg_size_t size = kmsg->ikm_size;
674 assert(!IP_VALID(kmsg->ikm_voucher));
677 VM_KERNEL_ADDRPERM((uintptr_t)kmsg),
685 port = ikm_prealloc_inuse_port(kmsg);
688 ikm_prealloc_clear_inuse(kmsg, port);
689 if (ip_active(port) && (port->ip_premsg == kmsg)) {
702 if (kmsg->ikm_size == IKM_SAVED_MSG_SIZE) {
709 cache->entries[i] = kmsg;
715 zfree(ipc_kmsg_zone, kmsg);
718 kfree(kmsg, ikm_plus_overhead(size));
725 * Enqueue a kmsg.
731 ipc_kmsg_t kmsg)
733 ipc_kmsg_enqueue_macro(queue, kmsg);
739 * Dequeue and return a kmsg.
759 * Pull a kmsg out of a queue.
765 ipc_kmsg_t kmsg)
771 next = kmsg->ikm_next;
772 prev = kmsg->ikm_prev;
774 if (next == kmsg) {
775 assert(prev == kmsg);
776 assert(queue->ikmq_base == kmsg);
780 if (queue->ikmq_base == kmsg)
787 assert((kmsg->ikm_next = IKM_BOGUS) == IKM_BOGUS);
788 assert((kmsg->ikm_prev = IKM_BOGUS) == IKM_BOGUS);
794 * Return the kmsg following the given kmsg.
801 ipc_kmsg_t kmsg)
807 next = kmsg->ikm_next;
826 ipc_kmsg_t kmsg)
834 if (ipc_kmsg_delayed_destroy(kmsg))
848 ipc_kmsg_t kmsg)
853 ipc_kmsg_enqueue(queue, kmsg);
870 ipc_kmsg_t kmsg;
873 * must leave kmsg in queue while cleaning it to assure
876 while ((kmsg = ipc_kmsg_queue_first(queue)) != IKM_NULL) {
877 ipc_kmsg_clean(kmsg);
878 ipc_kmsg_rmqueue(queue, kmsg);
879 ipc_kmsg_free(kmsg);
895 __unused ipc_kmsg_t kmsg,
992 ipc_kmsg_t kmsg,
999 mach_msg_bits_t mbits = kmsg->ikm_header->msgh_bits;
1002 ipc_importance_clean(kmsg);
1004 object = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
1008 object = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
1012 object = (ipc_object_t) kmsg->ikm_voucher;
1016 kmsg->ikm_voucher = IP_NULL;
1023 ipc_kmsg_clean_body(kmsg, number, desc);
1037 ipc_kmsg_t kmsg)
1043 ipc_importance_clean(kmsg);
1045 mbits = kmsg->ikm_header->msgh_bits;
1046 object = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
1050 object = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
1054 object = (ipc_object_t) kmsg->ikm_voucher;
1058 kmsg->ikm_voucher = IP_NULL;
1064 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
1065 ipc_kmsg_clean_body(kmsg, body->msgh_descriptor_count,
1073 * Assign a kmsg as a preallocated message buffer to a port.
1080 ipc_kmsg_t kmsg,
1083 assert(kmsg->ikm_prealloc == IP_NULL);
1085 kmsg->ikm_prealloc = IP_NULL;
1086 IP_SET_PREALLOC(port, kmsg);
1098 ipc_kmsg_t kmsg,
1101 assert(kmsg->ikm_prealloc == port);
1103 kmsg->ikm_prealloc = IP_NULL;
1104 IP_CLEAR_PREALLOC(port, kmsg);
1149 ipc_kmsg_t kmsg;
1184 kmsg = ipc_kmsg_alloc(msg_and_trailer_size);
1185 if (kmsg == IKM_NULL)
1188 kmsg->ikm_header->msgh_size = size;
1189 kmsg->ikm_header->msgh_bits = legacy_base.header.msgh_bits;
1190 kmsg->ikm_header->msgh_remote_port = CAST_MACH_NAME_TO_PORT(legacy_base.header.msgh_remote_port);
1191 kmsg->ikm_header->msgh_local_port = CAST_MACH_NAME_TO_PORT(legacy_base.header.msgh_local_port);
1192 kmsg->ikm_header->msgh_voucher_port = legacy_base.header.msgh_voucher_port;
1193 kmsg->ikm_header->msgh_id = legacy_base.header.msgh_id;
1202 kmsg->ikm_header->msgh_size,
1203 kmsg->ikm_header->msgh_bits,
1204 kmsg->ikm_header->msgh_remote_port,
1205 kmsg->ikm_header->msgh_local_port,
1206 kmsg->ikm_header->msgh_voucher_port,
1207 kmsg->ikm_header->msgh_id);
1209 if (copyinmsg(msg_addr, (char *)(kmsg->ikm_header + 1), size - (mach_msg_size_t)sizeof(mach_msg_header_t))) {
1210 ipc_kmsg_free(kmsg);
1222 kprintf("%.4x\n",((uint32_t *)(kmsg->ikm_header + 1))[i]);
1226 DEBUG_IPC_KMSG_PRINT(kmsg, "ipc_kmsg_get()");
1234 trailer = (mach_msg_max_trailer_t *) ((vm_offset_t)kmsg->ikm_header + size);
1241 if(trcWork.traceMask) dbgTrace(0x1100, (unsigned int)kmsg->ikm_header->msgh_id,
1242 (unsigned int)kmsg->ikm_header->msgh_remote_port,
1243 (unsigned int)kmsg->ikm_header->msgh_local_port, 0);
1247 *kmsgp = kmsg;
1273 ipc_kmsg_t kmsg;
1286 * See if the port has a pre-allocated kmsg for kernel
1299 kmsg = dest_port->ip_premsg;
1300 if (ikm_prealloc_inuse(kmsg)) {
1311 if (msg_and_trailer_size > kmsg->ikm_size - max_desc) {
1315 ikm_prealloc_set_inuse(kmsg, dest_port);
1316 ikm_set_header(kmsg, msg_and_trailer_size);
1321 kmsg = ipc_kmsg_alloc(msg_and_trailer_size);
1322 if (kmsg == IKM_NULL)
1326 (void) memcpy((void *) kmsg->ikm_header, (const void *) msg, size);
1328 kmsg->ikm_header->msgh_size = size;
1337 ((vm_offset_t)kmsg->ikm_header + size);
1345 *kmsgp = kmsg;
1371 ipc_kmsg_t kmsg,
1388 if (kmsg->ikm_header->msgh_bits & MACH_MSGH_BITS_CIRCULAR) {
1389 ipc_kmsg_destroy(kmsg);
1393 port = (ipc_port_t) kmsg->ikm_header->msgh_remote_port;
1408 kmsg->ikm_header->msgh_remote_port = MACH_PORT_NULL;
1409 ipc_kmsg_destroy(kmsg);
1430 kmsg = ipc_kobject_server(kmsg);
1431 if (kmsg == IKM_NULL)
1434 port = (ipc_port_t) kmsg->ikm_header->msgh_remote_port;
1448 if (ipc_importance_send(kmsg, option))
1462 error = ipc_mqueue_send(&port->ip_messages, kmsg, option,
1474 * We still have the kmsg and its
1489 ipc_importance_clean(kmsg);
1509 kmsg->ikm_header->msgh_remote_port = MACH_PORT_NULL;
1510 ipc_kmsg_destroy(kmsg);
1533 ipc_kmsg_t kmsg,
1538 DEBUG_IPC_KMSG_PRINT(kmsg, "ipc_kmsg_put()");
1548 kmsg->ikm_header->msgh_size,
1549 kmsg->ikm_header->msgh_bits,
1550 kmsg->ikm_header->msgh_remote_port,
1551 kmsg->ikm_header->msgh_local_port,
1552 kmsg->ikm_header->msgh_voucher_port,
1553 kmsg->ikm_header->msgh_id);
1558 (mach_msg_legacy_header_t *)((vm_offset_t)(kmsg->ikm_header) + LEGACY_HEADER_SIZE_DELTA);
1560 mach_msg_bits_t bits = kmsg->ikm_header->msgh_bits;
1561 mach_msg_size_t msg_size = kmsg->ikm_header->msgh_size;
1562 mach_port_name_t remote_port = CAST_MACH_PORT_TO_NAME(kmsg->ikm_header->msgh_remote_port);
1563 mach_port_name_t local_port = CAST_MACH_PORT_TO_NAME(kmsg->ikm_header->msgh_local_port);
1564 mach_port_name_t voucher_port = kmsg->ikm_header->msgh_voucher_port;
1565 mach_msg_id_t id = kmsg->ikm_header->msgh_id;
1575 kmsg->ikm_header = (mach_msg_header_t *)legacy_header;
1586 kprintf("%.4x\n",((uint32_t *)kmsg->ikm_header)[i]);
1588 kprintf("type: %d\n", ((mach_msg_type_descriptor_t *)(((mach_msg_base_t *)kmsg->ikm_header)+1))->type);
1591 if (copyoutmsg((const char *) kmsg->ikm_header, msg_addr, size))
1596 ipc_kmsg_free(kmsg);
1613 ipc_kmsg_t kmsg,
1616 (void) memcpy((void *) msg, (const void *) kmsg->ikm_header, size);
1618 ipc_kmsg_free(kmsg);
1647 ipc_kmsg_t kmsg,
1651 mach_msg_header_t *msg = kmsg->ikm_header;
1999 * so we store it back in the kmsg itself.
2003 kmsg->ikm_voucher = voucher_port;
2129 ipc_kmsg_t kmsg,
2140 ipc_kmsg_t kmsg,
2164 kmsg->ikm_header->msgh_bits |= MACH_MSGH_BITS_CIRCULAR;
2298 ipc_kmsg_t kmsg,
2308 ipc_kmsg_t kmsg,
2424 kmsg->ikm_header->msgh_bits |= MACH_MSGH_BITS_CIRCULAR;
2456 ipc_kmsg_t kmsg,
2478 dest = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
2479 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
2517 ((vm_offset_t)kmsg->ikm_header + kmsg->ikm_header->msgh_size)) {
2518 ipc_kmsg_clean_partial(kmsg, 0, NULL, 0, 0);
2535 ipc_kmsg_clean_partial(kmsg, 0, NULL, 0, 0);
2550 ipc_kmsg_clean_partial(kmsg, 0, NULL, 0, 0);
2561 ipc_kmsg_clean_partial(kmsg, 0, NULL, 0, 0);
2577 ipc_kmsg_clean_partial(kmsg, 0, NULL, 0, 0);
2584 user_addr = (mach_msg_descriptor_t *)((vm_offset_t)kmsg->ikm_header + sizeof(mach_msg_base_t));
2590 memmove((char *)(((vm_offset_t)kmsg->ikm_header) - dsc_adjust), kmsg->ikm_header, sizeof(mach_msg_base_t));
2591 kmsg->ikm_header = (mach_msg_header_t *)((vm_offset_t)kmsg->ikm_header - dsc_adjust);
2594 kmsg->ikm_header->msgh_size += (mach_msg_size_t)dsc_adjust;
2599 kern_addr = (mach_msg_descriptor_t *)((vm_offset_t)kmsg->ikm_header + sizeof(mach_msg_base_t));
2606 (mach_msg_legacy_port_descriptor_t *)user_addr, space, dest, kmsg, &mr);
2619 user_addr, is_task_64bit, map, space, dest, kmsg, &mr);
2631 ipc_kmsg_clean_partial(kmsg, i,
2632 (mach_msg_descriptor_t *)((mach_msg_base_t *)kmsg->ikm_header + 1),
2639 kmsg->ikm_header->msgh_bits &= ~MACH_MSGH_BITS_COMPLEX;
2672 ipc_kmsg_t kmsg,
2679 kmsg->ikm_header->msgh_bits &= MACH_MSGH_BITS_USER;
2681 mr = ipc_kmsg_copyin_header(kmsg, space, optionp);
2687 VM_KERNEL_ADDRPERM((uintptr_t)kmsg),
2688 (uintptr_t)kmsg->ikm_header->msgh_bits,
2689 (uintptr_t)kmsg->ikm_header->msgh_id,
2690 VM_KERNEL_ADDRPERM((uintptr_t)unsafe_convert_port_to_voucher(kmsg->ikm_voucher)),
2694 kmsg->ikm_header->msgh_size,
2695 kmsg->ikm_header->msgh_bits,
2696 kmsg->ikm_header->msgh_remote_port,
2697 kmsg->ikm_header->msgh_local_port,
2698 kmsg->ikm_voucher,
2699 kmsg->ikm_header->msgh_id);
2701 if ((kmsg->ikm_header->msgh_bits & MACH_MSGH_BITS_COMPLEX) == 0)
2704 mr = ipc_kmsg_copyin_body( kmsg, space, map);
2712 for(i=0;i*4 < (kmsg->ikm_header->msgh_size - sizeof(mach_msg_header_t));i++)
2714 kprintf("%.4x\n",((uint32_t *)(kmsg->ikm_header + 1))[i]);
2737 ipc_kmsg_t kmsg)
2739 mach_msg_bits_t bits = kmsg->ikm_header->msgh_bits;
2742 ipc_object_t remote = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
2743 ipc_object_t local = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
2763 kmsg->ikm_header->msgh_bits = bits;
2769 kmsg->ikm_header->msgh_bits = bits;
2778 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
2813 kmsg->ikm_header->msgh_bits |=
2853 kmsg->ikm_header->msgh_bits |= MACH_MSGH_BITS_CIRCULAR;
2871 ipc_kmsg_t kmsg)
2873 mach_msg_bits_t bits = kmsg->ikm_header->msgh_bits;
2876 ipc_object_t remote = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
2877 ipc_object_t local = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
2897 kmsg->ikm_header->msgh_bits = bits;
2903 kmsg->ikm_header->msgh_bits = bits;
2913 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
2919 memmove((char *)(((vm_offset_t)kmsg->ikm_header) - dsc_adjust), kmsg->ikm_header, sizeof(mach_msg_base_t));
2920 kmsg->ikm_header = (mach_msg_header_t *)((vm_offset_t)kmsg->ikm_header - dsc_adjust);
2922 kmsg->ikm_header->msgh_size += dsc_adjust;
2924 daddr = (mach_msg_descriptor_t *)((vm_offset_t)kmsg->ikm_header + sizeof(mach_msg_base_t));
2960 kmsg->ikm_header->msgh_bits |=
3019 kmsg->ikm_header->msgh_bits |= MACH_MSGH_BITS_CIRCULAR;
3070 ipc_kmsg_t kmsg,
3074 mach_msg_header_t *msg = kmsg->ikm_header;
3095 ipc_port_t voucher = kmsg->ikm_voucher;
3194 /* clear voucher from its hiding place back in the kmsg */
3195 kmsg->ikm_voucher = IP_NULL;
3352 VM_KERNEL_ADDRPERM((uintptr_t)kmsg),
3353 (uintptr_t)kmsg->ikm_header->msgh_bits,
3354 (uintptr_t)kmsg->ikm_header->msgh_id,
3359 VM_KERNEL_ADDRPERM((uintptr_t)kmsg),
3360 (uintptr_t)kmsg->ikm_header->msgh_bits,
3361 (uintptr_t)kmsg->ikm_header->msgh_id,
3604 ipc_kmsg_t kmsg,
3612 ipc_kmsg_t kmsg,
3666 ipc_kmsg_clean_body(kmsg, 1, (mach_msg_descriptor_t *)dsc);
3772 ipc_kmsg_t kmsg,
3785 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
3816 (mach_msg_ool_ports_descriptor_t *)&kern_dsc[i], user_dsc, is_task_64bit, map, space, kmsg, &mr);
3826 memmove((char *)((vm_offset_t)kmsg->ikm_header + dsc_adjust), kmsg->ikm_header, sizeof(mach_msg_base_t));
3827 kmsg->ikm_header = (mach_msg_header_t *)((vm_offset_t)kmsg->ikm_header + dsc_adjust);
3829 kmsg->ikm_header->msgh_size -= (mach_msg_size_t)dsc_adjust;
3850 ipc_kmsg_t kmsg,
3855 send_size = kmsg->ikm_header->msgh_size;
3863 if (kmsg->ikm_header->msgh_bits & MACH_MSGH_BITS_COMPLEX) {
3868 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
3909 ipc_kmsg_t kmsg,
3917 mr = ipc_kmsg_copyout_header(kmsg, space, option);
3922 if (kmsg->ikm_header->msgh_bits & MACH_MSGH_BITS_COMPLEX) {
3923 mr = ipc_kmsg_copyout_body(kmsg, space, map, slist);
3954 ipc_kmsg_t kmsg,
3959 mach_msg_bits_t mbits = kmsg->ikm_header->msgh_bits;
3960 ipc_object_t dest = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
3961 ipc_object_t reply = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
3962 ipc_object_t voucher = (ipc_object_t) kmsg->ikm_voucher;
3966 mach_port_name_t voucher_name = kmsg->ikm_header->msgh_voucher_port;
3978 ipc_importance_clean(kmsg);
3981 ipc_importance_assert_clean(kmsg);
3987 kmsg->ikm_header->msgh_bits = mbits & MACH_MSGH_BITS_USER;
3988 kmsg->ikm_header->msgh_remote_port = CAST_MACH_NAME_TO_PORT(dest_name);
3989 kmsg->ikm_header->msgh_local_port = CAST_MACH_NAME_TO_PORT(reply_name);
3994 kmsg->ikm_voucher = IP_NULL;
3996 kmsg->ikm_header->msgh_voucher_port = voucher_name;
4000 mr |= ipc_kmsg_copyout_body(kmsg, space, map, slist);
4017 ipc_kmsg_t kmsg,
4029 mbits = kmsg->ikm_header->msgh_bits;
4030 dest = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
4031 reply = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
4032 voucher = (ipc_object_t) kmsg->ikm_voucher;
4033 voucher_name = kmsg->ikm_header->msgh_voucher_port;
4040 ipc_importance_assert_clean(kmsg);
4061 kmsg->ikm_voucher = IP_NULL;
4066 kmsg->ikm_header->msgh_bits = MACH_MSGH_BITS_SET(reply_type, dest_type,
4068 kmsg->ikm_header->msgh_local_port = CAST_MACH_NAME_TO_PORT(dest_name);
4069 kmsg->ikm_header->msgh_remote_port = CAST_MACH_NAME_TO_PORT(reply_name);
4070 kmsg->ikm_header->msgh_voucher_port = voucher_name;
4075 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
4076 ipc_kmsg_clean_body(kmsg, body->msgh_descriptor_count,
4086 * The gather (kmsg) is valid since it has been copied in.
4109 ipc_kmsg_t kmsg)
4139 body = (mach_msg_body_t *) (kmsg->ikm_header + 1);
4253 ipc_kmsg_t kmsg,
4262 dest = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
4263 reply = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
4264 dest_type = MACH_MSGH_BITS_REMOTE(kmsg->ikm_header->msgh_bits);
4265 reply_type = MACH_MSGH_BITS_LOCAL(kmsg->ikm_header->msgh_bits);
4281 kmsg->ikm_header->msgh_bits =
4282 (MACH_MSGH_BITS_OTHER(kmsg->ikm_header->msgh_bits) |
4284 kmsg->ikm_header->msgh_local_port = CAST_MACH_NAME_TO_PORT(dest_name);
4285 kmsg->ikm_header->msgh_remote_port = CAST_MACH_NAME_TO_PORT(reply_name);
4291 ipc_kmsg_t kmsg,
4300 dest = (ipc_object_t) kmsg->ikm_header->msgh_remote_port;
4301 reply = (ipc_object_t) kmsg->ikm_header->msgh_local_port;
4302 dest_type = MACH_MSGH_BITS_REMOTE(kmsg->ikm_header->msgh_bits);
4303 reply_type = MACH_MSGH_BITS_LOCAL(kmsg->ikm_header->msgh_bits);
4319 kmsg->ikm_header->msgh_bits =
4320 (MACH_MSGH_BITS_OTHER(kmsg->ikm_header->msgh_bits) |
4322 kmsg->ikm_header->msgh_local_port = CAST_MACH_NAME_TO_PORT(dest_name);
4323 kmsg->ikm_header->msgh_remote_port = CAST_MACH_NAME_TO_PORT(reply_name);
4327 mach_msg_type_number_t i, count = ((mach_msg_base_t *)kmsg->ikm_header)->body.msgh_descriptor_count;
4328 saddr = (mach_msg_descriptor_t *) (((mach_msg_base_t *)kmsg->ikm_header) + 1);
4399 memmove((char *)((vm_offset_t)kmsg->ikm_header + dsc_adjust), kmsg->ikm_header, sizeof(mach_msg_base_t));
4400 kmsg->ikm_header = (mach_msg_header_t *)((vm_offset_t)kmsg->ikm_header + dsc_adjust);
4402 kmsg->ikm_header->msgh_size -= dsc_adjust;
4409 ipc_kmsg_add_trailer(ipc_kmsg_t kmsg, ipc_space_t space __unused,
4418 ((vm_offset_t)kmsg->ikm_header +
4419 round_msg(kmsg->ikm_header->msgh_size));