diff options
| author | Ronghua Wu <ronghuawu@google.com> | 2015-04-23 15:24:25 -0700 | 
|---|---|---|
| committer | Ronghua Wu <ronghuawu@google.com> | 2015-04-23 18:03:30 -0700 | 
| commit | 8f9dd872366f54b6260506c75c3d0cc3f9f73f81 (patch) | |
| tree | 6b20eb7ca59c4c40936e27806f5d76bce005b146 /services/mediaresourcemanager | |
| parent | 1ac91ed2c67245ea5052182212463d3f0afe8b5a (diff) | |
| download | frameworks_av-8f9dd872366f54b6260506c75c3d0cc3f9f73f81.zip frameworks_av-8f9dd872366f54b6260506c75c3d0cc3f9f73f81.tar.gz frameworks_av-8f9dd872366f54b6260506c75c3d0cc3f9f73f81.tar.bz2  | |
mediaresourcemanager: add dumpsys support.
Bug: 20233206
Change-Id: Ic253985e408b05b488e87cd5c50c0d619ac568ef
Diffstat (limited to 'services/mediaresourcemanager')
3 files changed, 51 insertions, 0 deletions
diff --git a/services/mediaresourcemanager/ResourceManagerService.cpp b/services/mediaresourcemanager/ResourceManagerService.cpp index 75a69ed..17aac4e 100644 --- a/services/mediaresourcemanager/ResourceManagerService.cpp +++ b/services/mediaresourcemanager/ResourceManagerService.cpp @@ -88,6 +88,51 @@ static ResourceInfo& getResourceInfoForEdit(      return infos.editItemAt(infos.size() - 1);  } +status_t ResourceManagerService::dump(int fd, const Vector<String16>& args) { +    Mutex::Autolock lock(mLock); + +    String8 result; +    const size_t SIZE = 256; +    char buffer[SIZE]; + +    snprintf(buffer, SIZE, "ResourceManagerService: %p\n", this); +    result.append(buffer); +    result.append("  Policies:\n"); +    snprintf(buffer, SIZE, "    SupportsMultipleSecureCodecs: %d\n", mSupportsMultipleSecureCodecs); +    result.append(buffer); +    snprintf(buffer, SIZE, "    SupportsSecureWithNonSecureCodec: %d\n", mSupportsSecureWithNonSecureCodec); +    result.append(buffer); + +    snprintf(buffer, SIZE, "  Processes:\n"); +    result.append(buffer); +    for (size_t i = 0; i < mMap.size(); ++i) { +        snprintf(buffer, SIZE, "    Pid: %d\n", mMap.keyAt(i)); +        result.append(buffer); + +        const ResourceInfos &infos = mMap.valueAt(i); +        for (size_t j = 0; j < infos.size(); ++j) { +            snprintf(buffer, SIZE, "      Client:\n"); +            result.append(buffer); +            snprintf(buffer, SIZE, "        Id: %lld\n", (long long)infos[j].clientId); +            result.append(buffer); + +            snprintf(buffer, SIZE, "        Name: %s\n", infos[j].client->getName().string()); +            result.append(buffer); + +            Vector<MediaResource> resources = infos[j].resources; +            snprintf(buffer, SIZE, "        Resources:\n"); +            result.append(buffer); +            for (size_t k = 0; k < resources.size(); ++k) { +                snprintf(buffer, SIZE, "          %s\n", resources[k].toString().string()); +                result.append(buffer); +            } +        } +    } + +    write(fd, result.string(), result.size()); +    return OK; +} +  ResourceManagerService::ResourceManagerService()      : mProcessInfo(new ProcessInfo()),        mSupportsMultipleSecureCodecs(true), diff --git a/services/mediaresourcemanager/ResourceManagerService.h b/services/mediaresourcemanager/ResourceManagerService.h index 2ed9bf8..0c3d694 100644 --- a/services/mediaresourcemanager/ResourceManagerService.h +++ b/services/mediaresourcemanager/ResourceManagerService.h @@ -48,6 +48,8 @@ class ResourceManagerService  public:      static char const *getServiceName() { return "media.resource_manager"; } +    virtual status_t dump(int fd, const Vector<String16>& args); +      ResourceManagerService();      ResourceManagerService(sp<ProcessInfoInterface> processInfo); diff --git a/services/mediaresourcemanager/test/ResourceManagerService_test.cpp b/services/mediaresourcemanager/test/ResourceManagerService_test.cpp index 48d1395..bccc7fa 100644 --- a/services/mediaresourcemanager/test/ResourceManagerService_test.cpp +++ b/services/mediaresourcemanager/test/ResourceManagerService_test.cpp @@ -55,6 +55,10 @@ struct TestClient : public BnResourceManagerClient {          return true;      } +    virtual String8 getName() { +        return String8("test_client"); +    } +      bool reclaimed() const {          return mReclaimed;      }  | 
