1/*
2 * Copyright (c) 2016, Intel Corporation
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * * Redistributions of source code must retain the above copyright notice,
8 * this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of Intel Corporation nor the names of its contributors
13 * may be used to endorse or promote products derived from this software
14 * without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** \file
30 *\brief Tamarama: container engine for exclusive engines,
31 * data structures.
32 */
33
34/* Tamarama bytecode layout:
35 * * |-----|
36 * * | | struct NFA
37 * * |-----|
38 * * | | struct Tamarama
39 * * | |
40 * * |-----|
41 * * | | top remapping table:
42 * * | | stores top base for each subengine.
43 * * | | old_top = remapped_top - top_base;
44 * * | | The size of table is equal to the number of subengines.
45 * * ...
46 * * | |
47 * * |-----|
48 * * | | offsets from the start of struct Tamarama to subengines --\
49 * * ... |
50 * * | | -----------\ |
51 * * |-----| | |
52 * * ||--| | subengine 1 (struct NFA + rest of subengine) <--/ |
53 * * || | | |
54 * * ||--| | |
55 * * || | | |
56 * * || | | |
57 * * ||--| | |
58 * * | | |
59 * * ||--| | subengine 2 (struct NFA + rest of subengine) <-------/
60 * * || | |
61 * * ||--| |
62 * * || | |
63 * * || | |
64 * * ||--| |
65 * * | |
66 * * ...
67 * * | |
68 * * |-----| total size of tamarama
69 * *
70 * * Tamarama stream state:
71 * *
72 * * |---|
73 * * | | active subengine id
74 * * |---|
75 * * | | common pool of stream state for each engine
76 * * | |
77 * * | |
78 * * ...
79 * * | |
80 * * | |
81 * * |---|
82 * *
83 * * Tamarama scratch space:
84 * *
85 * * |---|
86 * * | | common pool of scratch for each engine
87 * * | |
88 * * | |
89 * * ...
90 * * | |
91 * * | |
92 * * |---|
93 * */
94
95#ifndef NFA_TAMARAMA_INTERNAL_H
96#define NFA_TAMARAMA_INTERNAL_H
97
98#include "ue2common.h"
99
100struct ALIGN_AVX_DIRECTIVE Tamarama {
101 u32 numSubEngines;
102 u8 activeIdxSize;
103};
104
105#endif // NFA_TAMARAMA_INTERNAL_H
106