nxt_port_memory.c (196:7d6a0c9b661e) nxt_port_memory.c (197:ae8f843e1fd4)
1
2/*
3 * Copyright (C) Max Romanov
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 554 unchanged lines hidden (view full) ---

563}
564
565
566void
567nxt_port_mmap_write(nxt_task_t *task, nxt_port_t *port,
568 nxt_port_send_msg_t *msg, nxt_sendbuf_coalesce_t *sb)
569{
570 size_t bsize;
1
2/*
3 * Copyright (C) Max Romanov
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 554 unchanged lines hidden (view full) ---

563}
564
565
566void
567nxt_port_mmap_write(nxt_task_t *task, nxt_port_t *port,
568 nxt_port_send_msg_t *msg, nxt_sendbuf_coalesce_t *sb)
569{
570 size_t bsize;
571 nxt_buf_t *b, *bmem;
571 nxt_buf_t *bmem;
572 nxt_uint_t i;
573 nxt_port_mmap_msg_t *mmap_msg;
574 nxt_port_mmap_header_t *hdr;
575
576 nxt_debug(task, "prepare %z bytes message for transfer to process %PI "
577 "via shared memory", sb->size, port->pid);
578
579 bsize = sb->niov * sizeof(nxt_port_mmap_msg_t);
572 nxt_uint_t i;
573 nxt_port_mmap_msg_t *mmap_msg;
574 nxt_port_mmap_header_t *hdr;
575
576 nxt_debug(task, "prepare %z bytes message for transfer to process %PI "
577 "via shared memory", sb->size, port->pid);
578
579 bsize = sb->niov * sizeof(nxt_port_mmap_msg_t);
580 mmap_msg = port->mmsg_buf;
580
581
581 b = nxt_buf_mem_ts_alloc(task, port->mem_pool, bsize);
582 if (nxt_slow_path(b == NULL)) {
583 return;
584 }
585
586 mmap_msg = (nxt_port_mmap_msg_t *) b->mem.start;
587 bmem = msg->buf;
588
589 for (i = 0; i < sb->niov; i++, mmap_msg++) {
590
591 /* Lookup buffer which starts current iov_base. */
592 while (bmem && sb->iobuf[i].iov_base != bmem->mem.pos) {
593 bmem = bmem->next;
594 }

--- 11 unchanged lines hidden (view full) ---

606 mmap_msg->chunk_id = nxt_port_mmap_chunk_id(hdr, bmem->mem.pos);
607 mmap_msg->size = sb->iobuf[i].iov_len;
608
609 nxt_debug(task, "mmap_msg={%D, %D, %D} to %PI",
610 mmap_msg->mmap_id, mmap_msg->chunk_id, mmap_msg->size,
611 port->pid);
612 }
613
582 bmem = msg->buf;
583
584 for (i = 0; i < sb->niov; i++, mmap_msg++) {
585
586 /* Lookup buffer which starts current iov_base. */
587 while (bmem && sb->iobuf[i].iov_base != bmem->mem.pos) {
588 bmem = bmem->next;
589 }

--- 11 unchanged lines hidden (view full) ---

601 mmap_msg->chunk_id = nxt_port_mmap_chunk_id(hdr, bmem->mem.pos);
602 mmap_msg->size = sb->iobuf[i].iov_len;
603
604 nxt_debug(task, "mmap_msg={%D, %D, %D} to %PI",
605 mmap_msg->mmap_id, mmap_msg->chunk_id, mmap_msg->size,
606 port->pid);
607 }
608
614 msg->buf = b;
615 b->mem.free += bsize;
616
617 sb->iobuf[0].iov_base = b->mem.pos;
609 sb->iobuf[0].iov_base = port->mmsg_buf;
618 sb->iobuf[0].iov_len = bsize;
619 sb->niov = 1;
620 sb->size = bsize;
621
622 msg->port_msg.mmap = 1;
623}
624
625

--- 99 unchanged lines hidden ---
610 sb->iobuf[0].iov_len = bsize;
611 sb->niov = 1;
612 sb->size = bsize;
613
614 msg->port_msg.mmap = 1;
615}
616
617

--- 99 unchanged lines hidden ---