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