parent
acbc7f58dd
commit
67dd23b199
@ -0,0 +1,30 @@ |
||||
// Copyright (C) 2020 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. |
||||
|
||||
cc_binary { |
||||
name: "android.hardware.memtrack-service.exynos9810", |
||||
relative_install_path: "hw", |
||||
init_rc: ["memtrack-exynos9810.rc"], |
||||
vintf_fragments: ["memtrack-exynos9810.xml"], |
||||
vendor: true, |
||||
shared_libs: [ |
||||
"libbase", |
||||
"libbinder_ndk", |
||||
"android.hardware.memtrack-V1-ndk", |
||||
], |
||||
srcs: [ |
||||
"main.cpp", |
||||
"Memtrack.cpp", |
||||
], |
||||
} |
@ -0,0 +1,47 @@ |
||||
/*
|
||||
* Copyright (C) 2020 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 "Memtrack.h" |
||||
|
||||
namespace aidl { |
||||
namespace android { |
||||
namespace hardware { |
||||
namespace memtrack { |
||||
|
||||
ndk::ScopedAStatus Memtrack::getMemory(int pid, MemtrackType type, |
||||
std::vector<MemtrackRecord>* _aidl_return) { |
||||
if (pid < 0) { |
||||
return ndk::ScopedAStatus(AStatus_fromExceptionCode(EX_ILLEGAL_ARGUMENT)); |
||||
} |
||||
if (type != MemtrackType::OTHER && type != MemtrackType::GL && type != MemtrackType::GRAPHICS && |
||||
type != MemtrackType::MULTIMEDIA && type != MemtrackType::CAMERA) { |
||||
return ndk::ScopedAStatus(AStatus_fromExceptionCode(EX_UNSUPPORTED_OPERATION)); |
||||
} |
||||
_aidl_return->clear(); |
||||
return ndk::ScopedAStatus::ok(); |
||||
} |
||||
|
||||
ndk::ScopedAStatus Memtrack::getGpuDeviceInfo(std::vector<DeviceInfo>* _aidl_return) { |
||||
_aidl_return->clear(); |
||||
DeviceInfo dev_info = {.id = 0, .name = "virtio_gpu"}; |
||||
_aidl_return->emplace_back(dev_info); |
||||
return ndk::ScopedAStatus::ok(); |
||||
} |
||||
|
||||
} // namespace memtrack
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
} // namespace aidl
|
@ -0,0 +1,39 @@ |
||||
/*
|
||||
* Copyright (C) 2020 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 <aidl/android/hardware/memtrack/BnMemtrack.h> |
||||
#include <aidl/android/hardware/memtrack/DeviceInfo.h> |
||||
#include <aidl/android/hardware/memtrack/MemtrackRecord.h> |
||||
#include <aidl/android/hardware/memtrack/MemtrackType.h> |
||||
|
||||
namespace aidl { |
||||
namespace android { |
||||
namespace hardware { |
||||
namespace memtrack { |
||||
|
||||
class Memtrack : public BnMemtrack { |
||||
ndk::ScopedAStatus getMemory(int pid, MemtrackType type, |
||||
std::vector<MemtrackRecord>* _aidl_return) override; |
||||
|
||||
ndk::ScopedAStatus getGpuDeviceInfo(std::vector<DeviceInfo>* _aidl_return) override; |
||||
}; |
||||
|
||||
} // namespace memtrack
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
} // namespace aidl
|
@ -0,0 +1,36 @@ |
||||
/*
|
||||
* Copyright (C) 2020 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 "Memtrack.h" |
||||
|
||||
#include <android-base/logging.h> |
||||
#include <android/binder_manager.h> |
||||
#include <android/binder_process.h> |
||||
|
||||
using aidl::android::hardware::memtrack::Memtrack; |
||||
|
||||
int main() { |
||||
ABinderProcess_setThreadPoolMaxThreadCount(0); |
||||
std::shared_ptr<Memtrack> memtrack = ndk::SharedRefBase::make<Memtrack>(); |
||||
|
||||
const std::string instance = std::string() + Memtrack::descriptor + "/default"; |
||||
binder_status_t status = |
||||
AServiceManager_addService(memtrack->asBinder().get(), instance.c_str()); |
||||
CHECK_EQ(status, STATUS_OK); |
||||
|
||||
ABinderProcess_joinThreadPool(); |
||||
return EXIT_FAILURE; // Unreachable
|
||||
} |
@ -0,0 +1,4 @@ |
||||
service vendor.memtrack-default /vendor/bin/hw/android.hardware.memtrack-service.exynos9810 |
||||
class hal |
||||
user nobody |
||||
group system |
@ -0,0 +1,7 @@ |
||||
<manifest version="1.0" type="device"> |
||||
<hal format="aidl"> |
||||
<name>android.hardware.memtrack</name> |
||||
<fqname>IMemtrack/default</fqname> |
||||
</hal> |
||||
</manifest> |
||||
|
Loading…
Reference in new issue