aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/support/stack_lockfree.h
diff options
context:
space:
mode:
authorGravatar Ken Payson <kpayson@google.com>2017-07-10 16:49:59 -0700
committerGravatar Ken Payson <kpayson@google.com>2017-07-10 16:49:59 -0700
commita4710a090d595e49ce5a4771c0b50c7d8aec21a5 (patch)
tree4ba5f632b0318904f653eb728eb20c0dc4ed6cee /src/core/lib/support/stack_lockfree.h
parenta38562e8e92cb6307cfacb4adb59218a4b5f057a (diff)
Revert "Remove lockfree-stack implementation that is no longer used"
Diffstat (limited to 'src/core/lib/support/stack_lockfree.h')
-rw-r--r--src/core/lib/support/stack_lockfree.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/lib/support/stack_lockfree.h b/src/core/lib/support/stack_lockfree.h
new file mode 100644
index 0000000000..6324211b72
--- /dev/null
+++ b/src/core/lib/support/stack_lockfree.h
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_SUPPORT_STACK_LOCKFREE_H
+#define GRPC_CORE_LIB_SUPPORT_STACK_LOCKFREE_H
+
+#include <stddef.h>
+
+typedef struct gpr_stack_lockfree gpr_stack_lockfree;
+
+/* This stack must specify the maximum number of entries to track.
+ The current implementation only allows up to 65534 entries */
+gpr_stack_lockfree *gpr_stack_lockfree_create(size_t entries);
+void gpr_stack_lockfree_destroy(gpr_stack_lockfree *stack);
+
+/* Pass in a valid entry number for the next stack entry */
+/* Returns 1 if this is the first element on the stack, 0 otherwise */
+int gpr_stack_lockfree_push(gpr_stack_lockfree *, int entry);
+
+/* Returns -1 on empty or the actual entry number */
+int gpr_stack_lockfree_pop(gpr_stack_lockfree *stack);
+
+#endif /* GRPC_CORE_LIB_SUPPORT_STACK_LOCKFREE_H */