lshal: add "Status" column and "Manifest HALs" section.
- Added "Status" column that has following values:
- alive: running hwbinder service
- registered;dead: registered, but service cannot accept calls
- declared: only in VINTF, not in hwservicemanager
- N/A: passthrough HALs
- Added a "Manifest HALs" section that lists all
HALs (hwbinder or passthrough) in device / framework manifest
Test: lshal_test
Bug: 71555570
Change-Id: I202b562ee73bcd49506bb43cc9af27b86f32651c
diff --git a/cmds/lshal/ListCommand.h b/cmds/lshal/ListCommand.h
index b10901c..f4d3fdf 100644
--- a/cmds/lshal/ListCommand.h
+++ b/cmds/lshal/ListCommand.h
@@ -50,7 +50,8 @@
enum class HalType {
BINDERIZED_SERVICES = 0,
PASSTHROUGH_CLIENTS,
- PASSTHROUGH_LIBRARIES
+ PASSTHROUGH_LIBRARIES,
+ VINTF_MANIFEST,
};
class ListCommand : public Command {
@@ -97,6 +98,7 @@
Status fetchPassthrough(const sp<::android::hidl::manager::V1_0::IServiceManager> &manager);
Status fetchBinderized(const sp<::android::hidl::manager::V1_0::IServiceManager> &manager);
Status fetchAllLibraries(const sp<::android::hidl::manager::V1_0::IServiceManager> &manager);
+ Status fetchManifestHals();
Status fetchBinderizedEntry(const sp<::android::hidl::manager::V1_0::IServiceManager> &manager,
TableEntry *entry);
@@ -146,12 +148,15 @@
bool addEntryWithInstance(const TableEntry &entry, vintf::HalManifest *manifest) const;
bool addEntryWithoutInstance(const TableEntry &entry, const vintf::HalManifest *manifest) const;
- // Helper function. Whether to list entries corresponding to a given HAL type.
- bool shouldReportHalType(const HalType &type) const;
+ // Helper function. Whether to fetch entries corresponding to a given HAL type.
+ bool shouldFetchHalType(const HalType &type) const;
+
+ void initFetchTypes();
Table mServicesTable{};
Table mPassthroughRefTable{};
Table mImplementationsTable{};
+ Table mManifestHalsTable{};
std::string mFileOutputPath;
TableEntryCompare mSortColumn = nullptr;
@@ -165,9 +170,10 @@
// If true, explanatory text are not emitted.
bool mNeat = false;
- // Type(s) of HAL associations to list. By default, report all.
- std::vector<HalType> mListTypes{HalType::BINDERIZED_SERVICES, HalType::PASSTHROUGH_CLIENTS,
- HalType::PASSTHROUGH_LIBRARIES};
+ // Type(s) of HAL associations to list.
+ std::vector<HalType> mListTypes{};
+ // Type(s) of HAL associations to fetch.
+ std::set<HalType> mFetchTypes{};
// If an entry does not exist, need to ask /proc/{pid}/cmdline to get it.
// If an entry exist but is an empty string, process might have died.