blob: a5af314e1ae1950036946493bd2b7459bda47f4d [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "../condition-generic/condition-generic.h"
#include <lib/sync/condition.h>
struct MutexWrapper {
sync_mutex_t mtx;
void lock() __TA_ACQUIRE(mtx) { sync_mutex_lock(&mtx); }
void unlock() __TA_RELEASE(mtx) { sync_mutex_unlock(&mtx); }
};
struct ConditionWrapper {
sync_condition_t condition;
void signal() { sync_condition_signal(&condition); }
void broadcast() { sync_condition_broadcast(&condition); }
void wait(MutexWrapper* mtx) { sync_condition_wait(&condition, &mtx->mtx); }
zx_status_t timedwait(MutexWrapper* mtx, zx_duration_t timeout) {
return sync_condition_timedwait(&condition, &mtx->mtx, zx_deadline_after(timeout));
}
};
using Condition = GenericConditionTest<MutexWrapper, ConditionWrapper>;
BEGIN_TEST_CASE(sync_condition_tests)
RUN_TEST(Condition::condition_test);
RUN_TEST(Condition::condition_timeout_test);
END_TEST_CASE(sync_condition_tests)