Blame src/vma/util/vma_stats.h

Packit Service aa3af4
/*
Packit Service aa3af4
 * Copyright (c) 2001-2020 Mellanox Technologies, Ltd. All rights reserved.
Packit Service aa3af4
 *
Packit Service aa3af4
 * This software is available to you under a choice of one of two
Packit Service aa3af4
 * licenses.  You may choose to be licensed under the terms of the GNU
Packit Service aa3af4
 * General Public License (GPL) Version 2, available from the file
Packit Service aa3af4
 * COPYING in the main directory of this source tree, or the
Packit Service aa3af4
 * BSD license below:
Packit Service aa3af4
 *
Packit Service aa3af4
 *     Redistribution and use in source and binary forms, with or
Packit Service aa3af4
 *     without modification, are permitted provided that the following
Packit Service aa3af4
 *     conditions are met:
Packit Service aa3af4
 *
Packit Service aa3af4
 *      - Redistributions of source code must retain the above
Packit Service aa3af4
 *        copyright notice, this list of conditions and the following
Packit Service aa3af4
 *        disclaimer.
Packit Service aa3af4
 *
Packit Service aa3af4
 *      - Redistributions in binary form must reproduce the above
Packit Service aa3af4
 *        copyright notice, this list of conditions and the following
Packit Service aa3af4
 *        disclaimer in the documentation and/or other materials
Packit Service aa3af4
 *        provided with the distribution.
Packit Service aa3af4
 *
Packit Service aa3af4
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Packit Service aa3af4
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit Service aa3af4
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Packit Service aa3af4
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
Packit Service aa3af4
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
Packit Service aa3af4
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
Packit Service aa3af4
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
Packit Service aa3af4
 * SOFTWARE.
Packit Service aa3af4
 */
Packit Service aa3af4
Packit Service aa3af4
Packit Service aa3af4
#ifndef VMA_STATS_H
Packit Service aa3af4
#define VMA_STATS_H
Packit Service aa3af4
Packit Service aa3af4
#include <stddef.h>
Packit Service aa3af4
#include <string.h>
Packit Service aa3af4
#include <bitset>
Packit Service aa3af4
#include <netinet/in.h>
Packit Service aa3af4
#include <linux/if.h>
Packit Service aa3af4
#include <sys/types.h>
Packit Service aa3af4
#include <sys/stat.h>
Packit Service aa3af4
#include <vlogger/vlogger.h>
Packit Service aa3af4
#include <vma/vma_extra.h>
Packit Service aa3af4
Packit Service aa3af4
#define NUM_OF_SUPPORTED_CQS                        16
Packit Service aa3af4
#define NUM_OF_SUPPORTED_RINGS                      16
Packit Service aa3af4
#define NUM_OF_SUPPORTED_BPOOLS                     2
Packit Service aa3af4
#define NUM_OF_SUPPORTED_EPFDS                      32
Packit Service aa3af4
#define SHMEM_STATS_SIZE(fds_num)                   sizeof(sh_mem_t) + (fds_num * sizeof(socket_instance_block_t))
Packit Service aa3af4
#define FILE_NAME_MAX_SIZE                          (NAME_MAX + 1)
Packit Service aa3af4
#define MC_TABLE_SIZE                               1024
Packit Service aa3af4
#define MAP_SH_MEM(var,sh_stats)                    var = (sh_mem_t*)sh_stats
Packit Service aa3af4
#define STATS_PUBLISHER_TIMER_PERIOD                10 // publisher will check for stats request every 10 msec
Packit Service aa3af4
#define STATS_READER_DELAY                          STATS_PUBLISHER_TIMER_PERIOD + 5 // reader will wait for vma to wakeup and write statistics to shmem (with extra 5 msec overhead)
Packit Service aa3af4
#define STATS_FD_STATISTICS_DISABLED                -1
Packit Service aa3af4
#define STATS_FD_STATISTICS_LOG_LEVEL_DEFAULT       VLOG_DEFAULT
Packit Service aa3af4
Packit Service aa3af4
//statistic file
Packit Service aa3af4
extern FILE* g_stats_file;
Packit Service aa3af4
Packit Service aa3af4
// Common iomux stats
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	pid_t       threadid_last;
Packit Service aa3af4
	uint32_t    n_iomux_poll_hit;
Packit Service aa3af4
	uint32_t    n_iomux_poll_miss;
Packit Service aa3af4
	uint32_t    n_iomux_timeouts;
Packit Service aa3af4
	uint32_t    n_iomux_errors;
Packit Service aa3af4
	uint32_t    n_iomux_rx_ready;
Packit Service aa3af4
	uint32_t    n_iomux_os_rx_ready;
Packit Service aa3af4
	uint32_t    n_iomux_polling_time;
Packit Service aa3af4
} iomux_func_stats_t;
Packit Service aa3af4
Packit Service aa3af4
typedef enum {
Packit Service aa3af4
	e_totals = 1,
Packit Service aa3af4
	e_deltas
Packit Service aa3af4
} print_details_mode_t;
Packit Service aa3af4
Packit Service aa3af4
typedef enum {
Packit Service aa3af4
	e_basic = 1,
Packit Service aa3af4
	e_medium,
Packit Service aa3af4
	e_full,
Packit Service aa3af4
	e_mc_groups,
Packit Service aa3af4
	e_netstat_like
Packit Service aa3af4
} view_mode_t;
Packit Service aa3af4
Packit Service aa3af4
typedef enum {
Packit Service aa3af4
	e_by_pid_str,
Packit Service aa3af4
	e_by_app_name,
Packit Service aa3af4
	e_by_runn_proccess
Packit Service aa3af4
} proc_ident_mode_t;
Packit Service aa3af4
Packit Service aa3af4
struct user_params_t {
Packit Service aa3af4
	int                     interval;
Packit Service aa3af4
	print_details_mode_t    print_details_mode;
Packit Service aa3af4
	view_mode_t             view_mode;
Packit Service aa3af4
	bool                    forbid_cleaning;
Packit Service aa3af4
	vlog_levels_t           vma_log_level;
Packit Service aa3af4
	int                     vma_details_level;
Packit Service aa3af4
	bool                    zero_counters;
Packit Service aa3af4
	proc_ident_mode_t       proc_ident_mode;
Packit Service aa3af4
	bool                    write_auth;
Packit Service aa3af4
	int                     cycles;
Packit Service aa3af4
	int                     fd_dump;
Packit Service aa3af4
	vlog_levels_t           fd_dump_log_level;
Packit Service aa3af4
	std::string             vma_stats_path;
Packit Service aa3af4
};
Packit Service aa3af4
Packit Service aa3af4
extern user_params_t user_params;
Packit Service aa3af4
Packit Service aa3af4
// Epoll group stats
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	bool                   enabled;
Packit Service aa3af4
	int                    epfd;
Packit Service aa3af4
	iomux_func_stats_t     stats;
Packit Service aa3af4
} epoll_stats_t;
Packit Service aa3af4
Packit Service aa3af4
// iomux function stat info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	iomux_func_stats_t    poll;
Packit Service aa3af4
	iomux_func_stats_t    select;
Packit Service aa3af4
	epoll_stats_t         epoll[NUM_OF_SUPPORTED_EPFDS];
Packit Service aa3af4
} iomux_stats_t;
Packit Service aa3af4
Packit Service aa3af4
// multicast stat info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	uint32_t    sock_num;
Packit Service aa3af4
	in_addr_t   mc_grp;
Packit Service aa3af4
} mc_tbl_entry_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	uint16_t        max_grp_num;
Packit Service aa3af4
	mc_tbl_entry_t  mc_grp_tbl[MC_TABLE_SIZE];
Packit Service aa3af4
} mc_grp_info_t;
Packit Service aa3af4
Packit Service aa3af4
// socket stat info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	uint32_t    n_rx_packets;
Packit Service aa3af4
	uint32_t    n_rx_bytes;
Packit Service aa3af4
	uint32_t    n_rx_poll_hit;
Packit Service aa3af4
	uint32_t    n_rx_poll_miss;
Packit Service aa3af4
	uint32_t    n_rx_ready_pkt_max;
Packit Service aa3af4
	uint32_t    n_rx_ready_byte_drop;
Packit Service aa3af4
	uint32_t    n_rx_ready_pkt_drop;
Packit Service aa3af4
	uint32_t    n_rx_ready_byte_max;
Packit Service aa3af4
	uint32_t    n_rx_errors;
Packit Service aa3af4
	uint32_t    n_rx_eagain;
Packit Service aa3af4
	uint32_t    n_rx_os_packets;
Packit Service aa3af4
	uint32_t    n_rx_os_bytes;
Packit Service aa3af4
	uint32_t    n_rx_poll_os_hit;
Packit Service aa3af4
	uint32_t    n_rx_os_errors;
Packit Service aa3af4
	uint32_t    n_rx_os_eagain;
Packit Service aa3af4
	uint32_t    n_rx_migrations;
Packit Service aa3af4
	uint32_t    n_tx_sent_pkt_count;
Packit Service aa3af4
	uint32_t    n_tx_sent_byte_count;
Packit Service aa3af4
	uint32_t    n_tx_errors;
Packit Service aa3af4
	uint32_t    n_tx_drops;
Packit Service aa3af4
	uint32_t    n_tx_retransmits;
Packit Service aa3af4
	uint32_t    n_tx_os_packets;
Packit Service aa3af4
	uint32_t    n_tx_os_bytes;
Packit Service aa3af4
	uint32_t    n_tx_os_errors;
Packit Service aa3af4
	uint32_t    n_tx_os_eagain;
Packit Service aa3af4
	uint32_t    n_tx_migrations;
Packit Service aa3af4
	uint32_t    n_tx_dummy;
Packit Service aa3af4
} socket_counters_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	int         fd;
Packit Service aa3af4
	uint32_t                     inode;
Packit Service aa3af4
	uint32_t                     tcp_state;   // enum tcp_state
Packit Service aa3af4
	uint8_t                      socket_type; // SOCK_STREAM, SOCK_DGRAM, ...
Packit Service aa3af4
	uint8_t                      padding1[3];
Packit Service aa3af4
	bool                         b_is_offloaded;
Packit Service aa3af4
	bool                         b_blocking;
Packit Service aa3af4
	bool                         b_mc_loop;
Packit Service aa3af4
	bool                         padding2;
Packit Service aa3af4
	in_addr_t                    bound_if;
Packit Service aa3af4
	in_addr_t                    connected_ip;
Packit Service aa3af4
	in_addr_t                    mc_tx_if;
Packit Service aa3af4
	in_port_t                    bound_port;
Packit Service aa3af4
	in_port_t                    connected_port;
Packit Service aa3af4
	pid_t                        threadid_last_rx;
Packit Service aa3af4
	pid_t                        threadid_last_tx;
Packit Service aa3af4
	uint32_t                     n_rx_ready_pkt_count;
Packit Service aa3af4
	uint32_t                     n_rx_ready_byte_count;
Packit Service aa3af4
	uint32_t                     n_rx_ready_byte_limit;
Packit Service aa3af4
	uint32_t                     n_rx_zcopy_pkt_count;
Packit Service aa3af4
	uint32_t                     n_tx_ready_byte_count;
Packit Service aa3af4
	socket_counters_t            counters;
Packit Service aa3af4
	std::bitset<MC_TABLE_SIZE>   mc_grp_map;
Packit Service aa3af4
	ring_logic_t                 ring_alloc_logic_rx;
Packit Service aa3af4
	ring_logic_t                 ring_alloc_logic_tx;
Packit Service aa3af4
	uint64_t                     ring_user_id_rx;
Packit Service aa3af4
	uint64_t                     ring_user_id_tx;
Packit Service aa3af4
Packit Service aa3af4
	void reset() {
Packit Service aa3af4
		fd = 0;
Packit Service aa3af4
		inode = tcp_state = 0;
Packit Service aa3af4
		socket_type = 0;
Packit Service aa3af4
		b_is_offloaded = b_blocking = b_mc_loop = false;
Packit Service aa3af4
		bound_if = connected_ip = mc_tx_if = (in_addr_t)0;
Packit Service aa3af4
		bound_port = connected_port = (in_port_t)0;
Packit Service aa3af4
		threadid_last_rx = threadid_last_tx = pid_t(0);
Packit Service aa3af4
		n_rx_ready_pkt_count = n_rx_ready_byte_count = n_rx_ready_byte_limit = n_rx_zcopy_pkt_count = n_tx_ready_byte_count = 0;
Packit Service aa3af4
		memset(&counters, 0, sizeof(counters));
Packit Service aa3af4
		mc_grp_map.reset();
Packit Service aa3af4
		ring_user_id_rx = ring_user_id_tx = 0;
Packit Service aa3af4
		ring_alloc_logic_rx = ring_alloc_logic_tx = RING_LOGIC_PER_INTERFACE;
Packit Service aa3af4
	};
Packit Service aa3af4
} socket_stats_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	bool            b_enabled;
Packit Service aa3af4
	socket_stats_t  skt_stats;
Packit Service aa3af4
Packit Service aa3af4
	void reset() {
Packit Service aa3af4
		b_enabled = false;
Packit Service aa3af4
		skt_stats.reset();
Packit Service aa3af4
	}
Packit Service aa3af4
} socket_instance_block_t;
Packit Service aa3af4
Packit Service aa3af4
// CQ stat info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	uint64_t    n_rx_pkt_drop;
Packit Service aa3af4
	uint32_t    n_rx_sw_queue_len;
Packit Service aa3af4
	uint32_t    n_rx_drained_at_once_max;
Packit Service aa3af4
	uint32_t    n_buffer_pool_len;
Packit Service aa3af4
} cq_stats_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	bool        b_enabled;
Packit Service aa3af4
	cq_stats_t  cq_stats;
Packit Service aa3af4
} cq_instance_block_t;
Packit Service aa3af4
Packit Service aa3af4
typedef enum {
Packit Service aa3af4
	RING_ETH = 0,
Packit Service aa3af4
	RING_ETH_CB,
Packit Service aa3af4
	RING_ETH_DIRECT,
Packit Service aa3af4
	RING_TAP,
Packit Service aa3af4
	RING_IB
Packit Service aa3af4
} ring_type_t;
Packit Service aa3af4
Packit Service aa3af4
static const char * const ring_type_str[] = {
Packit Service aa3af4
	"RING_ETH",
Packit Service aa3af4
	"RING_ETH_CB",
Packit Service aa3af4
	"RING_ETH_DIRECT",
Packit Service aa3af4
	"RING_TAP",
Packit Service aa3af4
	"RING_IB"
Packit Service aa3af4
};
Packit Service aa3af4
Packit Service aa3af4
// Ring stat info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	uint64_t    n_rx_pkt_count;
Packit Service aa3af4
	uint64_t    n_rx_byte_count;
Packit Service aa3af4
	uint64_t    n_tx_pkt_count;
Packit Service aa3af4
	uint64_t    n_tx_byte_count;
Packit Service aa3af4
	uint64_t    n_tx_retransmits;
Packit Service aa3af4
	void*       p_ring_master;
Packit Service aa3af4
	ring_type_t n_type;
Packit Service aa3af4
	union {
Packit Service aa3af4
		struct {
Packit Service aa3af4
			uint64_t    n_rx_interrupt_requests;
Packit Service aa3af4
			uint64_t    n_rx_interrupt_received;
Packit Service aa3af4
			uint32_t    n_rx_cq_moderation_count;
Packit Service aa3af4
			uint32_t    n_rx_cq_moderation_period;
Packit Service aa3af4
			uint64_t    n_tx_dev_mem_pkt_count;
Packit Service aa3af4
			uint64_t    n_tx_dev_mem_byte_count;
Packit Service aa3af4
			uint64_t    n_tx_dev_mem_oob;
Packit Service aa3af4
			uint32_t    n_tx_dev_mem_allocated;
Packit Service aa3af4
		} simple;
Packit Service aa3af4
		struct {
Packit Service aa3af4
			char		s_tap_name[IFNAMSIZ];
Packit Service aa3af4
			uint32_t	n_tap_fd;
Packit Service aa3af4
			uint32_t	n_rx_buffers;
Packit Service aa3af4
			uint32_t	n_vf_plugouts;
Packit Service aa3af4
		} tap;
Packit Service aa3af4
	};
Packit Service aa3af4
} ring_stats_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	bool            b_enabled;
Packit Service aa3af4
	ring_stats_t    ring_stats;
Packit Service aa3af4
} ring_instance_block_t;
Packit Service aa3af4
Packit Service aa3af4
// Buffer Pool stat info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	bool        is_rx;
Packit Service aa3af4
	bool        is_tx;
Packit Service aa3af4
	uint32_t    n_buffer_pool_size;
Packit Service aa3af4
	uint32_t    n_buffer_pool_no_bufs;
Packit Service aa3af4
} bpool_stats_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	bool            b_enabled;
Packit Service aa3af4
	bpool_stats_t   bpool_stats;
Packit Service aa3af4
} bpool_instance_block_t;
Packit Service aa3af4
Packit Service aa3af4
// Version info
Packit Service aa3af4
typedef struct {
Packit Service aa3af4
	uint8_t    vma_lib_maj;
Packit Service aa3af4
	uint8_t    vma_lib_min;
Packit Service aa3af4
	uint8_t    vma_lib_rev;
Packit Service aa3af4
	uint8_t    vma_lib_rel;
Packit Service aa3af4
} version_info_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct sh_mem_t {
Packit Service aa3af4
	int                      reader_counter; //only copy to shm upon active reader
Packit Service aa3af4
	version_info_t           ver_info;
Packit Service aa3af4
	char                     stats_protocol_ver[32];
Packit Service aa3af4
	vlog_levels_t            log_level;
Packit Service aa3af4
	uint8_t                  log_details_level;
Packit Service aa3af4
	int                      fd_dump;
Packit Service aa3af4
	vlog_levels_t            fd_dump_log_level;
Packit Service aa3af4
	cq_instance_block_t      cq_inst_arr[NUM_OF_SUPPORTED_CQS];
Packit Service aa3af4
	ring_instance_block_t    ring_inst_arr[NUM_OF_SUPPORTED_RINGS];
Packit Service aa3af4
	bpool_instance_block_t   bpool_inst_arr[NUM_OF_SUPPORTED_BPOOLS];
Packit Service aa3af4
	mc_grp_info_t            mc_info;
Packit Service aa3af4
	iomux_stats_t            iomux;
Packit Service aa3af4
	size_t                   max_skt_inst_num; // number of elements allocated in 'socket_instance_block_t skt_inst_arr[]'
Packit Service aa3af4
Packit Service aa3af4
	/* IMPORTANT:  MUST BE LAST ENTRY in struct: [0] is the allocation start point for all fd's
Packit Service aa3af4
	 *
Packit Service aa3af4
	 * Some compiler can report issue as 'array subscript is above array bounds'
Packit Service aa3af4
	 *
Packit Service aa3af4
	 * In ISO C90, you would have to give contents a length of 1,
Packit Service aa3af4
	 * which means either you waste space or complicate the argument to malloc.
Packit Service aa3af4
	 * Note:
Packit Service aa3af4
	 * - 1 was the portable way to go, though it was rather strange
Packit Service aa3af4
	 * - 0 was better at indicating intent, but not legal as far as
Packit Service aa3af4
	 * the Standard was concerned and supported as an extension by some compilers (including gcc)
Packit Service aa3af4
	 *
Packit Service aa3af4
	 * In ISO C99, you would use a flexible array member, which is slightly different in syntax and semantics:
Packit Service aa3af4
	 * - Flexible array members are written as contents[] without the 0.
Packit Service aa3af4
	 * - Flexible array members have incomplete type, and so the sizeof operator may not be applied.
Packit Service aa3af4
	 *   As a quirk of the original implementation of zero-length arrays, sizeof evaluates to zero.
Packit Service aa3af4
	 * - Flexible array members may only appear as the last member of a struct that is otherwise non-empty.
Packit Service aa3af4
	 * - A structure containing a flexible array member, or a union containing such a structure (possibly recursively),
Packit Service aa3af4
	 *   may not be a member of a structure or an element of an array. (However, these uses are permitted by GCC as extensions.)
Packit Service aa3af4
	 */
Packit Service aa3af4
	socket_instance_block_t  skt_inst_arr[1]; //sockets statistics array
Packit Service aa3af4
Packit Service aa3af4
	void reset() {
Packit Service aa3af4
		reader_counter = 0;
Packit Service aa3af4
		memset(&ver_info, 0, sizeof(ver_info));
Packit Service aa3af4
		memset(stats_protocol_ver, 0, sizeof(stats_protocol_ver));
Packit Service aa3af4
		max_skt_inst_num = 0;
Packit Service aa3af4
		log_level = (vlog_levels_t)0;
Packit Service aa3af4
		log_details_level = 0;
Packit Service aa3af4
		fd_dump = 0;
Packit Service aa3af4
		fd_dump_log_level = (vlog_levels_t)0;
Packit Service aa3af4
		memset(cq_inst_arr, 0, sizeof(cq_inst_arr));
Packit Service aa3af4
		memset(ring_inst_arr, 0, sizeof(ring_inst_arr));
Packit Service aa3af4
		memset(bpool_inst_arr, 0, sizeof(bpool_inst_arr));
Packit Service aa3af4
		memset(&mc_info, 0, sizeof(mc_info));
Packit Service aa3af4
		memset(&iomux, 0, sizeof(iomux));
Packit Service aa3af4
		for (uint32_t i = 0; i < max_skt_inst_num; i++) {
Packit Service aa3af4
			skt_inst_arr[i].reset();
Packit Service aa3af4
		}
Packit Service aa3af4
	}
Packit Service aa3af4
} sh_mem_t;
Packit Service aa3af4
Packit Service aa3af4
typedef struct sh_mem_info {
Packit Service aa3af4
	char     filename_sh_stats[PATH_MAX];
Packit Service aa3af4
	size_t   shmem_size;
Packit Service aa3af4
	int      fd_sh_stats;
Packit Service aa3af4
	void*    p_sh_stats;
Packit Service aa3af4
	int      pid;
Packit Service aa3af4
} sh_mem_info_t;
Packit Service aa3af4
Packit Service aa3af4
// publisher functions
Packit Service aa3af4
void vma_shmem_stats_open(vlog_levels_t** p_p_vma_log_level, uint8_t** p_p_vma_log_details);
Packit Service aa3af4
void vma_shmem_stats_close();
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_instance_create_socket_block(socket_stats_t*);
Packit Service aa3af4
void vma_stats_instance_remove_socket_block(socket_stats_t*);
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_mc_group_add(in_addr_t mc_grp, socket_stats_t* p_socket_stats);
Packit Service aa3af4
void vma_stats_mc_group_remove(in_addr_t mc_grp, socket_stats_t* p_socket_stats);
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_instance_create_ring_block(ring_stats_t*);
Packit Service aa3af4
void vma_stats_instance_remove_ring_block(ring_stats_t*);
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_instance_create_cq_block(cq_stats_t*);
Packit Service aa3af4
void vma_stats_instance_remove_cq_block(cq_stats_t*);
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_instance_create_bpool_block(bpool_stats_t*);
Packit Service aa3af4
void vma_stats_instance_remove_bpool_block(bpool_stats_t*);
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_instance_get_poll_block(iomux_func_stats_t*);
Packit Service aa3af4
void vma_stats_instance_get_select_block(iomux_func_stats_t*);
Packit Service aa3af4
Packit Service aa3af4
void vma_stats_instance_create_epoll_block(int, iomux_func_stats_t*);
Packit Service aa3af4
void vma_stats_instance_remove_epoll_block(iomux_func_stats_t* ep_stats);
Packit Service aa3af4
Packit Service aa3af4
//reader functions
Packit Service aa3af4
void print_full_stats(socket_stats_t* p_si_stats, mc_grp_info_t* p_mc_grp_info, FILE* filename);
Packit Service aa3af4
void print_netstat_like(socket_stats_t* p_si_stats, mc_grp_info_t* p_mc_grp_info, FILE* file, int pid);
Packit Service aa3af4
void print_netstat_like_headers(FILE* file);
Packit Service aa3af4
Packit Service aa3af4
#endif // VMA_STATS_H