]> mj.ucw.cz Git - libucw.git/commitdiff
Killed struct work.returned, it was a silly interface.
authorMartin Mares <mj@ucw.cz>
Tue, 12 Dec 2006 20:45:56 +0000 (21:45 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 12 Dec 2006 20:45:56 +0000 (21:45 +0100)
lib/asio.c
lib/workqueue.c
lib/workqueue.h

index d495c2d7becc3529d1388e08ab537b4a609bdd5b..710fd2e677a4d4985216ae40d478d2c77ef96df1 100644 (file)
@@ -176,7 +176,6 @@ asio_submit(struct asio_request *r)
   q->running_requests++;
   r->submitted = 1;
   r->work.go = asio_handler;
-  r->work.returned = NULL;
   work_submit(&q->queue, &r->work);
 }
 
index 3d87a74e191672c8e9a118e89a39e34ed948a648..d26ff18644c6984d50c307237199437a7140532a 100644 (file)
@@ -172,18 +172,13 @@ work_submit(struct work_queue *q, struct work *w)
 static struct work *
 work_do_wait(struct work_queue *q, int try)
 {
-  while (q->nr_running)
-    {
-      struct work *w = (try ? raw_queue_try_get : raw_queue_get)(&q->finished);
-      if (!w)
-       return NULL;
-      q->nr_running--;
-      if (w->returned)
-       w->returned(q, w);
-      else
-       return w;
-    }
-  return NULL;
+  if (!q->nr_running)
+    return NULL;
+  struct work *w = (try ? raw_queue_try_get : raw_queue_get)(&q->finished);
+  if (!w)
+    return NULL;
+  q->nr_running--;
+  return w;
 }
 
 struct work *
index c16904abc2c694b0d53cb56c408363befc5bbd23..e8c762b21ff0187252a69722f231d6ebde1bf0ed 100644 (file)
@@ -66,7 +66,6 @@ struct work {                                 // A single request
   cnode n;
   struct work_queue *reply_to;                 // Where to queue the request when it's finished
   void (*go)(struct worker_thread *t, struct work *w);         // Called inside the worker thread
-  void (*returned)(struct work_queue *q, struct work *w);      // Called when returned back, NULL if work_wait should return
 };
 
 void worker_pool_init(struct worker_pool *p);