112b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol/*
212b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * Copyright (C) 2016 The Android Open Source Project
312b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol *
412b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * Licensed under the Apache License, Version 2.0 (the "License");
512b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * you may not use this file except in compliance with the License.
612b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * You may obtain a copy of the License at
712b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol *
812b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol *      http://www.apache.org/licenses/LICENSE-2.0
912b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol *
1012b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * Unless required by applicable law or agreed to in writing, software
1112b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * distributed under the License is distributed on an "AS IS" BASIS,
1212b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1312b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * See the License for the specific language governing permissions and
1412b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol * limitations under the License.
1512b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol */
1612b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol
1712b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol#ifndef CHRE_PLATFORM_SLPI_CONDITION_VARIABLE_BASE_H_
1812b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol#define CHRE_PLATFORM_SLPI_CONDITION_VARIABLE_BASE_H_
1912b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol
2012b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignolextern "C" {
2112b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol
2212b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol#include "qurt_cond.h"
2312b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol
2412b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol}  // extern "C"
2512b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol
26eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro#include "chre/platform/system_timer.h"
27eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro
287c179053b78d372121b7cf47bb8d534c3b87658aAndrew Rossignolnamespace chre {
297c179053b78d372121b7cf47bb8d534c3b87658aAndrew Rossignol
3012b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignolclass ConditionVariableBase {
3112b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol protected:
3212b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol  //! The underlying QURT condition variable.
3312b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol  qurt_cond_t mConditionVariable;
34eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro
35eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro  //! The timer used for timed condition variable wait.
36eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro  SystemTimer mTimeoutTimer;
37eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro
38eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro  //! Set to true when the timeout timer is initialized.
39eb3dde5a004878cc5e608ff992efc5f23db10f88Arthur Ishiguro  bool mTimerInitialized = false;
4012b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol};
4112b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol
427c179053b78d372121b7cf47bb8d534c3b87658aAndrew Rossignol}  // namespace chre
437c179053b78d372121b7cf47bb8d534c3b87658aAndrew Rossignol
4412b12ca0dde6dc87f391b962d06bca238f8e6708Andrew Rossignol#endif  // CHRE_PLATFORM_SLPI_CONDITION_VARIABLE_BASE_H_
45