X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsel_thread.c;h=0677761950048a9d99394e606d3808604a1f01e9;hb=d47362af8b5fa9d6298e783a662fa68ece809040;hp=c7bfacc5835271aef5282c1cee8b25641b4ec38b;hpb=197410f262777b4955b23be723afe80d5f63cf77;p=pazpar2-moved-to-github.git diff --git a/src/sel_thread.c b/src/sel_thread.c index c7bfacc..0677761 100644 --- a/src/sel_thread.c +++ b/src/sel_thread.c @@ -1,7 +1,5 @@ -/* $Id: sel_thread.c,v 1.4 2007-04-23 08:06:21 adam Exp $ - Copyright (c) 2006-2007, Index Data. - -This file is part of Pazpar2. +/* This file is part of Pazpar2. + 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 @@ -14,13 +12,13 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with Pazpar2; see the file LICENSE. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. - */ +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ #if HAVE_CONFIG_H -#include "cconfig.h" +#include #endif #include "sel_thread.h" @@ -71,11 +69,13 @@ struct sel_thread { 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 */ @@ -89,6 +89,8 @@ static void *sel_thread_handler(void *vp) 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); @@ -103,7 +105,7 @@ static void *sel_thread_handler(void *vp) 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; @@ -142,7 +144,7 @@ sel_thread_t sel_thread_create(void (*work_handler)(void *work_data), 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; } @@ -187,7 +189,8 @@ void sel_thread_add(sel_thread_t p, void *data) 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); } @@ -209,7 +212,7 @@ void *sel_thread_result(sel_thread_t p) 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; @@ -218,7 +221,9 @@ void *sel_thread_result(sel_thread_t p) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +