[Qemu-devel] Re: [PATCH 04/13] Add ThreadletQueue.

2011-01-06 Thread Arun R Bharadwaj
* Stefan Hajnoczi stefa...@linux.vnet.ibm.com [2011-01-05 19:54:38]:

 On Tue, Jan 04, 2011 at 10:57:27AM +0530, Arun R Bharadwaj wrote:
  @@ -66,15 +81,10 @@ typedef struct PosixAioState {
   struct qemu_paiocb *first_aio;
   } PosixAioState;
   
  -
  -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
  -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
  -static pthread_t thread_id;
  +/* Default ThreadletQueue */
  +static ThreadletQueue globalqueue;
  +static int globalqueue_init;
   static pthread_attr_t attr;
 
  @@ -388,22 +375,24 @@ static void aio_thread(ThreadletWork *work)
   return;
   }
   
  -static void spawn_thread(void)
  +static void spawn_threadlet(ThreadletQueue *queue)
   {
  +pthread_t thread_id;
   sigset_t set, oldset;
   
  -cur_threads++;
  -idle_threads++;
  +queue-cur_threads++;
  +queue-idle_threads++;
   
   /* block all signals */
   if (sigfillset(set)) die(sigfillset);
   if (sigprocmask(SIG_SETMASK, set, oldset)) die(sigprocmask);
   
  -thread_create(thread_id, attr, threadlet_worker, NULL);
  +thread_create(thread_id, attr, threadlet_worker, queue);
   
   if (sigprocmask(SIG_SETMASK, oldset, NULL)) die(sigprocmask 
  restore);
   }
   
  +
   static void qemu_paio_submit(struct qemu_paiocb *aiocb)
   {
   qemu_mutex_lock(aiocb_mutex);
 
  @@ -682,16 +685,6 @@ int paio_init(void)
   qemu_aio_set_fd_handler(s-rfd, posix_aio_read, NULL, posix_aio_flush,
   posix_aio_process_queue, s);
   
  -ret = pthread_attr_init(attr);
  -if (ret)
  -die2(ret, pthread_attr_init);
  -
  -ret = pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);
  -if (ret)
  -die2(ret, pthread_attr_setdetachstate);
 
 attr is no longer initialized but still used?
 

This initialization is still needed. Thanks for pointing this out.
This should be removed in patch 8/13 instead.

-arun
 Stefan



[Qemu-devel] Re: [PATCH 04/13] Add ThreadletQueue.

2011-01-05 Thread Stefan Hajnoczi
On Tue, Jan 04, 2011 at 10:57:27AM +0530, Arun R Bharadwaj wrote:
 @@ -66,15 +81,10 @@ typedef struct PosixAioState {
  struct qemu_paiocb *first_aio;
  } PosixAioState;
  
 -
 -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
 -static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
 -static pthread_t thread_id;
 +/* Default ThreadletQueue */
 +static ThreadletQueue globalqueue;
 +static int globalqueue_init;
  static pthread_attr_t attr;

 @@ -388,22 +375,24 @@ static void aio_thread(ThreadletWork *work)
  return;
  }
  
 -static void spawn_thread(void)
 +static void spawn_threadlet(ThreadletQueue *queue)
  {
 +pthread_t thread_id;
  sigset_t set, oldset;
  
 -cur_threads++;
 -idle_threads++;
 +queue-cur_threads++;
 +queue-idle_threads++;
  
  /* block all signals */
  if (sigfillset(set)) die(sigfillset);
  if (sigprocmask(SIG_SETMASK, set, oldset)) die(sigprocmask);
  
 -thread_create(thread_id, attr, threadlet_worker, NULL);
 +thread_create(thread_id, attr, threadlet_worker, queue);
  
  if (sigprocmask(SIG_SETMASK, oldset, NULL)) die(sigprocmask restore);
  }
  
 +
  static void qemu_paio_submit(struct qemu_paiocb *aiocb)
  {
  qemu_mutex_lock(aiocb_mutex);

 @@ -682,16 +685,6 @@ int paio_init(void)
  qemu_aio_set_fd_handler(s-rfd, posix_aio_read, NULL, posix_aio_flush,
  posix_aio_process_queue, s);
  
 -ret = pthread_attr_init(attr);
 -if (ret)
 -die2(ret, pthread_attr_init);
 -
 -ret = pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);
 -if (ret)
 -die2(ret, pthread_attr_setdetachstate);

attr is no longer initialized but still used?

Stefan