xref: /dpdk/drivers/net/mlx5/linux/mlx5_flow_os.c (revision 9ad3a41ab2a10db0059e1decdbf3ec038f348e08)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2020 Mellanox Technologies, Ltd
3  */
4 
5 #include "mlx5_flow_os.h"
6 
7 #include <rte_thread.h>
8 
9 /* Key of thread specific flow workspace data. */
10 static rte_thread_key key_workspace;
11 
12 int
13 mlx5_flow_os_init_workspace_once(void)
14 {
15 	if (rte_thread_key_create(&key_workspace, flow_release_workspace)) {
16 		DRV_LOG(ERR, "Can't create flow workspace data thread key.");
17 		rte_errno = ENOMEM;
18 		return -rte_errno;
19 	}
20 	return 0;
21 }
22 
23 void *
24 mlx5_flow_os_get_specific_workspace(void)
25 {
26 	return rte_thread_value_get(key_workspace);
27 }
28 
29 int
30 mlx5_flow_os_set_specific_workspace(struct mlx5_flow_workspace *data)
31 {
32 	return rte_thread_value_set(key_workspace, data);
33 }
34 
35 void
36 mlx5_flow_os_release_workspace(void)
37 {
38 	rte_thread_key_delete(key_workspace);
39 }
40