X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=ucw%2Fworkqueue.h;h=5073b345fe1c5c4d5e0bc45c117b25937a07b52f;hb=bc5f818d21b7aceaf2c0e263b00aa4295211d8f9;hp=bf2b8dac9b3340e101fb6f434b76b20251d15652;hpb=1cf8ac51f5495ccd5187dc220ffc69e95d6e0cfc;p=libucw.git diff --git a/ucw/workqueue.h b/ucw/workqueue.h index bf2b8dac..5073b345 100644 --- a/ucw/workqueue.h +++ b/ucw/workqueue.h @@ -10,6 +10,21 @@ #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 +#include #include @@ -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 };