Added support for VLAN in IPv6
[samplevnf.git] / VNFs / DPPD-PROX / handle_irq.h
1 /*
2 // Copyright (c) 2010-2017 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16
17 #ifndef _HANDLE_IRQ_H_
18 #define _HANDLE_IRQ_H_
19
20 #include "task_base.h"
21 #include "stats_irq.h"
22
23 #define MAX_INDEX       65535 * 16
24
25 struct irq_info {
26         uint64_t tsc;
27         uint64_t lat;
28 };
29
30 struct irq_bucket {
31         uint64_t index;
32         struct irq_info info[MAX_INDEX];
33 };
34
35 struct task_irq {
36         struct task_base base;
37         uint64_t start_tsc;
38         uint64_t first_tsc;
39         uint64_t tsc;
40         uint64_t max_irq;
41         uint8_t  lcore_id;
42         uint8_t  irq_debug;
43         volatile uint16_t stats_use_lt; /* which lt to use, */
44         volatile uint16_t task_use_lt; /* 0 or 1 depending on which of the 2 result records are used */
45         struct irq_bucket buffer[2];
46         struct irq_rt_stats stats;
47 };
48
49 struct input;
50
51 void task_irq_show_stats(struct task_irq *task_irq, struct input *input);
52
53 #endif /* _HANDLE_IRQ_H_ */