fw/l1a: Add a message to safely count the length of a txqueue
authorAndreas Eversberg <jolly@eversberg.eu>
Sat, 25 Jun 2011 20:46:24 +0000 (22:46 +0200)
committerSylvain Munaut <tnt@246tNt.com>
Sat, 25 Jun 2011 20:46:24 +0000 (22:46 +0200)
(that is by locking)

Written-by: Andreas Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
src/target/firmware/include/layer1/async.h
src/target/firmware/layer1/async.c

index 93c5077..301625c 100644 (file)
@@ -26,6 +26,9 @@ static inline void l1a_unlock_sync(void)
 void l1a_txq_msgb_enq(struct llist_head *queue, struct msgb *msg);
 void l1a_meas_msgb_set(struct msgb *msg);
 
+/* safely count messages in the L1S TX queue */
+int l1a_txq_msgb_count(struct llist_head *queue);
+
 /* flush all pending msgb */
 void l1a_txq_msgb_flush(struct llist_head *queue);
 
index e5c80c7..c07b0b5 100644 (file)
@@ -59,6 +59,21 @@ void l1a_meas_msgb_set(struct msgb *msg)
        local_irq_restore(flags);
 }
 
+/* safely count messages in the L1S TX queue */
+int l1a_txq_msgb_count(struct llist_head *queue)
+{
+       unsigned long flags;
+       int num = 0;
+       struct llist_head *le;
+
+       local_firq_save(flags);
+       llist_for_each(le, queue)
+               num++;
+       local_irq_restore(flags);
+
+       return num;
+}
+
 /* safely flush all pending msgb */
 void l1a_txq_msgb_flush(struct llist_head *queue)
 {