add libmodprobe api to query the number of modules loaded

In the short term this will be used to help implement support for
multiple kernel module directories but it may be useful in other
contexts as well.

Bug: 157645635
Change-Id: I15a252b6e9394292c8f3557ed65112c935830441
Merged-In: I15a252b6e9394292c8f3557ed65112c935830441
This commit is contained in:
Steve Muckle 2020-05-29 16:30:33 -07:00
parent 84db2e40e1
commit 8bafa9e28e
4 changed files with 6 additions and 0 deletions

View file

@ -34,6 +34,8 @@ class Modprobe {
bool GetAllDependencies(const std::string& module, std::vector<std::string>* pre_dependencies,
std::vector<std::string>* dependencies,
std::vector<std::string>* post_dependencies);
void ResetModuleCount() { module_count_ = 0; }
int GetModuleCount() { return module_count_; }
void EnableBlacklist(bool enable);
void EnableVerbose(bool enable);
@ -65,5 +67,6 @@ class Modprobe {
std::unordered_map<std::string, std::string> module_options_;
std::set<std::string> module_blacklist_;
std::unordered_set<std::string> module_loaded_;
int module_count_ = 0;
bool blacklist_enabled = false;
};

View file

@ -63,6 +63,7 @@ bool Modprobe::Insmod(const std::string& path_name, const std::string& parameter
LOG(INFO) << "Loaded kernel module " << path_name;
module_loaded_.emplace(canonical_name);
module_count_++;
return true;
}

View file

@ -56,6 +56,7 @@ bool Modprobe::Insmod(const std::string& path_name, const std::string& parameter
}
modules_loaded.emplace_back(path_name + options);
module_count_++;
return true;
}

View file

@ -161,6 +161,7 @@ TEST(libmodprobe, Test) {
EXPECT_TRUE(modules_loaded == expected_modules_loaded);
EXPECT_TRUE(m.GetModuleCount() == 15);
EXPECT_TRUE(m.Remove("test4"));
GTEST_LOG_(INFO) << "Expected modules loaded after removing test4 (in order):";