0e97f7e73a
We also look to use the loop-control device to identify loop devices. We only create devices if they don't exist. Modern kernels can have an option CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 to pre-create the devices. Change-Id: Ib10cd29f17be4684dd75e0927a2862bf541cd661
37 lines
796 B
C++
Executable File
37 lines
796 B
C++
Executable File
|
|
#ifndef TWRPAPEX_HPP
|
|
#define TWRPAPEX_HPP
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <filesystem>
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/ioctl.h>
|
|
#include <linux/loop.h>
|
|
#include <sys/mount.h>
|
|
#include <sys/sysmacros.h>
|
|
#include <fcntl.h>
|
|
#include <unistd.h>
|
|
|
|
#include <ziparchive/zip_archive.h>
|
|
#include "twcommon.h"
|
|
|
|
#define APEX_DIR "/system_root/system/apex"
|
|
#define APEX_PAYLOAD "apex_payload.img"
|
|
#define LOOP_BLOCK_DEVICE_DIR "/dev/block/"
|
|
#define APEX_BASE "/apex/"
|
|
#define LOOP_CONTROL "/dev/loop-control"
|
|
|
|
class twrpApex {
|
|
public:
|
|
bool loadApexImages();
|
|
|
|
private:
|
|
std::string unzipImage(std::string file);
|
|
bool mountApexOnLoopbackDevices(std::vector<std::string> apexFiles);
|
|
bool loadApexImage(std::string fileToMount, size_t loop_device_number);
|
|
};
|
|
#endif
|