aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2016-10-12 15:49:37 +0200
committerEelco Dolstra <edolstra@gmail.com>2016-10-12 15:49:37 +0200
commit82e2a070e0d2a617cb47c285e176a3fff3ca64e8 (patch)
tree1244c7b943514a66e6495fceaaf7f198294e6a84 /src
parentedf9eb8181e01f6b2123e5690019cfeeb44fc1c2 (diff)
Add some functions needed by hydra
Diffstat (limited to 'src')
-rw-r--r--src/libutil/sync.hh8
-rw-r--r--src/libutil/util.cc8
-rw-r--r--src/libutil/util.hh1
3 files changed, 17 insertions, 0 deletions
diff --git a/src/libutil/sync.hh b/src/libutil/sync.hh
index ebe64ffbd..2aa074299 100644
--- a/src/libutil/sync.hh
+++ b/src/libutil/sync.hh
@@ -54,6 +54,14 @@ public:
cv.wait(lk);
}
+ template<class Rep, class Period>
+ void wait_for(std::condition_variable & cv,
+ const std::chrono::duration<Rep, Period> & duration)
+ {
+ assert(s);
+ cv.wait_for(lk, duration);
+ }
+
template<class Rep, class Period, class Predicate>
bool wait_for(std::condition_variable & cv,
const std::chrono::duration<Rep, Period> & duration,
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 1f923fe6b..ce16cc30a 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -778,6 +778,14 @@ void Pid::setKillSignal(int signal)
}
+pid_t Pid::release()
+{
+ pid_t p = pid;
+ pid = -1;
+ return p;
+}
+
+
void killUser(uid_t uid)
{
debug(format("killing all processes running under uid ‘%1%’") % uid);
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index 259c73260..50b96f7ed 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -220,6 +220,7 @@ public:
int wait(bool block);
void setSeparatePG(bool separatePG);
void setKillSignal(int signal);
+ pid_t release();
};