event_handler_manager::event_handler_manager() : m_reg_action_q_lock("reg_action_q_lock"), m_b_sysvar_internal_thread_arm_cq_enabled(safe_mce_sys().internal_thread_arm_cq_enabled), m_n_sysvar_vma_time_measure_num_samples(safe_mce_sys().vma_time_measure_num_samples), m_n_sysvar_timer_resolution_msec(safe_mce_sys().timer_resolution_msec) { evh_logfunc(""); m_cq_epfd = 0; m_epfd = orig_os_api.epoll_create(INITIAL_EVENTS_NUM); BULLSEYE_EXCLUDE_BLOCK_START if (m_epfd == -1) { evh_logdbg("epoll_create failed on ibv device collection (errno=%d %m)", errno); free_evh_resources(); throw_vma_exception("epoll_create failed on ibv device collection"); } BULLSEYE_EXCLUDE_BLOCK_END m_b_continue_running = true; m_event_handler_tid = 0; wakeup_set_epoll_fd(m_epfd); going_to_sleep(); return; }
sockinfo::sockinfo(int fd) throw (vma_exception): socket_fd_api(fd), m_b_closed(false), m_b_blocking(true), m_protocol(PROTO_UNDEFINED), m_lock_rcv(MODULE_NAME "::m_lock_rcv"), m_lock_snd(MODULE_NAME "::m_lock_snd"), m_p_connected_dst_entry(NULL), m_so_bindtodevice_ip(0), m_p_rx_ring(0), m_rx_reuse_buf_pending(false), m_rx_reuse_buf_postponed(false), m_rx_ring_map_lock(MODULE_NAME "::m_rx_ring_map_lock"), m_ring_alloc_logic(fd, this), m_n_rx_pkt_ready_list_count(0), m_rx_pkt_ready_offset(0), m_rx_ready_byte_count(0), m_rx_num_buffs_reuse(safe_mce_sys().rx_bufs_batch), m_rx_callback(NULL), m_rx_callback_context(NULL) { m_rx_epfd = orig_os_api.epoll_create(128); if (unlikely(m_rx_epfd == -1)) { throw_vma_exception("create internal epoll"); } wakeup_set_epoll_fd(m_rx_epfd); m_p_socket_stats = &m_socket_stats; // Save stats as local copy and allow state publisher to copy from this location vma_stats_instance_create_socket_block(m_p_socket_stats); memset(m_p_socket_stats, 0, sizeof(*m_p_socket_stats)); m_p_socket_stats->fd = m_fd; m_p_socket_stats->inode = fd2inode(m_fd); m_p_socket_stats->b_blocking = m_b_blocking; m_rx_reuse_buff.n_buff_num = 0; }
sockinfo::sockinfo(int fd): socket_fd_api(fd), m_b_closed(false), m_b_blocking(true), m_b_pktinfo(false), m_b_rcvtstamp(false), m_b_rcvtstampns(false), m_n_tsing_flags(0), m_protocol(PROTO_UNDEFINED), m_lock_rcv(MODULE_NAME "::m_lock_rcv"), m_lock_snd(MODULE_NAME "::m_lock_snd"), m_p_connected_dst_entry(NULL), m_so_bindtodevice_ip(INADDR_ANY), m_p_rx_ring(0), m_rx_reuse_buf_pending(false), m_rx_reuse_buf_postponed(false), m_rx_ring_map_lock(MODULE_NAME "::m_rx_ring_map_lock"), m_n_rx_pkt_ready_list_count(0), m_rx_pkt_ready_offset(0), m_rx_ready_byte_count(0), m_n_sysvar_rx_num_buffs_reuse(safe_mce_sys().rx_bufs_batch), m_n_sysvar_rx_poll_num(safe_mce_sys().rx_poll_num), m_ring_alloc_log_rx(safe_mce_sys().ring_allocation_logic_rx), m_ring_alloc_log_tx(safe_mce_sys().ring_allocation_logic_tx), m_pcp(0), m_rx_callback(NULL), m_rx_callback_context(NULL), m_fd_context((void *)((uintptr_t)m_fd)), m_flow_tag_id(0), m_flow_tag_enabled(false), m_n_uc_ttl(safe_mce_sys().sysctl_reader.get_net_ipv4_ttl()), m_tcp_flow_is_5t(false), m_p_rings_fds(NULL) { m_ring_alloc_logic = ring_allocation_logic_rx(get_fd(), m_ring_alloc_log_rx, this); m_rx_epfd = orig_os_api.epoll_create(128); if (unlikely(m_rx_epfd == -1)) { throw_vma_exception("create internal epoll"); } wakeup_set_epoll_fd(m_rx_epfd); m_p_socket_stats = &m_socket_stats; // Save stats as local copy and allow state publisher to copy from this location vma_stats_instance_create_socket_block(m_p_socket_stats); m_p_socket_stats->reset(); m_p_socket_stats->fd = m_fd; m_p_socket_stats->inode = fd2inode(m_fd); m_p_socket_stats->b_blocking = m_b_blocking; m_rx_reuse_buff.n_buff_num = 0; memset(&m_so_ratelimit, 0, sizeof(vma_rate_limit_t)); set_flow_tag(m_fd + 1); #ifdef DEFINED_SOCKETXTREME m_ec.clear(); m_socketxtreme_completion = NULL; m_socketxtreme_last_buff_lst = NULL; #endif // DEFINED_SOCKETXTREME }