diff options
author | Roman Stratiienko <r.stratiienko@gmail.com> | 2022-12-28 18:52:10 +0200 |
---|---|---|
committer | Roman Stratiienko <r.stratiienko@gmail.com> | 2022-12-28 19:18:34 +0200 |
commit | 14bc764de0332e5a9a77e3fc1344650957e5cae2 (patch) | |
tree | 840dd3a288e0b3ca8ee67e36764dd486ec389787 | |
parent | d2cc73874c9877090c25d10745b523584fe4ebbb (diff) | |
download | drm_hwcomposer-14bc764de0332e5a9a77e3fc1344650957e5cae2.tar.gz |
drm_hwcomposer: Remove utils/worker from the project
utils/worker is no longer used and can be removed.
Change-Id: I5fc9bd2b3b8b0375622ee2446044d3b893756b30
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
-rw-r--r-- | .ci/Makefile | 2 | ||||
-rw-r--r-- | Android.bp | 20 | ||||
-rw-r--r-- | tests/Android.bp | 14 | ||||
-rw-r--r-- | tests/worker_test.cpp | 109 | ||||
-rw-r--r-- | utils/Worker.cpp | 93 | ||||
-rw-r--r-- | utils/Worker.h | 79 |
6 files changed, 0 insertions, 317 deletions
diff --git a/.ci/Makefile b/.ci/Makefile index 34ca915..de5196b 100644 --- a/.ci/Makefile +++ b/.ci/Makefile @@ -27,8 +27,6 @@ TIDY_FILES_OVERRIDE := \ hwc2_device/DrmHwcTwo.h:COARSE \ hwc2_device/HwcDisplay.cpp:COARSE \ hwc2_device/HwcDisplay.h:COARSE \ - tests/worker_test.cpp:COARSE \ - utils/Worker.h:COARSE \ utils/UniqueFd.h:FINE \ utils/log.h:FINE \ utils/properties.h:FINE \ @@ -19,25 +19,6 @@ cc_library_headers { } // ===================== -// libdrmhwc_utils.a -// ===================== -cc_library_static { - name: "libdrmhwc_utils", - - srcs: ["utils/Worker.cpp"], - - header_libs: ["drm_hwcomposer_headers"], - - cflags: [ - "-Wall", - "-Werror", - ], - - vendor: true, - -} - -// ===================== // hwcomposer.drm.so // ===================== cc_defaults { @@ -54,7 +35,6 @@ cc_defaults { "libutils", ], - static_libs: ["libdrmhwc_utils"], header_libs: ["drm_hwcomposer_headers"], cflags: [ diff --git a/tests/Android.bp b/tests/Android.bp index e3dc13b..a3c9dd2 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -19,20 +19,6 @@ cc_library_shared { ], } -cc_test { - name: "hwc-drm-tests", - - srcs: ["worker_test.cpp"], - - vendor: true, - header_libs: [ - "drm_hwcomposer_headers", - "libhardware_headers", - ], - static_libs: ["libdrmhwc_utils"], - shared_libs: ["hwcomposer.drm"], -} - // Tool for listening and dumping uevents cc_test { name: "hwc-drm-uevent-print", diff --git a/tests/worker_test.cpp b/tests/worker_test.cpp deleted file mode 100644 index ac0c5fc..0000000 --- a/tests/worker_test.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "utils/Worker.h" - -#include <gtest/gtest.h> -#include <hardware/hardware.h> - -#include <chrono> - -using android::Worker; - -struct TestWorker : public Worker { - TestWorker() : Worker("test-worker", HAL_PRIORITY_URGENT_DISPLAY){}; - - int Init() { - return InitWorker(); - } - - void Routine() override { - Lock(); - if (!enabled_) { - auto ret = WaitForSignalOrExitLocked(); - if (ret == -EINTR) { - Unlock(); - return; - } - // should only reached here if it was enabled - if (!enabled_) - printf("Shouldn't reach here while disabled %d %d\n", value, ret); - } - value++; - Unlock(); - } - - void Control(bool enable) { - bool changed = false; - Lock(); - if (enabled_ != enable) { - enabled_ = enable; - changed = true; - } - Unlock(); - - if (enable && changed) - Signal(); - } - - // NOLINTNEXTLINE: should not be public - int value{}; - - private: - bool enabled_{}; -}; - -struct WorkerTest : public testing::Test { - TestWorker worker; - - void SetUp() override { - worker.Init(); - } - - void small_delay() { - std::this_thread::sleep_for(std::chrono::milliseconds(20)); - } -}; - -// NOLINTNEXTLINE: required by gtest macros -TEST_F(WorkerTest, TestWorker) { - // already isInitialized so should succeed - ASSERT_TRUE(worker.initialized()); - - int val = worker.value; - small_delay(); - - // value shouldn't change when isInitialized - ASSERT_EQ(val, worker.value); - - worker.Control(true); - small_delay(); - - // while locked, value shouldn't be changing - worker.Lock(); - val = worker.value; - small_delay(); - ASSERT_EQ(val, worker.value); - worker.Unlock(); - - small_delay(); - // value should be different now - ASSERT_NE(val, worker.value); - - worker.Control(false); - worker.Lock(); - val = worker.value; - worker.Unlock(); - small_delay(); - - // value should be same - ASSERT_EQ(val, worker.value); - - worker.Exit(); - ASSERT_FALSE(worker.initialized()); -} - -// NOLINTNEXTLINE: required by gtest macros -TEST_F(WorkerTest, ExitWhileRunning) { - worker.Control(true); - - std::this_thread::sleep_for(std::chrono::milliseconds(50)); - worker.Exit(); -} diff --git a/utils/Worker.cpp b/utils/Worker.cpp deleted file mode 100644 index e1c7aee..0000000 --- a/utils/Worker.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2015-2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Worker.h" - -#include <sys/prctl.h> -#include <sys/resource.h> - -namespace android { - -Worker::Worker(const char *name, int priority) - : name_(name), priority_(priority), exit_(false), initialized_(false) { -} - -Worker::~Worker() { - Exit(); -} - -int Worker::InitWorker() { - const std::lock_guard<std::mutex> lk(mutex_); - if (initialized()) - return -EALREADY; - - thread_ = std::make_unique<std::thread>(&Worker::InternalRoutine, this); - initialized_ = true; - exit_ = false; - - return 0; -} - -void Worker::Exit() { - std::unique_lock<std::mutex> lk(mutex_); - exit_ = true; - if (initialized()) { - lk.unlock(); - cond_.notify_all(); - thread_->join(); - initialized_ = false; - } -} - -int Worker::WaitForSignalOrExitLocked(int64_t max_nanoseconds) { - int ret = 0; - if (should_exit()) - return -EINTR; - - std::unique_lock<std::mutex> lk(mutex_, std::adopt_lock); - if (max_nanoseconds < 0) { - cond_.wait(lk); - } else if (std::cv_status::timeout == - cond_.wait_for(lk, std::chrono::nanoseconds(max_nanoseconds))) { - ret = -ETIMEDOUT; - } - - // exit takes precedence on timeout - if (should_exit()) - ret = -EINTR; - - // release leaves mutex locked when going out of scope - lk.release(); - - return ret; -} - -void Worker::InternalRoutine() { - setpriority(PRIO_PROCESS, 0, priority_); - prctl(PR_SET_NAME, name_.c_str()); - - std::unique_lock<std::mutex> lk(mutex_, std::defer_lock); - - while (true) { - lk.lock(); - if (should_exit()) - return; - lk.unlock(); - - Routine(); - } -} -} // namespace android diff --git a/utils/Worker.h b/utils/Worker.h deleted file mode 100644 index b524d37..0000000 --- a/utils/Worker.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2015-2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <condition_variable> -#include <cstdint> -#include <cstdlib> -#include <mutex> -#include <string> -#include <thread> - -namespace android { - -class Worker { - public: - void Lock() { - mutex_.lock(); - } - void Unlock() { - mutex_.unlock(); - } - - void Signal() { - cond_.notify_all(); - } - void Exit(); - - bool initialized() const { - return initialized_; - } - - virtual ~Worker(); - - protected: - Worker(const char *name, int priority); - - int InitWorker(); - virtual void Routine() = 0; - - /* - * Must be called with the lock acquired. max_nanoseconds may be negative to - * indicate infinite timeout, otherwise it indicates the maximum time span to - * wait for a signal before returning. - * Returns -EINTR if interrupted by exit request, or -ETIMEDOUT if timed out - */ - int WaitForSignalOrExitLocked(int64_t max_nanoseconds = -1); - - bool should_exit() const { - return exit_; - } - - std::mutex mutex_; - std::condition_variable cond_; - - private: - void InternalRoutine(); - - std::string name_; - int priority_; - - std::unique_ptr<std::thread> thread_; - bool exit_; - bool initialized_; -}; -} // namespace android |