summaryrefslogtreecommitdiffstats
path: root/workqueue.c
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2024-11-06 11:56:01 +0000
committerOmar Rizwan <omar@omar.website>2024-11-06 11:56:01 +0000
commitecfb20bd2f88de3efaa48c824d8b763a0525d4bf (patch)
treecdf178d6bfd2961817e826de7e0391724ab1e421 /workqueue.c
parentweb/threads: Show work queue items in more detail (diff)
downloadfolk-ecfb20bd2f88de3efaa48c824d8b763a0525d4bf.tar.gz
folk-ecfb20bd2f88de3efaa48c824d8b763a0525d4bf.zip
WIP: report workqueue sizes on steal trace
Diffstat (limited to 'workqueue.c')
-rw-r--r--workqueue.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/workqueue.c b/workqueue.c
index 032bc363..9d7238ea 100644
--- a/workqueue.c
+++ b/workqueue.c
@@ -183,3 +183,10 @@ int unsafe_workQueueCopy(WorkQueueItem* into, int maxn,
// FIXME: Return failure if anything has changed?
return j;
}
+ssize_t unsafe_workQueueSize(WorkQueue* q) {
+ size_t t = atomic_load_explicit(&q->top, memory_order_acquire);
+ atomic_thread_fence(memory_order_seq_cst);
+ size_t b = atomic_load_explicit(&q->bottom, memory_order_acquire);
+ ssize_t size = b - t;
+ return size;
+}