diff options
author | Nandana Dutt <nandana@google.com> | 2018-10-12 17:31:39 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-10-12 17:31:39 +0000 |
commit | 20403620348805fac031ba7b0a6b32aa06a4a856 (patch) | |
tree | 04a779c0ae25141caa7edac62599563979d78a2a | |
parent | e5e02ecbb9c07cef65ecc57a24957cd2a6fe00b3 (diff) | |
parent | cccbb5f588be607e76a85472bda5db7aa5f16c74 (diff) | |
download | native-oreo-mr1-1.2-iot-release.tar.gz |
Merge "Add a function to Dumpstate service to trigger a bugreport"android-o-mr1-iot-release-smart-display-r3oreo-mr1-1.2-iot-release
-rw-r--r-- | cmds/dumpstate/Android.bp | 13 | ||||
-rw-r--r-- | cmds/dumpstate/DumpstateService.cpp | 7 | ||||
-rw-r--r-- | cmds/dumpstate/DumpstateService.h | 3 | ||||
-rw-r--r-- | cmds/dumpstate/binder/android/os/DumpstateOptions.aidl | 23 | ||||
-rw-r--r-- | cmds/dumpstate/binder/android/os/DumpstateOptions.cpp | 46 | ||||
-rw-r--r-- | cmds/dumpstate/binder/android/os/DumpstateOptions.h | 39 | ||||
-rw-r--r-- | cmds/dumpstate/binder/android/os/IDumpstate.aidl | 10 |
7 files changed, 140 insertions, 1 deletions
diff --git a/cmds/dumpstate/Android.bp b/cmds/dumpstate/Android.bp index 5acc09d160..e185cbe94c 100644 --- a/cmds/dumpstate/Android.bp +++ b/cmds/dumpstate/Android.bp @@ -57,10 +57,21 @@ cc_library_shared { export_aidl_headers: true, }, srcs: [ - "binder/android/os/IDumpstate.aidl", + "binder/android/os/DumpstateOptions.cpp", + ":dumpstate_aidl", + ], + export_include_dirs: ["binder"], +} + +filegroup { + name: "dumpstate_aidl", + srcs: [ "binder/android/os/IDumpstateListener.aidl", "binder/android/os/IDumpstateToken.aidl", + //"binder/android/os/DumpstateOptions.aidl", + "binder/android/os/IDumpstate.aidl", ], + path: "binder", } cc_defaults { diff --git a/cmds/dumpstate/DumpstateService.cpp b/cmds/dumpstate/DumpstateService.cpp index 49a78e751b..260ea4b057 100644 --- a/cmds/dumpstate/DumpstateService.cpp +++ b/cmds/dumpstate/DumpstateService.cpp @@ -77,6 +77,13 @@ binder::Status DumpstateService::setListener(const std::string& name, return binder::Status::ok(); } +binder::Status DumpstateService::startBugreport(int, const sp<IDumpstateListener>&, + const DumpstateOptions&, int32_t* returned_id) { + // TODO: fork to handle the bugreport request and return the process id or a request id here. + *returned_id = -1; + return binder::Status::ok(); +} + status_t DumpstateService::dump(int fd, const Vector<String16>&) { dprintf(fd, "id: %d\n", ds_.id_); dprintf(fd, "pid: %d\n", ds_.pid_); diff --git a/cmds/dumpstate/DumpstateService.h b/cmds/dumpstate/DumpstateService.h index 7bca24ae33..131aff30a3 100644 --- a/cmds/dumpstate/DumpstateService.h +++ b/cmds/dumpstate/DumpstateService.h @@ -41,6 +41,9 @@ class DumpstateService : public BinderService<DumpstateService>, public BnDumpst bool getSectionDetails, sp<IDumpstateToken>* returned_token) override; + binder::Status startBugreport(int fd, const sp<IDumpstateListener>& listener, + const DumpstateOptions& options, int32_t* returned_id) override; + private: Dumpstate& ds_; std::mutex lock_; diff --git a/cmds/dumpstate/binder/android/os/DumpstateOptions.aidl b/cmds/dumpstate/binder/android/os/DumpstateOptions.aidl new file mode 100644 index 0000000000..c1a7f158cf --- /dev/null +++ b/cmds/dumpstate/binder/android/os/DumpstateOptions.aidl @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2018, 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. + */ + +package android.os; + +/** + * Specifies arguments for IDumpstate. + * {@hide} + */ +parcelable DumpstateOptions cpp_header "android/os/DumpstateOptions.h"; diff --git a/cmds/dumpstate/binder/android/os/DumpstateOptions.cpp b/cmds/dumpstate/binder/android/os/DumpstateOptions.cpp new file mode 100644 index 0000000000..5654190bc4 --- /dev/null +++ b/cmds/dumpstate/binder/android/os/DumpstateOptions.cpp @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2018, 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 <android/os/DumpstateOptions.h> + +#include <binder/IBinder.h> +#include <binder/Parcel.h> + +namespace android { +namespace os { + +status_t DumpstateOptions::readFromParcel(const ::android::Parcel* parcel) { + if (status_t err = parcel->readBool(&get_section_details)) { + return err; + } + if (status_t err = parcel->readUtf8FromUtf16(&name)) { + return err; + } + return android::OK; +} + +status_t DumpstateOptions::writeToParcel(::android::Parcel* parcel) const { + if (status_t err = parcel->writeBool(get_section_details)) { + return err; + } + if (status_t err = parcel->writeUtf8AsUtf16(name)) { + return err; + } + return android::OK; +} + +} // namespace os +} // namespace android diff --git a/cmds/dumpstate/binder/android/os/DumpstateOptions.h b/cmds/dumpstate/binder/android/os/DumpstateOptions.h new file mode 100644 index 0000000000..a748e3c433 --- /dev/null +++ b/cmds/dumpstate/binder/android/os/DumpstateOptions.h @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2018, 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. + */ + +#ifndef ANDROID_OS_DUMPSTATE_OPTIONS_H_ +#define ANDROID_OS_DUMPSTATE_OPTIONS_H_ + +#include <binder/Parcelable.h> + +namespace android { +namespace os { + +struct DumpstateOptions : public android::Parcelable { + // If true the caller can get callbacks with per-section progress details. + bool get_section_details = false; + + // Name of the caller. + std::string name; + + status_t writeToParcel(android::Parcel* parcel) const override; + status_t readFromParcel(const android::Parcel* parcel) override; +}; + +} // namespace os +} // namespace android + +#endif // ANDROID_OS_DUMPSTATE_OPTIONS_H_ diff --git a/cmds/dumpstate/binder/android/os/IDumpstate.aidl b/cmds/dumpstate/binder/android/os/IDumpstate.aidl index 9b11b960c5..68a4f215e2 100644 --- a/cmds/dumpstate/binder/android/os/IDumpstate.aidl +++ b/cmds/dumpstate/binder/android/os/IDumpstate.aidl @@ -18,6 +18,7 @@ package android.os; import android.os.IDumpstateListener; import android.os.IDumpstateToken; +import android.os.DumpstateOptions; /** * Binder interface for the currently running dumpstate process. @@ -25,6 +26,8 @@ import android.os.IDumpstateToken; */ interface IDumpstate { + + // TODO: remove method once startBugReport is used by Shell. /* * Sets the listener for this dumpstate progress. * @@ -35,4 +38,11 @@ interface IDumpstate { */ IDumpstateToken setListener(@utf8InCpp String name, IDumpstateListener listener, boolean getSectionDetails); + + /* + * Starts a bugreport in a child process. + * + * Returns an identifier of the bugreport process running in the background. + */ + int startBugreport(int fd, IDumpstateListener listener, in DumpstateOptions options); } |