123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- #ifndef ANDROID_VOLD_UTILS_H
- #define ANDROID_VOLD_UTILS_H
- #include "KeyBuffer.h"
- #include <android-base/macros.h>
- #include <cutils/multiuser.h>
- #include <selinux/selinux.h>
- #include <utils/Errors.h>
- #include <chrono>
- #include <string>
- #include <vector>
- struct DIR;
- namespace android {
- namespace vold {
- extern security_context_t sBlkidContext;
- extern security_context_t sBlkidUntrustedContext;
- extern security_context_t sFsckContext;
- extern security_context_t sFsckUntrustedContext;
- extern bool sSleepOnUnmount;
- status_t CreateDeviceNode(const std::string& path, dev_t dev);
- status_t DestroyDeviceNode(const std::string& path);
- status_t PrepareDir(const std::string& path, mode_t mode, uid_t uid, gid_t gid);
- status_t ForceUnmount(const std::string& path);
- status_t KillProcessesUsingPath(const std::string& path);
- status_t BindMount(const std::string& source, const std::string& target);
- status_t Symlink(const std::string& target, const std::string& linkpath);
- status_t Unlink(const std::string& linkpath);
- status_t CreateDir(const std::string& dir, mode_t mode);
- bool FindValue(const std::string& raw, const std::string& key, std::string* value);
- status_t ReadMetadata(const std::string& path, std::string* fsType, std::string* fsUuid,
- std::string* fsLabel);
- status_t ReadMetadataUntrusted(const std::string& path, std::string* fsType, std::string* fsUuid,
- std::string* fsLabel);
- status_t ForkExecvp(const std::vector<std::string>& args, std::vector<std::string>* output = nullptr,
- security_context_t context = nullptr);
- pid_t ForkExecvpAsync(const std::vector<std::string>& args);
- status_t GetBlockDevSize(int fd, uint64_t* size);
- status_t GetBlockDevSize(const std::string& path, uint64_t* size);
- status_t GetBlockDev512Sectors(const std::string& path, uint64_t* nr_sec);
- status_t ReadRandomBytes(size_t bytes, std::string& out);
- status_t ReadRandomBytes(size_t bytes, char* buffer);
- status_t GenerateRandomUuid(std::string& out);
- status_t HexToStr(const std::string& hex, std::string& str);
- status_t StrToHex(const std::string& str, std::string& hex);
- status_t StrToHex(const KeyBuffer& str, KeyBuffer& hex);
- status_t NormalizeHex(const std::string& in, std::string& out);
- uint64_t GetFreeBytes(const std::string& path);
- uint64_t GetTreeBytes(const std::string& path);
- bool IsFilesystemSupported(const std::string& fsType);
- status_t WipeBlockDevice(const std::string& path);
- std::string BuildKeyPath(const std::string& partGuid);
- std::string BuildDataSystemLegacyPath(userid_t userid);
- std::string BuildDataSystemCePath(userid_t userid);
- std::string BuildDataSystemDePath(userid_t userid);
- std::string BuildDataMiscLegacyPath(userid_t userid);
- std::string BuildDataMiscCePath(userid_t userid);
- std::string BuildDataMiscDePath(userid_t userid);
- std::string BuildDataProfilesDePath(userid_t userid);
- std::string BuildDataVendorCePath(userid_t userid);
- std::string BuildDataVendorDePath(userid_t userid);
- std::string BuildDataPath(const std::string& volumeUuid);
- std::string BuildDataMediaCePath(const std::string& volumeUuid, userid_t userid);
- std::string BuildDataUserCePath(const std::string& volumeUuid, userid_t userid);
- std::string BuildDataUserDePath(const std::string& volumeUuid, userid_t userid);
- dev_t GetDevice(const std::string& path);
- status_t RestoreconRecursive(const std::string& path);
- bool Readlinkat(int dirfd, const std::string& path, std::string* result);
- bool IsRunningInEmulator();
- status_t UnmountTreeWithPrefix(const std::string& prefix);
- status_t UnmountTree(const std::string& mountPoint);
- status_t DeleteDirContentsAndDir(const std::string& pathname);
- status_t DeleteDirContents(const std::string& pathname);
- status_t WaitForFile(const char* filename, std::chrono::nanoseconds timeout);
- bool FsyncDirectory(const std::string& dirname);
- bool writeStringToFile(const std::string& payload, const std::string& filename);
- }
- }
- #endif
|