@@ -92,6 +92,7 @@ HG_Prof_init(hg_class_t *hg_class) {
9292
9393 hg_prof_set_is_initialized (hg_private_class );
9494 hg_private_class -> num_pvars = NUM_PVARS ;
95+ hg_private_class -> session = NULL ;
9596
9697 return HG_SUCCESS ;
9798}
@@ -104,9 +105,9 @@ HG_Prof_finalize(hg_class_t *hg_class) {
104105
105106 if (hg_prof_get_is_initialized (hg_private_class )) {
106107 hg_prof_set_is_initialized (hg_private_class );
108+ hg_private_class -> session = NULL ;
107109 }
108110
109- fprintf (stderr , "[MERCURY_PROF_INTERFACE] Successfully shutting down profiling interface\n" );
110111 return HG_SUCCESS ;
111112}
112113
@@ -168,6 +169,21 @@ HG_Prof_pvar_session_create(hg_class_t *hg_class, hg_prof_pvar_session_t *sessio
168169 return HG_SUCCESS ;
169170}
170171
172+ /*---------------------------------------------------------------------------*/
173+ hg_return_t
174+ HG_Prof_pvar_session_destroy (hg_class_t * hg_class , hg_prof_pvar_session_t * session ) {
175+
176+ struct hg_private_class * hg_private_class = (struct hg_private_class * )(hg_class );
177+
178+ if (!hg_prof_get_is_initialized (hg_private_class ))
179+ return HG_NA_ERROR ;
180+
181+ free ((* session )-> pvar_handle_array );
182+ free ((* session ));
183+ hg_private_class -> session = NULL ;
184+
185+ return HG_SUCCESS ;
186+ }
171187/*---------------------------------------------------------------------------*/
172188hg_return_t
173189HG_Prof_pvar_handle_alloc (hg_prof_pvar_session_t session , int pvar_index , void * obj_handle , hg_prof_pvar_handle_t * handle , int * count ) {
@@ -201,7 +217,22 @@ HG_Prof_pvar_handle_alloc(hg_prof_pvar_session_t session, int pvar_index, void *
201217 /* Return handle */
202218 * handle = s .pvar_handle_array [pvar_index ];
203219
204- fprintf (stderr , "[MERCURY_PROF_INTERFACE] Successfully allocated handle for PVAR: %s\n" , (* s .pvar_handle_array [pvar_index ]).name );
220+ return HG_SUCCESS ;
221+ }
222+
223+ /*---------------------------------------------------------------------------*/
224+ hg_return_t
225+ HG_Prof_pvar_handle_free (hg_prof_pvar_session_t session , int pvar_index , hg_prof_pvar_handle_t * handle ) {
226+
227+ if (!hg_prof_get_session_is_initialized (session ))
228+ return HG_NA_ERROR ;
229+
230+
231+ struct hg_prof_pvar_session s = * session ;
232+ assert (s .pvar_handle_array [pvar_index ] == * handle );
233+ free (s .pvar_handle_array [pvar_index ]);
234+ s .pvar_handle_array [pvar_index ] = NULL ;
235+ * handle = NULL ;
205236
206237 return HG_SUCCESS ;
207238}
@@ -217,6 +248,17 @@ HG_Prof_pvar_start(hg_prof_pvar_session_t session, hg_prof_pvar_handle_t handle)
217248 return HG_SUCCESS ;
218249}
219250
251+ /*---------------------------------------------------------------------------*/
252+ hg_return_t
253+ HG_Prof_pvar_stop (hg_prof_pvar_session_t session , hg_prof_pvar_handle_t handle ) {
254+ if (!hg_prof_get_session_is_initialized (session ))
255+ return HG_NA_ERROR ;
256+
257+ if (!(* handle ).continuous && ((* handle ).is_started ))
258+ (* handle ).is_started = 0 ;
259+ return HG_SUCCESS ;
260+ }
261+
220262/*---------------------------------------------------------------------------*/
221263hg_return_t
222264HG_Prof_pvar_read (hg_prof_pvar_session_t session , hg_prof_pvar_handle_t handle , void * buf ) {
0 commit comments