summaryrefslogtreecommitdiff
path: root/concurrency.c
diff options
context:
space:
mode:
Diffstat (limited to 'concurrency.c')
-rw-r--r--concurrency.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/concurrency.c b/concurrency.c
index c01426d..f35f329 100644
--- a/concurrency.c
+++ b/concurrency.c
@@ -260,6 +260,7 @@ taskproperty(vlong t, vlong p)
{
ThreadData *td = nil;
Array *res = nil;
+ int mailcount = 0;
lock(&threadlock);
for(int i = 0; i < nthreads && td == nil; i++)
if(threads[i]->id == t)
@@ -280,6 +281,13 @@ taskproperty(vlong t, vlong p)
case 3: /* used stacksize */
res = mkscalarint(stackused());
break;
+ case 4: /* messages in mailbox */
+ qlock(&td->lock);
+ for(Mail *tmp = td->mail; tmp != nil; tmp = tmp->next)
+ mailcount++;
+ qunlock(&td->lock);
+ res = mkscalarint(mailcount);
+ break;
default:
unlock(&threadlock);
throwerror(L"Invalid task property", EDomain);