Main Page
Tutorials
Data Structures
Files
File List
Globals
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.14.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
* Released 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
*
35
* Contract No.: FA8702-15-D-0002
36
*
37
* Contractor Name: Carnegie Mellon University
38
*
39
* Contractor Address: 4500 Fifth Avenue, Pittsburgh, PA 15213
40
*
41
* The Government's rights to use, modify, reproduce, release, perform,
42
* display, or disclose this software are restricted by paragraph (b)(2) of
43
* the Rights in Noncommercial Computer Software and Noncommercial Computer
44
* Software Documentation clause contained in the above identified
45
* contract. No restrictions apply after the expiration date shown
46
* above. Any reproduction of the software or portions thereof marked with
47
* this legend must also reproduce the markings.
48
*
49
* Carnegie Mellon(R) and CERT(R) are registered in the U.S. Patent and
50
* Trademark Office by Carnegie Mellon University.
51
*
52
* This Software includes and/or makes use of Third-Party Software each
53
* subject to its own license.
54
*
55
* DM23-0544
56
* @DISTRIBUTION_STATEMENT_END@
57
* ------------------------------------------------------------------------
58
*/
59
60
#ifndef _YAF_RING_H_
61
#define _YAF_RING_H_
62
#include <yaf/autoinc.h>
63
64
struct
rgaRing_st;
65
typedef
struct
rgaRing_st rgaRing_t;
66
67
rgaRing_t *
68
rgaAlloc(
69
size_t
elt_sz,
70
size_t
cap);
71
72
void
73
rgaFree(
74
rgaRing_t *ring);
75
76
uint8_t *
77
rgaNextHead(
78
rgaRing_t *ring);
79
80
void
81
rgaRewindHead(
82
rgaRing_t *ring);
83
84
uint8_t *
85
rgaNextTail(
86
rgaRing_t *ring);
87
88
size_t
89
rgaCount(
90
rgaRing_t *ring);
91
92
size_t
93
rgaPeak(
94
rgaRing_t *ring);
95
96
#if YAF_RING_THREAD
97
98
rgaRing_t *
99
rgaAllocThreaded(
100
size_t
elt_sz,
101
size_t
cap);
102
103
uint8_t *
104
rgaWaitHead(
105
rgaRing_t *ring);
106
107
void
108
rgaReleaseHead(
109
rgaRing_t *ring,
110
size_t
rsv);
111
112
uint8_t *
113
rgaWaitTail(
114
rgaRing_t *ring);
115
116
void
117
rgaReleaseTail(
118
rgaRing_t *ring,
119
size_t
rsv);
120
121
void
122
rgaSetInterrupt(
123
rgaRing_t *ring);
124
125
void
126
rgaClearInterrupt(
127
rgaRing_t *ring);
128
129
#endif
/* if YAF_RING_THREAD */
130
#endif
/* ifndef _YAF_RING_H_ */