xref: /aosp_15_r20/frameworks/av/services/mediaresourcemanager/ResourceManagerService.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker **
3*ec779b8eSAndroid Build Coastguard Worker ** Copyright 2015, The Android Open Source Project
4*ec779b8eSAndroid Build Coastguard Worker **
5*ec779b8eSAndroid Build Coastguard Worker ** Licensed under the Apache License, Version 2.0 (the "License");
6*ec779b8eSAndroid Build Coastguard Worker ** you may not use this file except in compliance with the License.
7*ec779b8eSAndroid Build Coastguard Worker ** You may obtain a copy of the License at
8*ec779b8eSAndroid Build Coastguard Worker **
9*ec779b8eSAndroid Build Coastguard Worker **     http://www.apache.org/licenses/LICENSE-2.0
10*ec779b8eSAndroid Build Coastguard Worker **
11*ec779b8eSAndroid Build Coastguard Worker ** Unless required by applicable law or agreed to in writing, software
12*ec779b8eSAndroid Build Coastguard Worker ** distributed under the License is distributed on an "AS IS" BASIS,
13*ec779b8eSAndroid Build Coastguard Worker ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*ec779b8eSAndroid Build Coastguard Worker ** See the License for the specific language governing permissions and
15*ec779b8eSAndroid Build Coastguard Worker ** limitations under the License.
16*ec779b8eSAndroid Build Coastguard Worker */
17*ec779b8eSAndroid Build Coastguard Worker 
18*ec779b8eSAndroid Build Coastguard Worker #ifndef ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H
19*ec779b8eSAndroid Build Coastguard Worker #define ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H
20*ec779b8eSAndroid Build Coastguard Worker 
21*ec779b8eSAndroid Build Coastguard Worker #include <map>
22*ec779b8eSAndroid Build Coastguard Worker #include <set>
23*ec779b8eSAndroid Build Coastguard Worker #include <mutex>
24*ec779b8eSAndroid Build Coastguard Worker #include <string>
25*ec779b8eSAndroid Build Coastguard Worker #include <vector>
26*ec779b8eSAndroid Build Coastguard Worker 
27*ec779b8eSAndroid Build Coastguard Worker #include <aidl/android/media/BnResourceManagerService.h>
28*ec779b8eSAndroid Build Coastguard Worker #include <media/MediaResource.h>
29*ec779b8eSAndroid Build Coastguard Worker #include <utils/Errors.h>
30*ec779b8eSAndroid Build Coastguard Worker #include <utils/String8.h>
31*ec779b8eSAndroid Build Coastguard Worker #include <utils/threads.h>
32*ec779b8eSAndroid Build Coastguard Worker 
33*ec779b8eSAndroid Build Coastguard Worker #include "ResourceManagerServiceUtils.h"
34*ec779b8eSAndroid Build Coastguard Worker 
35*ec779b8eSAndroid Build Coastguard Worker namespace android {
36*ec779b8eSAndroid Build Coastguard Worker 
37*ec779b8eSAndroid Build Coastguard Worker class ResourceObserverService;
38*ec779b8eSAndroid Build Coastguard Worker class ServiceLog;
39*ec779b8eSAndroid Build Coastguard Worker struct ProcessInfoInterface;
40*ec779b8eSAndroid Build Coastguard Worker class ResourceManagerMetrics;
41*ec779b8eSAndroid Build Coastguard Worker 
42*ec779b8eSAndroid Build Coastguard Worker using Status = ::ndk::ScopedAStatus;
43*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::IResourceManagerClient;
44*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::BnResourceManagerService;
45*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::MediaResourceParcel;
46*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::MediaResourcePolicyParcel;
47*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::ClientInfoParcel;
48*ec779b8eSAndroid Build Coastguard Worker using ::aidl::android::media::ClientConfigParcel;
49*ec779b8eSAndroid Build Coastguard Worker 
50*ec779b8eSAndroid Build Coastguard Worker class ResourceManagerService : public BnResourceManagerService {
51*ec779b8eSAndroid Build Coastguard Worker public:
52*ec779b8eSAndroid Build Coastguard Worker     struct SystemCallbackInterface : public RefBase {
53*ec779b8eSAndroid Build Coastguard Worker         virtual void noteStartVideo(int uid) = 0;
54*ec779b8eSAndroid Build Coastguard Worker         virtual void noteStopVideo(int uid) = 0;
55*ec779b8eSAndroid Build Coastguard Worker         virtual void noteResetVideo() = 0;
56*ec779b8eSAndroid Build Coastguard Worker         virtual bool requestCpusetBoost(bool enable) = 0;
57*ec779b8eSAndroid Build Coastguard Worker     };
58*ec779b8eSAndroid Build Coastguard Worker 
getServiceName()59*ec779b8eSAndroid Build Coastguard Worker     static char const *getServiceName() { return "media.resource_manager"; }
60*ec779b8eSAndroid Build Coastguard Worker     static void instantiate();
61*ec779b8eSAndroid Build Coastguard Worker 
62*ec779b8eSAndroid Build Coastguard Worker         // Static creation methods.
63*ec779b8eSAndroid Build Coastguard Worker     static std::shared_ptr<ResourceManagerService> Create();
64*ec779b8eSAndroid Build Coastguard Worker     static std::shared_ptr<ResourceManagerService> Create(
65*ec779b8eSAndroid Build Coastguard Worker         const sp<ProcessInfoInterface>& processInfo,
66*ec779b8eSAndroid Build Coastguard Worker         const sp<SystemCallbackInterface>& systemResource);
67*ec779b8eSAndroid Build Coastguard Worker 
68*ec779b8eSAndroid Build Coastguard Worker     virtual binder_status_t dump(
69*ec779b8eSAndroid Build Coastguard Worker             int /*fd*/, const char** /*args*/, uint32_t /*numArgs*/);
70*ec779b8eSAndroid Build Coastguard Worker 
71*ec779b8eSAndroid Build Coastguard Worker     ResourceManagerService();
72*ec779b8eSAndroid Build Coastguard Worker     explicit ResourceManagerService(const sp<ProcessInfoInterface> &processInfo,
73*ec779b8eSAndroid Build Coastguard Worker             const sp<SystemCallbackInterface> &systemResource);
74*ec779b8eSAndroid Build Coastguard Worker     virtual ~ResourceManagerService();
75*ec779b8eSAndroid Build Coastguard Worker 
76*ec779b8eSAndroid Build Coastguard Worker     virtual void setObserverService(
77*ec779b8eSAndroid Build Coastguard Worker             const std::shared_ptr<ResourceObserverService>& observerService);
78*ec779b8eSAndroid Build Coastguard Worker 
79*ec779b8eSAndroid Build Coastguard Worker     // IResourceManagerService interface
80*ec779b8eSAndroid Build Coastguard Worker     Status config(const std::vector<MediaResourcePolicyParcel>& policies) override;
81*ec779b8eSAndroid Build Coastguard Worker 
82*ec779b8eSAndroid Build Coastguard Worker     Status addResource(const ClientInfoParcel& clientInfo,
83*ec779b8eSAndroid Build Coastguard Worker                        const std::shared_ptr<IResourceManagerClient>& client,
84*ec779b8eSAndroid Build Coastguard Worker                        const std::vector<MediaResourceParcel>& resources) override;
85*ec779b8eSAndroid Build Coastguard Worker 
86*ec779b8eSAndroid Build Coastguard Worker     Status removeResource(const ClientInfoParcel& clientInfo,
87*ec779b8eSAndroid Build Coastguard Worker                           const std::vector<MediaResourceParcel>& resources) override;
88*ec779b8eSAndroid Build Coastguard Worker 
89*ec779b8eSAndroid Build Coastguard Worker     Status removeClient(const ClientInfoParcel& clientInfo) override;
90*ec779b8eSAndroid Build Coastguard Worker 
91*ec779b8eSAndroid Build Coastguard Worker     // Tries to reclaim resource from processes with lower priority than the calling process
92*ec779b8eSAndroid Build Coastguard Worker     // according to the requested resources.
93*ec779b8eSAndroid Build Coastguard Worker     // Returns true if any resource has been reclaimed, otherwise returns false.
94*ec779b8eSAndroid Build Coastguard Worker     Status reclaimResource(const ClientInfoParcel& clientInfo,
95*ec779b8eSAndroid Build Coastguard Worker                            const std::vector<MediaResourceParcel>& resources,
96*ec779b8eSAndroid Build Coastguard Worker                            bool* _aidl_return) override;
97*ec779b8eSAndroid Build Coastguard Worker 
98*ec779b8eSAndroid Build Coastguard Worker     Status overridePid(int32_t originalPid, int32_t newPid) override;
99*ec779b8eSAndroid Build Coastguard Worker 
100*ec779b8eSAndroid Build Coastguard Worker     Status overrideProcessInfo(const std::shared_ptr<IResourceManagerClient>& client,
101*ec779b8eSAndroid Build Coastguard Worker                                int32_t pid, int32_t procState, int32_t oomScore) override;
102*ec779b8eSAndroid Build Coastguard Worker 
103*ec779b8eSAndroid Build Coastguard Worker     Status markClientForPendingRemoval(const ClientInfoParcel& clientInfo) override;
104*ec779b8eSAndroid Build Coastguard Worker 
105*ec779b8eSAndroid Build Coastguard Worker     Status reclaimResourcesFromClientsPendingRemoval(int32_t pid) override;
106*ec779b8eSAndroid Build Coastguard Worker 
107*ec779b8eSAndroid Build Coastguard Worker     Status notifyClientCreated(const ClientInfoParcel& clientInfo) override;
108*ec779b8eSAndroid Build Coastguard Worker 
109*ec779b8eSAndroid Build Coastguard Worker     Status notifyClientStarted(const ClientConfigParcel& clientConfig) override;
110*ec779b8eSAndroid Build Coastguard Worker 
111*ec779b8eSAndroid Build Coastguard Worker     Status notifyClientStopped(const ClientConfigParcel& clientConfig) override;
112*ec779b8eSAndroid Build Coastguard Worker 
113*ec779b8eSAndroid Build Coastguard Worker     Status notifyClientConfigChanged(const ClientConfigParcel& clientConfig) override;
114*ec779b8eSAndroid Build Coastguard Worker 
115*ec779b8eSAndroid Build Coastguard Worker protected:
116*ec779b8eSAndroid Build Coastguard Worker     // To get notifications when a resource is added for the first time.
117*ec779b8eSAndroid Build Coastguard Worker     void onFirstAdded(const MediaResourceParcel& res, uid_t uid);
118*ec779b8eSAndroid Build Coastguard Worker     // To get notifications when a resource has been removed at last.
119*ec779b8eSAndroid Build Coastguard Worker     void onLastRemoved(const MediaResourceParcel& res, uid_t uid);
120*ec779b8eSAndroid Build Coastguard Worker 
121*ec779b8eSAndroid Build Coastguard Worker     // Reclaims resources from |clients|. Returns true if reclaim succeeded
122*ec779b8eSAndroid Build Coastguard Worker     // for all clients.
123*ec779b8eSAndroid Build Coastguard Worker     bool reclaimUnconditionallyFrom(const std::vector<ClientInfo>& targetClients);
124*ec779b8eSAndroid Build Coastguard Worker 
125*ec779b8eSAndroid Build Coastguard Worker     // A helper function that returns true if the callingPid has higher priority than pid.
126*ec779b8eSAndroid Build Coastguard Worker     // Returns false otherwise.
127*ec779b8eSAndroid Build Coastguard Worker     bool isCallingPriorityHigher_l(int callingPid, int pid);
128*ec779b8eSAndroid Build Coastguard Worker 
129*ec779b8eSAndroid Build Coastguard Worker     // To notify the metrics about client being released.
130*ec779b8eSAndroid Build Coastguard Worker     void notifyClientReleased(const ClientInfoParcel& clientInfo);
131*ec779b8eSAndroid Build Coastguard Worker 
132*ec779b8eSAndroid Build Coastguard Worker     virtual Status removeResource(const ClientInfoParcel& clientInfo, bool checkValid);
133*ec779b8eSAndroid Build Coastguard Worker 
134*ec779b8eSAndroid Build Coastguard Worker private:
135*ec779b8eSAndroid Build Coastguard Worker     friend class ResourceManagerServiceTest;
136*ec779b8eSAndroid Build Coastguard Worker     friend class ResourceManagerServiceTestBase;
137*ec779b8eSAndroid Build Coastguard Worker     friend class DeathNotifier;
138*ec779b8eSAndroid Build Coastguard Worker     friend class OverrideProcessInfoDeathNotifier;
139*ec779b8eSAndroid Build Coastguard Worker 
140*ec779b8eSAndroid Build Coastguard Worker     // Gets the client who owns biggest piece of specified resource type from pid.
141*ec779b8eSAndroid Build Coastguard Worker     // Returns false with no change to client if there are no clients holding resources of this
142*ec779b8eSAndroid Build Coastguard Worker     // type.
143*ec779b8eSAndroid Build Coastguard Worker     bool getBiggestClient_l(int pid, MediaResource::Type type,
144*ec779b8eSAndroid Build Coastguard Worker                             MediaResource::SubType subType,
145*ec779b8eSAndroid Build Coastguard Worker                             ClientInfo& clientsInfo,
146*ec779b8eSAndroid Build Coastguard Worker                             bool pendingRemovalOnly = false);
147*ec779b8eSAndroid Build Coastguard Worker 
148*ec779b8eSAndroid Build Coastguard Worker     // A helper function that gets the biggest clients of the process pid that
149*ec779b8eSAndroid Build Coastguard Worker     // is marked to be (pending) removed and has the needed resources.
150*ec779b8eSAndroid Build Coastguard Worker     bool getBiggestClientPendingRemoval_l(int pid, MediaResource::Type type,
151*ec779b8eSAndroid Build Coastguard Worker                                           MediaResource::SubType subType,
152*ec779b8eSAndroid Build Coastguard Worker                                           ClientInfo& clientsInfo);
153*ec779b8eSAndroid Build Coastguard Worker 
154*ec779b8eSAndroid Build Coastguard Worker     // From the list of clients, pick/select client(s) based on the reclaim policy.
155*ec779b8eSAndroid Build Coastguard Worker     void getClientForResource_l(const ResourceRequestInfo& resourceRequestInfo,
156*ec779b8eSAndroid Build Coastguard Worker                                 std::vector<ClientInfo>& clientsInfo);
157*ec779b8eSAndroid Build Coastguard Worker     // A helper function that pushes Reclaim Atom (for metric collection).
158*ec779b8eSAndroid Build Coastguard Worker     void pushReclaimAtom(const ClientInfoParcel& clientInfo,
159*ec779b8eSAndroid Build Coastguard Worker                          const std::vector<ClientInfo>& targetClients,
160*ec779b8eSAndroid Build Coastguard Worker                          bool reclaimed);
161*ec779b8eSAndroid Build Coastguard Worker 
162*ec779b8eSAndroid Build Coastguard Worker     // Remove the override info for the given process
163*ec779b8eSAndroid Build Coastguard Worker     void removeProcessInfoOverride_l(int pid);
164*ec779b8eSAndroid Build Coastguard Worker 
165*ec779b8eSAndroid Build Coastguard Worker     // Eventually we want to phase out this implementation of IResourceManagerService
166*ec779b8eSAndroid Build Coastguard Worker     // (ResourceManagerService) and replace that with the newer implementation
167*ec779b8eSAndroid Build Coastguard Worker     // (ResourceManagerServiceNew).
168*ec779b8eSAndroid Build Coastguard Worker     // So, marking the following methods as private virtual and for the newer implementation
169*ec779b8eSAndroid Build Coastguard Worker     // to override is the easiest way to maintain both implementation.
170*ec779b8eSAndroid Build Coastguard Worker 
171*ec779b8eSAndroid Build Coastguard Worker     // Initializes the internal state of the ResourceManagerService
172*ec779b8eSAndroid Build Coastguard Worker     virtual void init();
173*ec779b8eSAndroid Build Coastguard Worker 
174*ec779b8eSAndroid Build Coastguard Worker     // Gets the list of all the clients who own the list of specified resource type
175*ec779b8eSAndroid Build Coastguard Worker     // and satisfy the resource model and the reclaim policy.
176*ec779b8eSAndroid Build Coastguard Worker     virtual bool getTargetClients(
177*ec779b8eSAndroid Build Coastguard Worker         const ClientInfoParcel& clientInfo,
178*ec779b8eSAndroid Build Coastguard Worker         const std::vector<MediaResourceParcel>& resources,
179*ec779b8eSAndroid Build Coastguard Worker         std::vector<ClientInfo>& targetClients);
180*ec779b8eSAndroid Build Coastguard Worker 
181*ec779b8eSAndroid Build Coastguard Worker     // Gets the list of all the clients who own the specified resource type.
182*ec779b8eSAndroid Build Coastguard Worker     // Returns false if any client belongs to a process with higher priority than the
183*ec779b8eSAndroid Build Coastguard Worker     // calling process. The clients will remain unchanged if returns false.
184*ec779b8eSAndroid Build Coastguard Worker     virtual bool getAllClients_l(const ResourceRequestInfo& resourceRequestInfo,
185*ec779b8eSAndroid Build Coastguard Worker                                  std::vector<ClientInfo>& clientsInfo);
186*ec779b8eSAndroid Build Coastguard Worker 
187*ec779b8eSAndroid Build Coastguard Worker     // Gets the client who owns specified resource type from lowest possible priority process.
188*ec779b8eSAndroid Build Coastguard Worker     // Returns false if the calling process priority is not higher than the lowest process
189*ec779b8eSAndroid Build Coastguard Worker     // priority. The client will remain unchanged if returns false.
190*ec779b8eSAndroid Build Coastguard Worker     virtual bool getLowestPriorityBiggestClient_l(
191*ec779b8eSAndroid Build Coastguard Worker         const ResourceRequestInfo& resourceRequestInfo,
192*ec779b8eSAndroid Build Coastguard Worker         ClientInfo& clientInfo);
193*ec779b8eSAndroid Build Coastguard Worker 
194*ec779b8eSAndroid Build Coastguard Worker     // override the pid of given process
195*ec779b8eSAndroid Build Coastguard Worker     virtual bool overridePid_l(int32_t originalPid, int32_t newPid);
196*ec779b8eSAndroid Build Coastguard Worker 
197*ec779b8eSAndroid Build Coastguard Worker     // override the process info of given process
198*ec779b8eSAndroid Build Coastguard Worker     virtual bool overrideProcessInfo_l(const std::shared_ptr<IResourceManagerClient>& client,
199*ec779b8eSAndroid Build Coastguard Worker                                        int pid, int procState, int oomScore);
200*ec779b8eSAndroid Build Coastguard Worker 
201*ec779b8eSAndroid Build Coastguard Worker     // Get priority from process's pid
202*ec779b8eSAndroid Build Coastguard Worker     virtual bool getPriority_l(int pid, int* priority) const;
203*ec779b8eSAndroid Build Coastguard Worker 
204*ec779b8eSAndroid Build Coastguard Worker     // Gets lowest priority process that has the specified resource type.
205*ec779b8eSAndroid Build Coastguard Worker     // Returns false if failed. The output parameters will remain unchanged if failed.
206*ec779b8eSAndroid Build Coastguard Worker     virtual bool getLowestPriorityPid_l(MediaResource::Type type, MediaResource::SubType subType,
207*ec779b8eSAndroid Build Coastguard Worker                                         int* lowestPriorityPid, int* lowestPriority);
208*ec779b8eSAndroid Build Coastguard Worker 
209*ec779b8eSAndroid Build Coastguard Worker     // Removes the pid from the override map.
210*ec779b8eSAndroid Build Coastguard Worker     virtual void removeProcessInfoOverride(int pid);
211*ec779b8eSAndroid Build Coastguard Worker 
212*ec779b8eSAndroid Build Coastguard Worker     // Get the client for given pid and the clientId from the map
213*ec779b8eSAndroid Build Coastguard Worker     virtual std::shared_ptr<IResourceManagerClient> getClient_l(
214*ec779b8eSAndroid Build Coastguard Worker         int pid, const int64_t& clientId) const;
215*ec779b8eSAndroid Build Coastguard Worker 
216*ec779b8eSAndroid Build Coastguard Worker     // Remove the client for given pid and the clientId from the map
217*ec779b8eSAndroid Build Coastguard Worker     virtual bool removeClient_l(int pid, const int64_t& clientId);
218*ec779b8eSAndroid Build Coastguard Worker 
219*ec779b8eSAndroid Build Coastguard Worker     // Get all the resource status for dump
220*ec779b8eSAndroid Build Coastguard Worker     virtual void getResourceDump(std::string& resourceLog) const;
221*ec779b8eSAndroid Build Coastguard Worker 
222*ec779b8eSAndroid Build Coastguard Worker     // The following utility functions are used only for testing by ResourceManagerServiceTest
223*ec779b8eSAndroid Build Coastguard Worker     // START: TEST only functions
224*ec779b8eSAndroid Build Coastguard Worker     // Get the peak concurrent pixel count (associated with the video codecs) for the process.
225*ec779b8eSAndroid Build Coastguard Worker     long getPeakConcurrentPixelCount(int pid) const;
226*ec779b8eSAndroid Build Coastguard Worker     // Get the current concurrent pixel count (associated with the video codecs) for the process.
227*ec779b8eSAndroid Build Coastguard Worker     long getCurrentConcurrentPixelCount(int pid) const;
228*ec779b8eSAndroid Build Coastguard Worker     // To create object of type ResourceManagerServiceNew
229*ec779b8eSAndroid Build Coastguard Worker     static std::shared_ptr<ResourceManagerService> CreateNew(
230*ec779b8eSAndroid Build Coastguard Worker         const sp<ProcessInfoInterface>& processInfo,
231*ec779b8eSAndroid Build Coastguard Worker         const sp<SystemCallbackInterface>& systemResource);
232*ec779b8eSAndroid Build Coastguard Worker     // Returns a unmodifiable reference to the internal resource state as a map
getResourceMap()233*ec779b8eSAndroid Build Coastguard Worker     virtual const std::map<int, ResourceInfos>& getResourceMap() const {
234*ec779b8eSAndroid Build Coastguard Worker         return mMap;
235*ec779b8eSAndroid Build Coastguard Worker     }
236*ec779b8eSAndroid Build Coastguard Worker     // enable/disable process priority based reclaim and client importance based reclaim
setReclaimPolicy(bool processPriority,bool clientImportance)237*ec779b8eSAndroid Build Coastguard Worker     virtual void setReclaimPolicy(bool processPriority, bool clientImportance) {
238*ec779b8eSAndroid Build Coastguard Worker         // Implemented by the refactored/new RMService
239*ec779b8eSAndroid Build Coastguard Worker         (void)processPriority;
240*ec779b8eSAndroid Build Coastguard Worker         (void)clientImportance;
241*ec779b8eSAndroid Build Coastguard Worker     }
242*ec779b8eSAndroid Build Coastguard Worker     // END: TEST only functions
243*ec779b8eSAndroid Build Coastguard Worker 
244*ec779b8eSAndroid Build Coastguard Worker protected:
245*ec779b8eSAndroid Build Coastguard Worker     mutable std::mutex mLock;
246*ec779b8eSAndroid Build Coastguard Worker     sp<ProcessInfoInterface> mProcessInfo;
247*ec779b8eSAndroid Build Coastguard Worker     sp<SystemCallbackInterface> mSystemCB;
248*ec779b8eSAndroid Build Coastguard Worker     sp<ServiceLog> mServiceLog;
249*ec779b8eSAndroid Build Coastguard Worker     bool mSupportsMultipleSecureCodecs;
250*ec779b8eSAndroid Build Coastguard Worker     bool mSupportsSecureWithNonSecureCodec;
251*ec779b8eSAndroid Build Coastguard Worker     int32_t mCpuBoostCount;
252*ec779b8eSAndroid Build Coastguard Worker 
253*ec779b8eSAndroid Build Coastguard Worker private:
254*ec779b8eSAndroid Build Coastguard Worker     PidResourceInfosMap mMap;
255*ec779b8eSAndroid Build Coastguard Worker     struct ProcessInfoOverride {
256*ec779b8eSAndroid Build Coastguard Worker         std::shared_ptr<DeathNotifier> deathNotifier = nullptr;
257*ec779b8eSAndroid Build Coastguard Worker         std::shared_ptr<IResourceManagerClient> client;
258*ec779b8eSAndroid Build Coastguard Worker     };
259*ec779b8eSAndroid Build Coastguard Worker     std::map<int, int> mOverridePidMap;
260*ec779b8eSAndroid Build Coastguard Worker     std::map<pid_t, ProcessInfoOverride> mProcessInfoOverrideMap;
261*ec779b8eSAndroid Build Coastguard Worker     std::shared_ptr<ResourceObserverService> mObserverService;
262*ec779b8eSAndroid Build Coastguard Worker     std::unique_ptr<ResourceManagerMetrics> mResourceManagerMetrics;
263*ec779b8eSAndroid Build Coastguard Worker };
264*ec779b8eSAndroid Build Coastguard Worker 
265*ec779b8eSAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
266*ec779b8eSAndroid Build Coastguard Worker } // namespace android
267*ec779b8eSAndroid Build Coastguard Worker 
268*ec779b8eSAndroid Build Coastguard Worker #endif // ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H
269