blob: 9a3294047407293b664ecb21bcb106f6be77deb1 [file] [log] [blame]
bigbiff22851b92021-09-01 16:46:57 -04001#ifndef _KERNELMODULELOADER_HPP
2#define _KERNELMODULELOADER_HPP
3
4#include <dirent.h>
5#include <string>
6#include <vector>
Mohd Farazfe8bcd42023-08-26 20:50:26 +05307#include <android-base/file.h>
bigbiff22851b92021-09-01 16:46:57 -04008#include <android-base/strings.h>
9#include <modprobe/modprobe.h>
bigbiff850fa282021-10-09 12:37:29 -040010#include <sys/mount.h>
bigbiff22851b92021-09-01 16:46:57 -040011#include <sys/utsname.h>
12
13#include "twcommon.h"
14#include "twrp-functions.hpp"
15
bigbiff8c52c872022-04-10 17:34:46 -040016#define VENDOR_MODULE_DIR "/vendor/lib/modules" // Base path for vendor kernel modules to check by TWRP
17#define VENDOR_BOOT_MODULE_DIR "/lib/modules" // vendor_boot ramdisk GKI modules to check by TWRP
18#define VENDOR_DLKM_MODULE_DIR "/vendor_dlkm/lib/modules" // vendor_dlkm placed modules to check by TWRP
bigbiff22851b92021-09-01 16:46:57 -040019typedef enum {
20 RECOVERY_FASTBOOT_MODE = 0,
21 RECOVERY_IN_BOOT_MODE,
22 FASTBOOTD_MODE
23} BOOT_MODE;
24
25class KernelModuleLoader
26{
27public:
Mohd Farazfe8bcd42023-08-26 20:50:26 +053028 static bool Load_Vendor_Modules(); // Load specific maintainer defined kernel modules in TWRP
bigbiff22851b92021-09-01 16:46:57 -040029
30private:
bigbiff850fa282021-10-09 12:37:29 -040031 static int Try_And_Load_Modules(std::string module_dir, bool vendor_is_mounted); // Use libmodprobe to attempt loading kernel modules
bigbiff22851b92021-09-01 16:46:57 -040032 static bool Write_Module_List(std::string module_dir); // Write list of modules to load from TW_LOAD_VENDOR_MODULES
Mohd Farazfe8bcd42023-08-26 20:50:26 +053033 static bool Copy_Modules_To_Tmpfs(std::string module_dir); // Copy modules to ramdisk for loading
bigbiff850fa282021-10-09 12:37:29 -040034 static std::vector<string> Skip_Loaded_Kernel_Modules(); // return list of loaded kernel modules already done by init
Mohd Farazfe8bcd42023-08-26 20:50:26 +053035 static BOOT_MODE Get_Boot_Mode(); // For getting the current boot mode
bigbiff22851b92021-09-01 16:46:57 -040036};
37
Mohd Farazfe8bcd42023-08-26 20:50:26 +053038#endif // _KERNELMODULELOADER_HPP