1*4d7e907cSAndroid Build Coastguard Worker #ifndef ANDROID_HARDWARE_TESTS_MULTITHREAD_V1_0_MULTITHREAD_H 2*4d7e907cSAndroid Build Coastguard Worker #define ANDROID_HARDWARE_TESTS_MULTITHREAD_V1_0_MULTITHREAD_H 3*4d7e907cSAndroid Build Coastguard Worker 4*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/tests/multithread/1.0/IMultithread.h> 5*4d7e907cSAndroid Build Coastguard Worker #include <hidl/Status.h> 6*4d7e907cSAndroid Build Coastguard Worker 7*4d7e907cSAndroid Build Coastguard Worker #include <chrono> 8*4d7e907cSAndroid Build Coastguard Worker #include <condition_variable> 9*4d7e907cSAndroid Build Coastguard Worker #include <mutex> 10*4d7e907cSAndroid Build Coastguard Worker 11*4d7e907cSAndroid Build Coastguard Worker namespace android { 12*4d7e907cSAndroid Build Coastguard Worker namespace hardware { 13*4d7e907cSAndroid Build Coastguard Worker namespace tests { 14*4d7e907cSAndroid Build Coastguard Worker namespace multithread { 15*4d7e907cSAndroid Build Coastguard Worker namespace V1_0 { 16*4d7e907cSAndroid Build Coastguard Worker namespace implementation { 17*4d7e907cSAndroid Build Coastguard Worker 18*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::tests::multithread::V1_0::IMultithread; 19*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::Return; 20*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::Void; 21*4d7e907cSAndroid Build Coastguard Worker 22*4d7e907cSAndroid Build Coastguard Worker using namespace std::chrono_literals; 23*4d7e907cSAndroid Build Coastguard Worker 24*4d7e907cSAndroid Build Coastguard Worker struct Multithread : public IMultithread { 25*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::tests::multithread::V1_0::IMultithread follow. 26*4d7e907cSAndroid Build Coastguard Worker virtual Return<void> setNumThreads(int32_t maxThreads, int32_t numThreads) override; 27*4d7e907cSAndroid Build Coastguard Worker virtual Return<bool> runNewThread() override; 28*4d7e907cSAndroid Build Coastguard Worker 29*4d7e907cSAndroid Build Coastguard Worker private: 30*4d7e907cSAndroid Build Coastguard Worker int32_t mNumThreads; 31*4d7e907cSAndroid Build Coastguard Worker bool mNoTimeout; 32*4d7e907cSAndroid Build Coastguard Worker 33*4d7e907cSAndroid Build Coastguard Worker std::condition_variable mCv; 34*4d7e907cSAndroid Build Coastguard Worker std::mutex mCvMutex; 35*4d7e907cSAndroid Build Coastguard Worker 36*4d7e907cSAndroid Build Coastguard Worker static constexpr auto kTimeoutDuration = 1000ms; 37*4d7e907cSAndroid Build Coastguard Worker }; 38*4d7e907cSAndroid Build Coastguard Worker 39*4d7e907cSAndroid Build Coastguard Worker extern "C" IMultithread* HIDL_FETCH_IMultithread(const char* name); 40*4d7e907cSAndroid Build Coastguard Worker 41*4d7e907cSAndroid Build Coastguard Worker } // namespace implementation 42*4d7e907cSAndroid Build Coastguard Worker } // namespace V1_0 43*4d7e907cSAndroid Build Coastguard Worker } // namespace multithread 44*4d7e907cSAndroid Build Coastguard Worker } // namespace tests 45*4d7e907cSAndroid Build Coastguard Worker } // namespace hardware 46*4d7e907cSAndroid Build Coastguard Worker } // namespace android 47*4d7e907cSAndroid Build Coastguard Worker 48*4d7e907cSAndroid Build Coastguard Worker #endif // ANDROID_HARDWARE_TESTS_MULTITHREAD_V1_0_MULTITHREAD_H 49