int main_gc(void) { struct hardware_t *hardware = NULL; unsigned short match = 0; log_shell_disable(); struct hardwares_t *htmp = hardwares; match = 0; while(htmp) { if(strcmp(htmp->listener->id, hw_mode) == 0) { hardware = htmp->listener; match = 1; break; } htmp = htmp->next; } if(match == 1 && hardware->deinit) { hardware->deinit(); } threads_gc(); options_gc(); settings_gc(); hardware_gc(); log_gc(); sfree((void *)&progname); sfree((void *)&settingsfile); return EXIT_SUCCESS; }
int main_gc(void) { main_loop = 0; log_shell_disable(); struct conf_hardware_t *tmp_confhw = conf_hardware; while(tmp_confhw) { if(tmp_confhw->hardware->deinit) { tmp_confhw->hardware->deinit(); } tmp_confhw = tmp_confhw->next; } threads_gc(); pthread_join(pth, NULL); options_gc(); settings_gc(); hardware_gc(); dso_gc(); log_gc(); sfree((void *)&progname); return EXIT_SUCCESS; }