summaryrefslogtreecommitdiffstats
path: root/src/cmd/fossil/periodic.c
diff options
context:
space:
mode:
authorDavid du Colombier <0intro@gmail.com>2013-09-23 23:16:25 +0200
committerDavid du Colombier <0intro@gmail.com>2013-09-23 23:16:25 +0200
commit4b5766580559d101dd1c29cc575b3ffa9f51c2d7 (patch)
treef35364a39e255b1336482ee30217d68279ba8699 /src/cmd/fossil/periodic.c
parent6f4d00ee45693290fae042b27536b54f77b96acd (diff)
downloadplan9port-4b5766580559d101dd1c29cc575b3ffa9f51c2d7.tar.gz
plan9port-4b5766580559d101dd1c29cc575b3ffa9f51c2d7.zip
fossil: move from liboventi to libthread and libventi
R=rsc https://codereview.appspot.com/13504049
Diffstat (limited to 'src/cmd/fossil/periodic.c')
-rw-r--r--src/cmd/fossil/periodic.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/cmd/fossil/periodic.c b/src/cmd/fossil/periodic.c
index 8a0c2084..634f975d 100644
--- a/src/cmd/fossil/periodic.c
+++ b/src/cmd/fossil/periodic.c
@@ -4,7 +4,7 @@
#include "error.h"
struct Periodic {
- VtLock *lk;
+ QLock lk;
int die; /* flag: quit if set */
void (*f)(void*); /* call this each period */
void *a; /* argument to f */
@@ -18,15 +18,14 @@ periodicAlloc(void (*f)(void*), void *a, int msec)
{
Periodic *p;
- p = vtMemAllocZ(sizeof(Periodic));
- p->lk = vtLockAlloc();
+ p = vtmallocz(sizeof(Periodic));
p->f = f;
p->a = a;
p->msec = msec;
if(p->msec < 10)
p->msec = 10;
- vtThread(periodicThread, p);
+ proccreate(periodicThread, p, STACK);
return p;
}
@@ -35,16 +34,15 @@ periodicKill(Periodic *p)
{
if(p == nil)
return;
- vtLock(p->lk);
+ qlock(&p->lk);
p->die = 1;
- vtUnlock(p->lk);
+ qunlock(&p->lk);
}
static void
periodicFree(Periodic *p)
{
- vtLockFree(p->lk);
- vtMemFree(p);
+ vtfree(p);
}
static void
@@ -53,7 +51,7 @@ periodicThread(void *a)
Periodic *p = a;
vlong t, ct, ts; /* times in ms. */
- vtThreadSetName("periodic");
+ threadsetname("periodic");
ct = nsec() / 1000000;
t = ct + p->msec; /* call p->f at or after this time */
@@ -65,9 +63,9 @@ periodicThread(void *a)
if(ts > 0)
sleep(ts); /* wait for cycle's start */
- vtLock(p->lk);
+ qlock(&p->lk);
if(p->die){
- vtUnlock(p->lk);
+ qunlock(&p->lk);
break;
}
ct = nsec() / 1000000;
@@ -77,7 +75,7 @@ periodicThread(void *a)
while(t <= ct) /* advance t to future cycle start */
t += p->msec;
}
- vtUnlock(p->lk);
+ qunlock(&p->lk);
}
periodicFree(p);
}