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);
}
Exemplo n.º 3
0
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]);
	}
}