Loading PERFORMANCE_OWNERS +1 −0 Original line number Diff line number Diff line Loading @@ -6,3 +6,4 @@ philipcuadra@google.com shayba@google.com jdduke@google.com shombert@google.com kevinjeon@google.com Ravenwood.bp +209 −23 Original line number Diff line number Diff line Loading @@ -26,10 +26,105 @@ java_library { } // Generate the stub/impl from framework-all, with hidden APIs. java_genrule { name: "framework-minus-apex.ravenwood-base", // This step takes several tens of seconds, so we manually shard it to multiple modules. // All the copies have to be kept in sync. // TODO: Do the sharding better. genrule_defaults { name: "framework-minus-apex.ravenwood-base_defaults", tools: ["hoststubgen"], srcs: [ ":framework-minus-apex-for-hoststubgen", ":ravenwood-framework-policies", ":ravenwood-standard-options", ":ravenwood-annotation-allowed-classes", ], out: [ "ravenwood.jar", // Following files are created just as FYI. "hoststubgen_framework-minus-apex_keep_all.txt", "hoststubgen_framework-minus-apex_dump.txt", "hoststubgen_framework-minus-apex.log", "hoststubgen_framework-minus-apex_stats.csv", "hoststubgen_framework-minus-apex_apis.csv", ], visibility: ["//visibility:private"], } java_genrule { name: "framework-minus-apex.ravenwood-base_X0", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 0 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X1", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 1 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X2", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 2 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X3", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 3 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + Loading @@ -44,39 +139,130 @@ java_genrule { "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X4", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 4 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X5", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 5 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } // Marge all the sharded jars java_genrule { name: "framework-minus-apex.ravenwood", defaults: ["ravenwood-internal-only-visibility-java"], cmd: "$(location merge_zips) $(out) $(in)", tools: ["merge_zips"], srcs: [ ":framework-minus-apex-for-hoststubgen", ":ravenwood-framework-policies", ":ravenwood-standard-options", ":ravenwood-annotation-allowed-classes", ":framework-minus-apex.ravenwood-base_X0{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X1{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X2{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X3{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X4{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X5{ravenwood.jar}", ], out: [ "ravenwood.jar", // Following files are created just as FYI. "hoststubgen_framework-minus-apex_keep_all.txt", "hoststubgen_framework-minus-apex_dump.txt", "framework-minus-apex.ravenwood.jar", ], } "hoststubgen_framework-minus-apex.log", "hoststubgen_framework-minus-apex_stats.csv", "hoststubgen_framework-minus-apex_apis.csv", // Merge the sharded text files genrule { name: "hoststubgen_framework-minus-apex_stats.csv", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_stats.csv}", ], out: ["hoststubgen_framework-minus-apex_stats.csv"], } genrule { name: "hoststubgen_framework-minus-apex_apis.csv", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_apis.csv}", ], out: ["hoststubgen_framework-minus-apex_apis.csv"], } // Extract the impl jar from "framework-minus-apex.ravenwood-base" for subsequent build rules. // Note this emits a "device side" output, so that ravenwood tests can (implicitly) // depend on it. java_genrule { name: "framework-minus-apex.ravenwood", genrule { name: "hoststubgen_framework-minus-apex_keep_all.txt", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cp $(in) $(out)", cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_keep_all.txt}", ], out: [ "framework-minus-apex.ravenwood.jar", out: ["hoststubgen_framework-minus-apex_keep_all.txt"], } genrule { name: "hoststubgen_framework-minus-apex_dump.txt", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_dump.txt}", ], out: ["hoststubgen_framework-minus-apex_dump.txt"], } java_library { Loading ZYGOTE_OWNERS +1 −1 Original line number Diff line number Diff line chriswailes@google.com hboehm@google.com maco@google.com narayan@google.com ngeoffray@google.com cmds/idmap2/idmap2d/Idmap2Service.cpp +8 −3 Original line number Diff line number Diff line Loading @@ -78,6 +78,11 @@ PolicyBitmask ConvertAidlArgToPolicyBitmask(int32_t arg) { namespace android::os { template <typename T> const T* Idmap2Service::GetPointer(const OwningPtr<T>& ptr) { return std::visit([](auto&& ptr) { return ptr.get(); }, ptr); } Status Idmap2Service::getIdmapPath(const std::string& overlay_path, int32_t user_id ATTRIBUTE_UNUSED, std::string* _aidl_return) { assert(_aidl_return); Loading Loading @@ -224,7 +229,7 @@ idmap2::Result<Idmap2Service::TargetResourceContainerPtr> Idmap2Service::GetTarg if (is_framework || (item.dev == st.st_dev && item.inode == st.st_ino && item.size == st.st_size && item.mtime.tv_sec == st.st_mtim.tv_sec && item.mtime.tv_nsec == st.st_mtim.tv_nsec)) { return {item.apk.get()}; return {item.apk}; } container_cache_.erase(cache_it); } Loading @@ -238,14 +243,14 @@ idmap2::Result<Idmap2Service::TargetResourceContainerPtr> Idmap2Service::GetTarg return {std::move(*target)}; } const auto res = target->get(); auto res = std::shared_ptr(std::move(*target)); std::lock_guard lock(container_cache_mutex_); container_cache_.emplace(target_path, CachedContainer { .dev = dev_t(st.st_dev), .inode = ino_t(st.st_ino), .size = st.st_size, .mtime = st.st_mtim, .apk = std::move(*target) .apk = res }); return {res}; } Loading cmds/idmap2/idmap2d/Idmap2Service.h +4 −13 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ class Idmap2Service : public BinderService<Idmap2Service>, public BnIdmap2 { ino_t inode; int64_t size; struct timespec mtime; std::unique_ptr<idmap2::TargetResourceContainer> apk; std::shared_ptr<idmap2::TargetResourceContainer> apk; }; std::unordered_map<std::string, CachedContainer> container_cache_; std::mutex container_cache_mutex_; Loading @@ -95,24 +95,15 @@ class Idmap2Service : public BinderService<Idmap2Service>, public BnIdmap2 { std::mutex frro_iter_mutex_; template <typename T> using MaybeUniquePtr = std::variant<std::unique_ptr<T>, T*>; using OwningPtr = std::variant<std::unique_ptr<T>, std::shared_ptr<T>>; using TargetResourceContainerPtr = MaybeUniquePtr<idmap2::TargetResourceContainer>; using TargetResourceContainerPtr = OwningPtr<idmap2::TargetResourceContainer>; idmap2::Result<TargetResourceContainerPtr> GetTargetContainer(const std::string& target_path); template <typename T> WARN_UNUSED static const T* GetPointer(const MaybeUniquePtr<T>& ptr); WARN_UNUSED static const T* GetPointer(const OwningPtr<T>& ptr); }; template <typename T> const T* Idmap2Service::GetPointer(const MaybeUniquePtr<T>& ptr) { auto u = std::get_if<T*>(&ptr); if (u != nullptr) { return *u; } return std::get<std::unique_ptr<T>>(ptr).get(); } } // namespace android::os #endif // IDMAP2_IDMAP2D_IDMAP2SERVICE_H_ Loading
PERFORMANCE_OWNERS +1 −0 Original line number Diff line number Diff line Loading @@ -6,3 +6,4 @@ philipcuadra@google.com shayba@google.com jdduke@google.com shombert@google.com kevinjeon@google.com
Ravenwood.bp +209 −23 Original line number Diff line number Diff line Loading @@ -26,10 +26,105 @@ java_library { } // Generate the stub/impl from framework-all, with hidden APIs. java_genrule { name: "framework-minus-apex.ravenwood-base", // This step takes several tens of seconds, so we manually shard it to multiple modules. // All the copies have to be kept in sync. // TODO: Do the sharding better. genrule_defaults { name: "framework-minus-apex.ravenwood-base_defaults", tools: ["hoststubgen"], srcs: [ ":framework-minus-apex-for-hoststubgen", ":ravenwood-framework-policies", ":ravenwood-standard-options", ":ravenwood-annotation-allowed-classes", ], out: [ "ravenwood.jar", // Following files are created just as FYI. "hoststubgen_framework-minus-apex_keep_all.txt", "hoststubgen_framework-minus-apex_dump.txt", "hoststubgen_framework-minus-apex.log", "hoststubgen_framework-minus-apex_stats.csv", "hoststubgen_framework-minus-apex_apis.csv", ], visibility: ["//visibility:private"], } java_genrule { name: "framework-minus-apex.ravenwood-base_X0", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 0 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X1", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 1 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X2", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 2 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X3", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 3 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + Loading @@ -44,39 +139,130 @@ java_genrule { "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X4", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 4 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } java_genrule { name: "framework-minus-apex.ravenwood-base_X5", defaults: ["framework-minus-apex.ravenwood-base_defaults"], cmd: "$(location hoststubgen) " + "--num-shards 6 --shard-index 5 " + // Only this line differs "@$(location :ravenwood-standard-options) " + "--debug-log $(location hoststubgen_framework-minus-apex.log) " + "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " + "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " + "--out-impl-jar $(location ravenwood.jar) " + "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " + "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " + "--in-jar $(location :framework-minus-apex-for-hoststubgen) " + "--policy-override-file $(location :ravenwood-framework-policies) " + "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ", } // Marge all the sharded jars java_genrule { name: "framework-minus-apex.ravenwood", defaults: ["ravenwood-internal-only-visibility-java"], cmd: "$(location merge_zips) $(out) $(in)", tools: ["merge_zips"], srcs: [ ":framework-minus-apex-for-hoststubgen", ":ravenwood-framework-policies", ":ravenwood-standard-options", ":ravenwood-annotation-allowed-classes", ":framework-minus-apex.ravenwood-base_X0{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X1{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X2{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X3{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X4{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X5{ravenwood.jar}", ], out: [ "ravenwood.jar", // Following files are created just as FYI. "hoststubgen_framework-minus-apex_keep_all.txt", "hoststubgen_framework-minus-apex_dump.txt", "framework-minus-apex.ravenwood.jar", ], } "hoststubgen_framework-minus-apex.log", "hoststubgen_framework-minus-apex_stats.csv", "hoststubgen_framework-minus-apex_apis.csv", // Merge the sharded text files genrule { name: "hoststubgen_framework-minus-apex_stats.csv", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_stats.csv}", ], out: ["hoststubgen_framework-minus-apex_stats.csv"], } genrule { name: "hoststubgen_framework-minus-apex_apis.csv", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_apis.csv}", ], out: ["hoststubgen_framework-minus-apex_apis.csv"], } // Extract the impl jar from "framework-minus-apex.ravenwood-base" for subsequent build rules. // Note this emits a "device side" output, so that ravenwood tests can (implicitly) // depend on it. java_genrule { name: "framework-minus-apex.ravenwood", genrule { name: "hoststubgen_framework-minus-apex_keep_all.txt", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cp $(in) $(out)", cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base{ravenwood.jar}", ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_keep_all.txt}", ], out: [ "framework-minus-apex.ravenwood.jar", out: ["hoststubgen_framework-minus-apex_keep_all.txt"], } genrule { name: "hoststubgen_framework-minus-apex_dump.txt", defaults: ["ravenwood-internal-only-visibility-genrule"], cmd: "cat $(in) > $(out)", srcs: [ ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_dump.txt}", ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_dump.txt}", ], out: ["hoststubgen_framework-minus-apex_dump.txt"], } java_library { Loading
ZYGOTE_OWNERS +1 −1 Original line number Diff line number Diff line chriswailes@google.com hboehm@google.com maco@google.com narayan@google.com ngeoffray@google.com
cmds/idmap2/idmap2d/Idmap2Service.cpp +8 −3 Original line number Diff line number Diff line Loading @@ -78,6 +78,11 @@ PolicyBitmask ConvertAidlArgToPolicyBitmask(int32_t arg) { namespace android::os { template <typename T> const T* Idmap2Service::GetPointer(const OwningPtr<T>& ptr) { return std::visit([](auto&& ptr) { return ptr.get(); }, ptr); } Status Idmap2Service::getIdmapPath(const std::string& overlay_path, int32_t user_id ATTRIBUTE_UNUSED, std::string* _aidl_return) { assert(_aidl_return); Loading Loading @@ -224,7 +229,7 @@ idmap2::Result<Idmap2Service::TargetResourceContainerPtr> Idmap2Service::GetTarg if (is_framework || (item.dev == st.st_dev && item.inode == st.st_ino && item.size == st.st_size && item.mtime.tv_sec == st.st_mtim.tv_sec && item.mtime.tv_nsec == st.st_mtim.tv_nsec)) { return {item.apk.get()}; return {item.apk}; } container_cache_.erase(cache_it); } Loading @@ -238,14 +243,14 @@ idmap2::Result<Idmap2Service::TargetResourceContainerPtr> Idmap2Service::GetTarg return {std::move(*target)}; } const auto res = target->get(); auto res = std::shared_ptr(std::move(*target)); std::lock_guard lock(container_cache_mutex_); container_cache_.emplace(target_path, CachedContainer { .dev = dev_t(st.st_dev), .inode = ino_t(st.st_ino), .size = st.st_size, .mtime = st.st_mtim, .apk = std::move(*target) .apk = res }); return {res}; } Loading
cmds/idmap2/idmap2d/Idmap2Service.h +4 −13 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ class Idmap2Service : public BinderService<Idmap2Service>, public BnIdmap2 { ino_t inode; int64_t size; struct timespec mtime; std::unique_ptr<idmap2::TargetResourceContainer> apk; std::shared_ptr<idmap2::TargetResourceContainer> apk; }; std::unordered_map<std::string, CachedContainer> container_cache_; std::mutex container_cache_mutex_; Loading @@ -95,24 +95,15 @@ class Idmap2Service : public BinderService<Idmap2Service>, public BnIdmap2 { std::mutex frro_iter_mutex_; template <typename T> using MaybeUniquePtr = std::variant<std::unique_ptr<T>, T*>; using OwningPtr = std::variant<std::unique_ptr<T>, std::shared_ptr<T>>; using TargetResourceContainerPtr = MaybeUniquePtr<idmap2::TargetResourceContainer>; using TargetResourceContainerPtr = OwningPtr<idmap2::TargetResourceContainer>; idmap2::Result<TargetResourceContainerPtr> GetTargetContainer(const std::string& target_path); template <typename T> WARN_UNUSED static const T* GetPointer(const MaybeUniquePtr<T>& ptr); WARN_UNUSED static const T* GetPointer(const OwningPtr<T>& ptr); }; template <typename T> const T* Idmap2Service::GetPointer(const MaybeUniquePtr<T>& ptr) { auto u = std::get_if<T*>(&ptr); if (u != nullptr) { return *u; } return std::get<std::unique_ptr<T>>(ptr).get(); } } // namespace android::os #endif // IDMAP2_IDMAP2D_IDMAP2SERVICE_H_