blob: c67ea5fa611bc7362da81ca94bf648e6b2dd2aea [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
9static_assert(shm_ok<Condition>::value, "Condition should work"
10 " in shared memory");
11
Brian Silverman08661c72013-09-01 17:24:38 -070012Condition::Condition(Mutex *m) : impl_(), m_(m) {}
Brian Silvermand41b4422013-09-01 14:02:33 -070013
Brian Silverman08661c72013-09-01 17:24:38 -070014void Condition::Wait() {
15 condition_wait(&impl_, &m_->impl_);
Brian Silvermand41b4422013-09-01 14:02:33 -070016}
17
Brian Silverman08661c72013-09-01 17:24:38 -070018void Condition::Signal() {
Brian Silverman797e71e2013-09-06 17:29:39 -070019 condition_signal(&impl_, &m_->impl_);
Brian Silvermand41b4422013-09-01 14:02:33 -070020}
Brian Silverman08661c72013-09-01 17:24:38 -070021
22void Condition::Broadcast() {
Brian Silverman797e71e2013-09-06 17:29:39 -070023 condition_broadcast(&impl_, &m_->impl_);
Brian Silvermand41b4422013-09-01 14:02:33 -070024}
25
26} // namespace aos