Cleanup magiskinit code

This commit is contained in:
topjohnwu
2021-10-26 00:35:55 -07:00
parent 2e299b3814
commit 50710c72ad
6 changed files with 124 additions and 135 deletions

View File

@@ -2,7 +2,9 @@
#include "raw_data.hpp"
struct cmdline {
using kv_pairs = std::vector<std::pair<std::string, std::string>>;
struct BootConfig {
bool skip_initramfs;
bool force_normal_boot;
bool rootwait;
@@ -11,6 +13,9 @@ struct cmdline {
char fstab_suffix[32];
char hardware[32];
char hardware_plat[32];
void set(const kv_pairs &);
void print();
};
struct fstab_entry {
@@ -32,7 +37,7 @@ struct fstab_entry {
extern std::vector<std::string> mount_list;
bool unxz(int fd, const uint8_t *buf, size_t size);
void load_kernel_info(cmdline *cmd);
void load_kernel_info(BootConfig *config);
bool check_two_stage();
void setup_klog();
@@ -42,13 +47,13 @@ void setup_klog();
class BaseInit {
protected:
cmdline *cmd = nullptr;
BootConfig *config = nullptr;
char **argv = nullptr;
[[noreturn]] void exec_init();
void read_dt_fstab(std::vector<fstab_entry> &fstab);
public:
BaseInit(char *argv[], cmdline *cmd) : cmd(cmd), argv(argv) {}
BaseInit(char *argv[], BootConfig *config) : config(config), argv(argv) {}
virtual ~BaseInit() = default;
virtual void start() = 0;
};
@@ -56,7 +61,7 @@ public:
class MagiskInit : public BaseInit {
protected:
mmap_data self;
mmap_data config;
mmap_data magisk_config;
std::string custom_rules_dir;
void mount_with_dt();
@@ -64,7 +69,7 @@ protected:
void setup_tmp(const char *path);
void mount_rules_dir(const char *dev_base, const char *mnt_base);
public:
MagiskInit(char *argv[], cmdline *cmd) : BaseInit(argv, cmd) {}
MagiskInit(char *argv[], BootConfig *cmd) : BaseInit(argv, cmd) {}
};
class SARBase : virtual public MagiskInit {
@@ -86,7 +91,7 @@ class FirstStageInit : public BaseInit {
private:
void prepare();
public:
FirstStageInit(char *argv[], cmdline *cmd) : BaseInit(argv, cmd) {
FirstStageInit(char *argv[], BootConfig *cmd) : BaseInit(argv, cmd) {
LOGD("%s\n", __FUNCTION__);
};
void start() override {
@@ -106,7 +111,7 @@ private:
void early_mount();
void first_stage_prep();
public:
SARInit(char *argv[], cmdline *cmd) : MagiskInit(argv, cmd), is_two_stage(false) {
SARInit(char *argv[], BootConfig *cmd) : MagiskInit(argv, cmd), is_two_stage(false) {
LOGD("%s\n", __FUNCTION__);
};
void start() override {
@@ -136,7 +141,7 @@ private:
void early_mount();
public:
RootFSInit(char *argv[], cmdline *cmd) : MagiskInit(argv, cmd) {
RootFSInit(char *argv[], BootConfig *cmd) : MagiskInit(argv, cmd) {
LOGD("%s\n", __FUNCTION__);
}
void start() override {