Deleted
Added
nxt_event_engine.c (611:323e11065f83) | nxt_event_engine.c (1266:22a29a8b15e2) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8 --- 542 unchanged lines hidden (view full) --- 551 now = nxt_thread_monotonic_time(thr) / 1000000; 552 553 nxt_timer_expire(engine, now); 554 } 555} 556 557 558void * | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8 --- 542 unchanged lines hidden (view full) --- 551 now = nxt_thread_monotonic_time(thr) / 1000000; 552 553 nxt_timer_expire(engine, now); 554 } 555} 556 557 558void * |
559nxt_event_engine_mem_alloc(nxt_event_engine_t *engine, uint8_t *slot, | 559nxt_event_engine_mem_alloc(nxt_event_engine_t *engine, uint8_t *hint, |
560 size_t size) 561{ | 560 size_t size) 561{ |
562 uint8_t n; | 562 uint32_t n; |
563 nxt_uint_t items; 564 nxt_array_t *mem_cache; 565 nxt_mem_cache_t *cache; 566 nxt_mem_cache_block_t *block; 567 568 mem_cache = engine->mem_cache; | 563 nxt_uint_t items; 564 nxt_array_t *mem_cache; 565 nxt_mem_cache_t *cache; 566 nxt_mem_cache_block_t *block; 567 568 mem_cache = engine->mem_cache; |
569 n = *slot; | 569 n = *hint; |
570 | 570 |
571 if (n == (uint8_t) -1) { | 571 if (n == NXT_EVENT_ENGINE_NO_MEM_HINT) { |
572 573 if (mem_cache == NULL) { 574 /* IPv4 nxt_sockaddr_t and HTTP/1 and HTTP/2 buffers. */ 575 items = 3; 576#if (NXT_INET6) 577 items++; 578#endif 579#if (NXT_HAVE_UNIX_DOMAIN) --- 22 unchanged lines hidden (view full) --- 602 } 603 604 cache->free = NULL; 605 cache->size = size; 606 cache->count = 0; 607 608 found: 609 | 572 573 if (mem_cache == NULL) { 574 /* IPv4 nxt_sockaddr_t and HTTP/1 and HTTP/2 buffers. */ 575 items = 3; 576#if (NXT_INET6) 577 items++; 578#endif 579#if (NXT_HAVE_UNIX_DOMAIN) --- 22 unchanged lines hidden (view full) --- 602 } 603 604 cache->free = NULL; 605 cache->size = size; 606 cache->count = 0; 607 608 found: 609 |
610 *slot = n; | 610 if (n < NXT_EVENT_ENGINE_NO_MEM_HINT) { 611 *hint = (uint8_t) n; 612 } |
611 } 612 613 cache = mem_cache->elts; 614 cache = cache + n; 615 616 block = cache->free; 617 618 if (block != NULL) { 619 cache->free = block->next; 620 cache->count--; 621 return block; 622 } 623 624 return nxt_mp_alloc(engine->mem_pool, size); 625} 626 627 628void | 613 } 614 615 cache = mem_cache->elts; 616 cache = cache + n; 617 618 block = cache->free; 619 620 if (block != NULL) { 621 cache->free = block->next; 622 cache->count--; 623 return block; 624 } 625 626 return nxt_mp_alloc(engine->mem_pool, size); 627} 628 629 630void |
629nxt_event_engine_mem_free(nxt_event_engine_t *engine, uint8_t *slot, void *p) | 631nxt_event_engine_mem_free(nxt_event_engine_t *engine, uint8_t hint, void *p, 632 size_t size) |
630{ | 633{ |
634 uint32_t n; 635 nxt_array_t *mem_cache; |
|
631 nxt_mem_cache_t *cache; 632 nxt_mem_cache_block_t *block; 633 634 block = p; | 636 nxt_mem_cache_t *cache; 637 nxt_mem_cache_block_t *block; 638 639 block = p; |
640 mem_cache = engine->mem_cache; 641 cache = mem_cache->elts; |
|
635 | 642 |
636 cache = engine->mem_cache->elts; 637 cache = cache + *slot; | 643 n = hint; |
638 | 644 |
645 if (nxt_slow_path(n == NXT_EVENT_ENGINE_NO_MEM_HINT)) { 646 647 if (size != 0) { 648 for (n = 0; n < mem_cache->nelts; n++) { 649 if (cache[n].size == size) { 650 goto found; 651 } 652 } 653 654 nxt_alert(&engine->task, 655 "event engine mem free(%p, %z) not found", p, size); 656 } 657 658 goto done; 659 } 660 661found: 662 663 cache = cache + n; 664 |
|
639 if (cache->count < 16) { 640 cache->count++; 641 block->next = cache->free; 642 cache->free = block; 643 644 return; 645 } 646 | 665 if (cache->count < 16) { 666 cache->count++; 667 block->next = cache->free; 668 cache->free = block; 669 670 return; 671 } 672 |
673done: 674 |
|
647 nxt_mp_free(engine->mem_pool, p); 648} 649 650 651#if (NXT_DEBUG) 652 653void nxt_event_engine_thread_adopt(nxt_event_engine_t *engine) 654{ 655 nxt_work_queue_thread_adopt(&engine->fast_work_queue); 656 nxt_work_queue_thread_adopt(&engine->accept_work_queue); 657 nxt_work_queue_thread_adopt(&engine->read_work_queue); 658 nxt_work_queue_thread_adopt(&engine->socket_work_queue); 659 nxt_work_queue_thread_adopt(&engine->connect_work_queue); 660 nxt_work_queue_thread_adopt(&engine->write_work_queue); 661 nxt_work_queue_thread_adopt(&engine->shutdown_work_queue); 662 nxt_work_queue_thread_adopt(&engine->close_work_queue); 663} 664 665#endif | 675 nxt_mp_free(engine->mem_pool, p); 676} 677 678 679#if (NXT_DEBUG) 680 681void nxt_event_engine_thread_adopt(nxt_event_engine_t *engine) 682{ 683 nxt_work_queue_thread_adopt(&engine->fast_work_queue); 684 nxt_work_queue_thread_adopt(&engine->accept_work_queue); 685 nxt_work_queue_thread_adopt(&engine->read_work_queue); 686 nxt_work_queue_thread_adopt(&engine->socket_work_queue); 687 nxt_work_queue_thread_adopt(&engine->connect_work_queue); 688 nxt_work_queue_thread_adopt(&engine->write_work_queue); 689 nxt_work_queue_thread_adopt(&engine->shutdown_work_queue); 690 nxt_work_queue_thread_adopt(&engine->close_work_queue); 691} 692 693#endif |