Search Linux Wireless

[PATCH 22/38] ra6w: add q.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Part of the split. Please, take a look at the cover letter for more details

Reviewed-by: Viktor Barna <viktor.barna.rj@xxxxxxxxxxxxxx>
Reviewed-by: Gal Gur <gal.gur.jx@xxxxxxxxxxx>
Signed-off-by: Alexander Savchenko <oleksandr.savchenko.dn@xxxxxxxxxxxxxx>
---
 drivers/net/wireless/renesas/ra6w/q.h | 39 +++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 drivers/net/wireless/renesas/ra6w/q.h

diff --git a/drivers/net/wireless/renesas/ra6w/q.h b/drivers/net/wireless/renesas/ra6w/q.h
new file mode 100644
index 000000000000..5f8a165ae84d
--- /dev/null
+++ b/drivers/net/wireless/renesas/ra6w/q.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) [2022-2025] Renesas Electronics Corporation and/or its affiliates.
+ */
+
+#ifndef RA6W_Q_H
+#define RA6W_Q_H
+
+#include <linux/kernel.h>
+#include <linux/circ_buf.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
+#include <linux/completion.h>
+
+struct ra6w_q {
+	size_t max_count;
+	unsigned long head;
+	unsigned long tail;
+	spinlock_t lock;
+	void **buf;
+};
+
+struct ra6w_q_event {
+	atomic_t condition;
+	wait_queue_head_t wait_queue;
+	u32 timeout;
+};
+
+int ra6w_q_init(struct ra6w_q *q, size_t max_count, size_t buf_size);
+bool ra6w_q_empty(struct ra6w_q *q);
+int ra6w_q_push(struct ra6w_q *q, void *buf);
+void *ra6w_q_pop(struct ra6w_q *q);
+void ra6w_q_event_set(struct ra6w_q_event *event, int event_val);
+bool ra6w_q_event_condition(const struct ra6w_q_event *event, int event_mask, int *ret_event);
+int ra6w_q_wait(struct ra6w_q_event *event, int event_mask);
+int ra6w_q_wait_timeout(struct ra6w_q_event *event, int event_mask);
+void ra6w_q_deinit(struct ra6w_q *q);
+
+#endif /* RA6W_Q_H */
-- 
2.17.1





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux