stack: introduce stack library
[dpdk.git] / lib / librte_stack / rte_stack_std.c
diff --git a/lib/librte_stack/rte_stack_std.c b/lib/librte_stack/rte_stack_std.c
new file mode 100644 (file)
index 0000000..0a310d7
--- /dev/null
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2019 Intel Corporation
+ */
+
+#include "rte_stack.h"
+
+void
+rte_stack_std_init(struct rte_stack *s)
+{
+       rte_spinlock_init(&s->stack_std.lock);
+}
+
+ssize_t
+rte_stack_std_get_memsize(unsigned int count)
+{
+       ssize_t sz = sizeof(struct rte_stack);
+
+       sz += RTE_CACHE_LINE_ROUNDUP(count * sizeof(void *));
+
+       /* Add padding to avoid false sharing conflicts caused by
+        * next-line hardware prefetchers.
+        */
+       sz += 2 * RTE_CACHE_LINE_SIZE;
+
+       return sz;
+}