ARGOBOTS
local.c
Go to the documentation of this file.
1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
2 /*
3  * See COPYRIGHT in top-level directory.
4  */
5 
6 #include "abti.h"
7 
8 /*****************************************************************************/
9 /* Private APIs */
10 /*****************************************************************************/
11 
12 static ABTI_local *ABTI_local_get_local_internal(void)
13 {
14  return lp_ABTI_local;
15 }
16 
17 static void ABTI_local_set_local_internal(ABTI_local *p_local)
18 {
19  lp_ABTI_local = p_local;
20 }
21 
22 static void *ABTI_local_get_local_ptr_internal(void)
23 {
24  return (void *)&lp_ABTI_local;
25 }
26 
27 ABTI_local_func gp_ABTI_local_func = { { 0 },
28  ABTI_local_get_local_internal,
29  ABTI_local_set_local_internal,
30  ABTI_local_get_local_ptr_internal,
31  { 0 } };
32 /* ES Local Data */
33 ABTD_XSTREAM_LOCAL ABTI_local *lp_ABTI_local = NULL;
34 
35 int ABTI_local_init(ABTI_local **pp_local)
36 {
37  int abt_errno = ABT_SUCCESS;
38  ABTI_CHECK_TRUE(lp_ABTI_local == NULL, ABT_ERR_OTHER);
39 
40  ABTI_local *p_local = (ABTI_local *)ABTU_malloc(sizeof(ABTI_local));
41  p_local->p_xstream = NULL;
42  p_local->p_thread = NULL;
43  p_local->p_task = NULL;
44  ABTI_local_set_local(p_local);
45 
46  ABTI_mem_init_local(p_local);
47 
48  ABTI_LOG_INIT();
49  *pp_local = p_local;
50 
51 fn_exit:
52  return abt_errno;
53 
54 fn_fail:
55  HANDLE_ERROR_FUNC_WITH_CODE(abt_errno);
56  goto fn_exit;
57 }
58 
59 int ABTI_local_finalize(ABTI_local **pp_local)
60 {
61  int abt_errno = ABT_SUCCESS;
62  ABTI_local *p_local = *pp_local;
63  ABTI_CHECK_TRUE(p_local != NULL, ABT_ERR_OTHER);
64  ABTI_mem_finalize_local(p_local);
65  ABTU_free(p_local);
66  lp_ABTI_local = NULL;
67  *pp_local = NULL;
68  ABTI_local_set_local(NULL);
69 
70  ABTI_LOG_FINALIZE();
71 
72 fn_exit:
73  return abt_errno;
74 
75 fn_fail:
76  HANDLE_ERROR_FUNC_WITH_CODE(abt_errno);
77  goto fn_exit;
78 }
ABTI_local_func gp_ABTI_local_func
Definition: local.c:27
static void * ABTU_malloc(size_t size)
Definition: abtu.h:39
#define ABT_ERR_OTHER
Definition: abt.h:67
#define HANDLE_ERROR_FUNC_WITH_CODE(n)
Definition: abti_error.h:241
#define ABT_SUCCESS
Definition: abt.h:64
ABTD_XSTREAM_LOCAL ABTI_local * lp_ABTI_local
Definition: local.c:33
static void ABTU_free(void *ptr)
Definition: abtu.h:32