summaryrefslogtreecommitdiffstats
path: root/kernel/queue.h
diff options
context:
space:
mode:
authorLars Müller2008-03-01 19:30:38 +0100
committerLars Müller2008-03-01 19:30:38 +0100
commit868fec1f8eca7c344fc9ac057b7418331299d9ce (patch)
treec07cdf11db710dc495c3c7a513cc0f8fd68d6626 /kernel/queue.h
downloaddnbd-868fec1f8eca7c344fc9ac057b7418331299d9ce.tar.gz
dnbd-868fec1f8eca7c344fc9ac057b7418331299d9ce.tar.xz
dnbd-868fec1f8eca7c344fc9ac057b7418331299d9ce.zip
Import dnbd* from the former openslx-contrib repo as of revision 92.
openslx-contrib is currently read only and will get removed in some days. git-svn-id: http://svn.openslx.org/svn/openslx/contrib/dnbd/trunk@1592 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'kernel/queue.h')
-rw-r--r--kernel/queue.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/kernel/queue.h b/kernel/queue.h
new file mode 100644
index 0000000..f349637
--- /dev/null
+++ b/kernel/queue.h
@@ -0,0 +1,29 @@
+#ifndef LINUX_DNBD_QUEUE_H
+#define LINUX_DNBD_QUEUE_H 1
+
+#include <linux/spinlock.h>
+#include <asm/semaphore.h>
+#include <linux/list.h>
+#include <linux/wait.h>
+
+/* queue structure used for rx_queue and tx_queue */
+struct dnbd_queue {
+ spinlock_t lock;
+ struct semaphore sema;
+ struct list_head head;
+ wait_queue_head_t waiters;
+};
+
+typedef struct dnbd_queue dnbd_queue_t;
+
+/* functions */
+void dnbd_enq_request(dnbd_queue_t * q, struct request *req, int wakeup);
+struct request *dnbd_deq_request(dnbd_queue_t * q);
+struct request *dnbd_deq_request_handle(dnbd_queue_t * q, uint64_t pos);
+struct request *dnbd_try_deq_request(dnbd_queue_t * q);
+void dnbd_mark_old_requests(dnbd_queue_t * q);
+int dnbd_requeue_requests(dnbd_queue_t * to, dnbd_queue_t * from, unsigned long timeout);
+void dnbd_error_old_requests(dnbd_queue_t * q);
+
+
+#endif /* LINUX_QUEUE_H */