void free_signal(signal* sig){ if (sig == NULL) return; free_signal(sig->next); if (sig != NULL) { kmem_cache_free(signalCache, sig); } }
void destroy_object(g_object* obj) { signal_t* p = obj->sigtbl; while (p - obj->sigtbl < obj->num_signals) { free_signal(p); ++p; } free((signal_t*)obj->sigtbl); }
void record_signals_on_stack() { if (!mdev_ready(recdev)) return; const char *devname = mdev_name(recdev); char destname[256] = ""; if (!devname) return; signal_list_t *n = pop_signal_stack(); if (!n) return; while (n) { printf("Recording %s%s\n", n->device_name, n->signal_name); if (strncmp(n->device_name, destname, 256)) { mapper_monitor_link(mon, n->device_name, devname, 0, 0); snprintf(destname, 256, "%s", n->device_name); } recdevice_add_input(n->device_name, n->signal_name, n->type, n->length); char signame[1024], recsigname[1024]; snprintf(signame, 1024, "%s%s", n->device_name, n->signal_name); snprintf(recsigname, 1024, "%s%s%s", devname, n->device_name, n->signal_name); mapper_monitor_connect(mon, signame, recsigname, 0, 0); free_signal(n); n = pop_signal_stack(); } recdevice_reset_generic_handler(); }
void free_ht2(void){ int i; for (i = 0; i < HASHTABLE_SIZE; i++){ free_signal(all2[i]); } }