void sc_finalize (void) { int i; int retval; /* sc_packages is static and thus initialized to all zeros */ for (i = SC_MAX_PACKAGES - 1; i >= 0; --i) if (sc_packages[i].is_registered) sc_package_unregister (i); SC_ASSERT (sc_num_packages == 0); sc_memory_check (-1); sc_set_signal_handler (0); sc_mpicomm = MPI_COMM_NULL; sc_print_backtrace = 0; sc_identifier = -1; /* close trace file */ if (sc_trace_file != NULL) { retval = fclose (sc_trace_file); SC_CHECK_ABORT (!retval, "Trace file close"); sc_trace_file = NULL; } }
void sc_package_unregister (int package_id) { #ifdef SC_ENABLE_PTHREAD int i; #endif sc_package_t *p; SC_CHECK_ABORT (sc_package_is_registered (package_id), "Package not registered"); sc_memory_check (package_id); p = sc_packages + package_id; p->is_registered = 0; p->log_handler = NULL; p->log_threshold = SC_LP_DEFAULT; p->malloc_count = p->free_count = 0; p->rc_active = 0; #ifdef SC_ENABLE_PTHREAD i = pthread_mutex_destroy (&p->mutex); SC_CHECK_ABORTF (i == 0, "Mutex destroy failed for package %s", p->name); #endif p->name = p->full = NULL; --sc_num_packages; }
void sc_package_unregister (int package_id) { sc_package_t *p; SC_CHECK_ABORT (sc_package_is_registered (package_id), "Package not registered"); sc_memory_check (package_id); p = sc_packages + package_id; p->is_registered = 0; p->log_handler = NULL; p->log_threshold = SC_LP_DEFAULT; p->malloc_count = p->free_count = 0; p->name = p->full = NULL; --sc_num_packages; }
void sc_finalize (void) { int i; int retval; #if defined(SC_ENABLE_MPI) && defined(SC_ENABLE_MPICOMMSHARED) sc_mpi_comm_detach_node_comms (sc_mpicomm); #endif /* sc_packages is static and thus initialized to all zeros */ for (i = sc_num_packages_alloc - 1; i >= 0; --i) if (sc_packages[i].is_registered) sc_package_unregister (i); SC_ASSERT (sc_num_packages == 0); sc_memory_check (-1); free (sc_packages); sc_packages = NULL; sc_num_packages_alloc = 0; sc_set_signal_handler (0); sc_mpicomm = sc_MPI_COMM_NULL; sc_print_backtrace = 0; sc_identifier = -1; /* close trace file */ if (sc_trace_file != NULL) { retval = fclose (sc_trace_file); SC_CHECK_ABORT (!retval, "Trace file close"); sc_trace_file = NULL; } }