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