blob: f65c67dbaad698d6586d7c1ac781e56d3f075449 [file] [log] [blame]
Brian Silvermand41b4422013-09-01 14:02:33 -07001#include "aos/common/condition.h"
2
3#include <inttypes.h>
4
5#include "aos/common/type_traits.h"
6
7namespace aos {
8
Brian Silverman08661c72013-09-01 17:24:38 -07009static_assert(shm_ok<condition_variable>::value,
10 "all C structs really should work in shared memory");
Brian Silvermand41b4422013-09-01 14:02:33 -070011static_assert(shm_ok<Condition>::value, "Condition should work"
12 " in shared memory");
13
Brian Silverman08661c72013-09-01 17:24:38 -070014Condition::Condition(Mutex *m) : impl_(), m_(m) {}
Brian Silvermand41b4422013-09-01 14:02:33 -070015
Brian Silverman08661c72013-09-01 17:24:38 -070016void Condition::Wait() {
17 condition_wait(&impl_, &m_->impl_);
Brian Silvermand41b4422013-09-01 14:02:33 -070018}
19
Brian Silverman08661c72013-09-01 17:24:38 -070020void Condition::Signal() {
21 condition_signal(&impl_);
Brian Silvermand41b4422013-09-01 14:02:33 -070022}
Brian Silverman08661c72013-09-01 17:24:38 -070023
24void Condition::Broadcast() {
25 condition_broadcast(&impl_);
Brian Silvermand41b4422013-09-01 14:02:33 -070026}
27
28} // namespace aos