Updates for stats collection across processes
[keystone-rtos/netapi.git] / ti / runtime / netapi / demo / src / navl_wrapper.h
1 /******************************************************************************
2  * FILE PURPOSE:  User space access to transport resources on SOC
3  ******************************************************************************
4  * FILE NAME:   navl_wrapper.h
5  *
6  * DESCRIPTION: NAVL Wrapper definitions and data structures
7  *
8  * REVISION HISTORY:
9  *
10  *  Copyright (c) Texas Instruments Incorporated 2014
11  *
12  *  Redistribution and use in source and binary forms, with or without
13  *  modification, are permitted provided that the following conditions
14  *  are met:
15  *
16  *    Redistributions of source code must retain the above copyright
17  *    notice, this list of conditions and the following disclaimer.
18  *
19  *    Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in the
21  *    documentation and/or other materials provided with the
22  *    distribution.
23  *
24  *    Neither the name of Texas Instruments Incorporated nor the names of
25  *    its contributors may be used to endorse or promote products derived
26  *    from this software without specific prior written permission.
27  *
28  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  */
41 /* ============================================================= */
42 /**
43  *   @file  netapi.h
44  *
45  *   path  ti/runtime/netapi/demo/src/navl_wrapper.h
46  *
47  *   @brief  
48  *
49  */
53 #ifndef __NAVL_WRAPPER_H
54 #define __NAVL_WRAPPER_H
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
60 #include <stdio.h>
61 #include <stdint.h>
62 #include <stdlib.h>
63 #include <stddef.h>
64 #include <string.h>
65 #include <navl/navl.h>
67 #define NUM_PROCS 3
69 #define NUM_FP_PROCS 2
71 #define MAX_PROTOCOLS 1500
73 #define MAX_BIN 10
74 typedef struct 
75 {
76     uint32_t num_threads;
77     uint32_t num_protocols;
78     uint32_t enable_dpi;
79     int64_t alloc_curr;
80 } navl_wrapper_cfg_info_t;
85 typedef struct
86 {
87 unsigned long n_ops;
88 unsigned long n_class;
89 unsigned long min_time;
90 unsigned long max_time;
91 unsigned long long tot;
92 unsigned long m_op;
93 unsigned long m_bytes;
94 unsigned long n_err;
95 unsigned long f_op;
96 unsigned long m_cycles;
97 unsigned long f_cycles;
98 unsigned long long malloc_cycles;
99 unsigned long long free_cycles;
100 int malloc_inst;
101 int malloc_bytes;
102 int free_inst;
103 } navl_global_dpi_stats;
108 /* for tracking packet stats */
109 typedef struct
111     uint64_t packets;
112     uint64_t bytes;
113     char name[9];
114     uint64_t cycles;
115     uint64_t cycles_nomem;
116     unsigned long cycles_max;
117     unsigned long cycles_min;
118     uint64_t class; //# packets classified
119     long bin_cycles[MAX_BIN];
120     uint32_t pad[3];
121 } navl_wrapper_pkt_stat_t;
125 /* for tracking packets per thread/core basis */
126 typedef struct 
128     navl_wrapper_cfg_info_t     navl_cfg;
129     navl_wrapper_pkt_stat_t     stats_pkt[2];
130 } navl_wrapper_shm_pkt_stats_t;
135 /* for tracking memory stats */
136 typedef struct
138     int64_t curr;
139     int64_t peak;
140     int64_t fail;
141 } navl_wrapper_stat_t;
145 #define NUM_MEM_CTX 50
146 #define NUM_MEM_OBJ 50
148 /* instance variables */
149 typedef struct {
150 /* handles */
151     navl_handle_t           navl;
153     /* configuration */
154     const char             *config_capfile;
155     const char             *config_plugins;
156     int                     config_num_proto;
157     int                     config_conn_id_attr;
158     int                     config_http_attr;
159     int                     config_num_memctx;
160     int                     config_num_memobj;
162     /* options */
163     int                     option_dpi;
164     int                     option_simple;
165     int                     option_track_memory;
166     int                     option_limit_memory;
167     int                     option_tunnel;
168     int                     option_realtime_mode;
169     int                     option_verbose;
171     /* diagnostics */
172     int                     error_navl;
174     /* statistics */
175 //#define NUM_MEM_CTX 50
176 //#define NUM_MEM_OBJ 50
177     navl_wrapper_stat_t    stats_mem[NUM_MEM_CTX][NUM_MEM_OBJ];
178     char                    ctx_name[NUM_MEM_CTX][64];
179     char                    obj_name[NUM_MEM_OBJ][64];
180     navl_wrapper_pkt_stat_t *stats_pkt[2];
181     uint64_t                stats_conns;
183     /* misc vars */
184     int                     running;
185     int64_t                 alloc_curr;
186     int64_t                 alloc_peak;
187 } navl_mcb_t;
189 #ifdef __cplusplus
191 #endif
192 #endif