summaryrefslogtreecommitdiff
path: root/src/common/compat_threads.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-04-25 10:29:07 -0400
committerNick Mathewson <nickm@torproject.org>2017-04-25 10:29:07 -0400
commit4266ec766af8e210ac52f597699b44818960ee39 (patch)
tree902ce2bd58a59f78b8317e2277ecddbf233cdae3 /src/common/compat_threads.h
parent91dd4a00f7d4891e24187a849933547128aeeb9f (diff)
downloadtor-4266ec766af8e210ac52f597699b44818960ee39.tar.gz
tor-4266ec766af8e210ac52f597699b44818960ee39.zip
Use atomic counters for compressor allocation.
Diffstat (limited to 'src/common/compat_threads.h')
-rw-r--r--src/common/compat_threads.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/common/compat_threads.h b/src/common/compat_threads.h
index 2943573b23..9fa3d0d0b7 100644
--- a/src/common/compat_threads.h
+++ b/src/common/compat_threads.h
@@ -147,5 +147,19 @@ void *tor_threadlocal_get(tor_threadlocal_t *threadlocal);
*/
void tor_threadlocal_set(tor_threadlocal_t *threadlocal, void *value);
+/**
+ * Atomic counter type; holds a size_t value.
+ */
+typedef struct atomic_counter_t {
+ tor_mutex_t mutex;
+ size_t val;
+} atomic_counter_t;
+
+void atomic_counter_init(atomic_counter_t *counter);
+void atomic_counter_destroy(atomic_counter_t *counter);
+void atomic_counter_add(atomic_counter_t *counter, size_t add);
+void atomic_counter_sub(atomic_counter_t *counter, size_t sub);
+size_t atomic_counter_get(atomic_counter_t *counter);
+
#endif