diff --git a/memtrack/aidl/default/Memtrack.cpp b/memtrack/aidl/default/Memtrack.cpp index 7361719002..000b25c030 100644 --- a/memtrack/aidl/default/Memtrack.cpp +++ b/memtrack/aidl/default/Memtrack.cpp @@ -35,6 +35,8 @@ ndk::ScopedAStatus Memtrack::getMemory(int pid, MemtrackType type, ndk::ScopedAStatus Memtrack::getGpuDeviceInfo(std::vector* _aidl_return) { _aidl_return->clear(); + DeviceInfo dev_info = {.id = 0, .name = "virtio_gpu"}; + _aidl_return->emplace_back(dev_info); return ndk::ScopedAStatus::ok(); } diff --git a/memtrack/aidl/vts/Android.bp b/memtrack/aidl/vts/Android.bp index ea36677237..c9743f43f6 100644 --- a/memtrack/aidl/vts/Android.bp +++ b/memtrack/aidl/vts/Android.bp @@ -7,6 +7,7 @@ cc_test { srcs: ["VtsHalMemtrackTargetTest.cpp"], shared_libs: [ "libbinder_ndk", + "libvintf", ], static_libs: [ "android.hardware.memtrack-unstable-ndk_platform", diff --git a/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp b/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp index 4d331014ba..2393c568c3 100644 --- a/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp +++ b/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp @@ -21,11 +21,15 @@ #include #include #include +#include using aidl::android::hardware::memtrack::DeviceInfo; using aidl::android::hardware::memtrack::IMemtrack; using aidl::android::hardware::memtrack::MemtrackRecord; using aidl::android::hardware::memtrack::MemtrackType; +using android::vintf::KernelVersion; +using android::vintf::RuntimeInfo; +using android::vintf::VintfObject; class MemtrackAidlTest : public testing::TestWithParam { public: @@ -75,7 +79,23 @@ TEST_P(MemtrackAidlTest, GetGpuDeviceInfo) { auto status = memtrack_->getGpuDeviceInfo(&device_info); + // Devices with < 5.10 kernels aren't required to provide an implementation of + // getGpuDeviceInfo(), and can return EX_UNSUPPORTED_OPERATION + if (status.getExceptionCode() == EX_UNSUPPORTED_OPERATION) { + KernelVersion min_kernel_version = KernelVersion(5, 10, 0); + KernelVersion kernel_version = VintfObject::GetInstance() + ->getRuntimeInfo(RuntimeInfo::FetchFlag::CPU_VERSION) + ->kernelVersion(); + EXPECT_LT(kernel_version, min_kernel_version) + << "Devices with 5.10 or later kernels must implement getGpuDeviceInfo()"; + return; + } + EXPECT_TRUE(status.isOk()); + EXPECT_FALSE(device_info.empty()); + for (auto device : device_info) { + EXPECT_FALSE(device.name.empty()); + } } GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(MemtrackAidlTest);