]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/workqueue.h
Merge branch 'dev-table'
[libucw.git] / ucw / workqueue.h
index bf2b8dac9b3340e101fb6f434b76b20251d15652..5073b345fe1c5c4d5e0bc45c117b25937a07b52f 100644 (file)
 #ifndef _UCW_WORKQUEUE_H
 #define _UCW_WORKQUEUE_H
 
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define raw_queue_cleanup ucw_raw_queue_cleanup
+#define raw_queue_get ucw_raw_queue_get
+#define raw_queue_init ucw_raw_queue_init
+#define raw_queue_put ucw_raw_queue_put
+#define raw_queue_try_get ucw_raw_queue_try_get
+#define work_queue_cleanup ucw_work_queue_cleanup
+#define work_queue_init ucw_work_queue_init
+#define work_submit ucw_work_submit
+#define work_try_wait ucw_work_try_wait
+#define work_wait ucw_work_wait
+#define worker_pool_cleanup ucw_worker_pool_cleanup
+#define worker_pool_init ucw_worker_pool_init
+#endif
+
 /*
  *  A thread pool is a set of threads receiving work requests from a common queue,
  *  each work request contains a pointer to a function inside the thread.
@@ -29,8 +44,8 @@
  *  until all of them finish.
  */
 
-#include "ucw/semaphore.h"
-#include "ucw/clists.h"
+#include <ucw/semaphore.h>
+#include <ucw/clists.h>
 
 #include <pthread.h>
 
@@ -46,14 +61,14 @@ struct raw_queue {                          // Generic queue with locking
   pthread_mutex_t queue_mutex;
   clist pri0_queue;                            // Ordinary queue for requests with priority=0
   struct work **pri_heap;                      // A heap for request with priority>0
-  uns heap_cnt, heap_max;
+  uint heap_cnt, heap_max;
   sem_t *queue_sem;                            // Number of requests queued
 };
 
 struct worker_pool {
   struct raw_queue requests;
-  uns num_threads;
-  uns stack_size;                              // 0 for default
+  uint num_threads;
+  uint stack_size;                             // 0 for default
   struct worker_thread *(*new_thread)(void);   // default: xmalloc the struct
   void (*free_thread)(struct worker_thread *t);        // default: xfree
   void (*init_thread)(struct worker_thread *t);        // default: empty
@@ -64,13 +79,13 @@ struct worker_pool {
 
 struct work_queue {
   struct worker_pool *pool;
-  uns nr_running;                              // Number of requests in service
+  uint nr_running;                             // Number of requests in service
   struct raw_queue finished;                   // Finished requests queue up here
 };
 
 struct work {                                  // A single request
   cnode n;
-  uns priority;
+  uint priority;
   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
 };