CERT NetSA Security Suite
Monitoring for Large-Scale Networks
YAF
YAF: ring.h Source File
YAF
2.x (stable)
2.x (stable)
3.x (pre-release)
Documentation
Latest Downloads
Release History
License
Main Page
Tutorials
Data Structures
Files
File List
Globals
yaf-2.15.0
include
yaf
ring.h
1
/*
2
* Copyright 2007-2023 Carnegie Mellon University
3
* See license information in LICENSE.txt.
4
*/
5
/*
6
* ring.c
7
* General ring array implementation
8
*
9
* ------------------------------------------------------------------------
10
* Authors: Brian Trammell
11
* ------------------------------------------------------------------------
12
* @DISTRIBUTION_STATEMENT_BEGIN@
13
* YAF 2.15.0
14
*
15
* Copyright 2023 Carnegie Mellon University.
16
*
17
* NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING
18
* INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON
19
* UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
20
* AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR
21
* PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF
22
* THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF
23
* ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT
24
* INFRINGEMENT.
25
*
26
* Licensed under a GNU GPL 2.0-style license, please see LICENSE.txt or
27
* contact permission@sei.cmu.edu for full terms.
28
*
29
* [DISTRIBUTION STATEMENT A] This material has been approved for public
30
* release and unlimited distribution. Please see Copyright notice for
31
* non-US Government use and distribution.
32
*
33
* GOVERNMENT PURPOSE RIGHTS - Software and Software Documentation
34
* Contract No.: FA8702-15-D-0002
35
* Contractor Name: Carnegie Mellon University
36
* Contractor Address: 4500 Fifth Avenue, Pittsburgh, PA 15213
37
*
38
* The Government's rights to use, modify, reproduce, release, perform,
39
* display, or disclose this software are restricted by paragraph (b)(2) of
40
* the Rights in Noncommercial Computer Software and Noncommercial Computer
41
* Software Documentation clause contained in the above identified
42
* contract. No restrictions apply after the expiration date shown
43
* above. Any reproduction of the software or portions thereof marked with
44
* this legend must also reproduce the markings.
45
*
46
* This Software includes and/or makes use of Third-Party Software each
47
* subject to its own license.
48
*
49
* DM23-2313
50
* @DISTRIBUTION_STATEMENT_END@
51
* ------------------------------------------------------------------------
52
*/
53
54
#ifndef _YAF_RING_H_
55
#define _YAF_RING_H_
56
#include <yaf/autoinc.h>
57
58
struct
rgaRing_st;
59
typedef
struct
rgaRing_st rgaRing_t;
60
61
rgaRing_t *
62
rgaAlloc(
63
size_t
elt_sz,
64
size_t
cap);
65
66
void
67
rgaFree(
68
rgaRing_t *ring);
69
70
uint8_t *
71
rgaNextHead(
72
rgaRing_t *ring);
73
74
void
75
rgaRewindHead(
76
rgaRing_t *ring);
77
78
uint8_t *
79
rgaNextTail(
80
rgaRing_t *ring);
81
82
size_t
83
rgaCount(
84
rgaRing_t *ring);
85
86
size_t
87
rgaPeak(
88
rgaRing_t *ring);
89
90
#if YAF_RING_THREAD
91
92
rgaRing_t *
93
rgaAllocThreaded(
94
size_t
elt_sz,
95
size_t
cap);
96
97
uint8_t *
98
rgaWaitHead(
99
rgaRing_t *ring);
100
101
void
102
rgaReleaseHead(
103
rgaRing_t *ring,
104
size_t
rsv);
105
106
uint8_t *
107
rgaWaitTail(
108
rgaRing_t *ring);
109
110
void
111
rgaReleaseTail(
112
rgaRing_t *ring,
113
size_t
rsv);
114
115
void
116
rgaSetInterrupt(
117
rgaRing_t *ring);
118
119
void
120
rgaClearInterrupt(
121
rgaRing_t *ring);
122
123
#endif
/* if YAF_RING_THREAD */
124
#endif
/* ifndef _YAF_RING_H_ */