1*4418919fSjohnjiang /* SPDX-License-Identifier: BSD-3-Clause
2*4418919fSjohnjiang  * Copyright(c) 2019 Intel Corporation
3*4418919fSjohnjiang  */
4*4418919fSjohnjiang 
5*4418919fSjohnjiang #include "rte_stack.h"
6*4418919fSjohnjiang 
7*4418919fSjohnjiang void
rte_stack_std_init(struct rte_stack * s)8*4418919fSjohnjiang rte_stack_std_init(struct rte_stack *s)
9*4418919fSjohnjiang {
10*4418919fSjohnjiang 	rte_spinlock_init(&s->stack_std.lock);
11*4418919fSjohnjiang }
12*4418919fSjohnjiang 
13*4418919fSjohnjiang ssize_t
rte_stack_std_get_memsize(unsigned int count)14*4418919fSjohnjiang rte_stack_std_get_memsize(unsigned int count)
15*4418919fSjohnjiang {
16*4418919fSjohnjiang 	ssize_t sz = sizeof(struct rte_stack);
17*4418919fSjohnjiang 
18*4418919fSjohnjiang 	sz += RTE_CACHE_LINE_ROUNDUP(count * sizeof(void *));
19*4418919fSjohnjiang 
20*4418919fSjohnjiang 	/* Add padding to avoid false sharing conflicts caused by
21*4418919fSjohnjiang 	 * next-line hardware prefetchers.
22*4418919fSjohnjiang 	 */
23*4418919fSjohnjiang 	sz += 2 * RTE_CACHE_LINE_SIZE;
24*4418919fSjohnjiang 
25*4418919fSjohnjiang 	return sz;
26*4418919fSjohnjiang }
27