/* This file is part of Pazpar2.
- Copyright (C) 2006-2009 Index Data
+ Copyright (C) 2006-2010 Index Data
Pazpar2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
void (*work_destroy)(void *work_data);
};
+static int input_queue_length = 0;
+
static void *sel_thread_handler(void *vp)
{
sel_thread_t p = (sel_thread_t) vp;
- while(1)
+ while (1)
{
struct work_item *work_this = 0;
/* wait for some work */
assert(p->input_queue);
work_this = queue_remove_last(&p->input_queue);
+ input_queue_length--;
+ yaz_log(YLOG_DEBUG, "input queue length after pop: %d", input_queue_length);
assert(work_this);
pthread_mutex_unlock(&p->mutex);
pthread_mutex_unlock(&p->mutex);
/* wake up select/poll with a single byte */
- write(p->fd[1], "", 1);
+ (void) write(p->fd[1], "", 1);
}
pthread_mutex_unlock(&p->mutex);
return 0;
p->thread_id = nmem_malloc(nmem, sizeof(*p->thread_id) * p->no_threads);
for (i = 0; i < p->no_threads; i++)
- pthread_create (p->thread_id + i, 0, sel_thread_handler, p);
+ pthread_create(p->thread_id + i, 0, sel_thread_handler, p);
return p;
}
work_p->data = data;
work_p->next = p->input_queue;
p->input_queue = work_p;
-
+ input_queue_length++;
+ yaz_log(YLOG_DEBUG, "sel_thread_add: Input queue length after push: %d", input_queue_length);
pthread_cond_signal(&p->input_data);
pthread_mutex_unlock(&p->mutex);
}
p->free_queue = work_this;
data = work_this->data;
- read(p->fd[0], read_buf, 1);
+ (void) read(p->fd[0], read_buf, 1);
}
pthread_mutex_unlock(&p->mutex);
return data;