#include "lib/lib.h"
#include "lib/asio.h"
+#include "lib/threads.h"
#include <string.h>
#include <unistd.h>
static uns asio_num_users;
static struct worker_pool asio_wpool;
-static pthread_mutex_t asio_init_lock;
-
-static void CONSTRUCTOR
-asio_global_init(void)
-{
- pthread_mutex_init(&asio_init_lock, NULL);
-}
static void
asio_init_unlocked(void)
DBG("ASIO: INIT");
asio_wpool.num_threads = 1;
- asio_wpool.stack_size = 65536;
worker_pool_init(&asio_wpool);
}
void
asio_init_queue(struct asio_queue *q)
{
- pthread_mutex_lock(&asio_init_lock);
+ ucwlib_lock();
asio_init_unlocked();
- pthread_mutex_unlock(&asio_init_lock);
+ ucwlib_unlock();
DBG("ASIO: New queue %p", q);
ASSERT(q->buffer_size);
work_queue_cleanup(&q->queue);
- pthread_mutex_lock(&asio_init_lock);
+ ucwlib_lock();
asio_cleanup_unlocked();
- pthread_mutex_unlock(&asio_init_lock);
+ ucwlib_unlock();
}
struct asio_request *
q->running_requests++;
r->submitted = 1;
r->work.go = asio_handler;
- r->work.returned = NULL;
+ r->work.priority = 0;
work_submit(&q->queue, &r->work);
}