[Lldb-commits] [PATCH] D104093: [lldb] Move once_flags in HostInfoLinux so the internal state struct
Raphael Isemann via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Jun 10 23:41:07 PDT 2021
teemperor created this revision.
teemperor added reviewers: vitalybuka, LLDB.
teemperor added a project: LLDB.
Herald added a subscriber: JDevlieghere.
teemperor requested review of this revision.
The HostInfoLinuxFields struct is supposed to be set up/torn down on Initialize/Terminate
and should contain all the state of the plugin. `once_flags` are part of this state and should
also be reset on `Terminate` so we can re-initialize these lazy values after the next
`Initialize` call.
This itself is NFC as the HostInfoLinux was broken before this patch and is still broken
afterwards. D104091 <https://reviews.llvm.org/D104091> will be the proper fix.
https://reviews.llvm.org/D104093
Files:
lldb/source/Host/linux/HostInfoLinux.cpp
Index: lldb/source/Host/linux/HostInfoLinux.cpp
===================================================================
--- lldb/source/Host/linux/HostInfoLinux.cpp
+++ lldb/source/Host/linux/HostInfoLinux.cpp
@@ -26,7 +26,9 @@
namespace {
struct HostInfoLinuxFields {
+ llvm::once_flag m_distribution_once_flag;
std::string m_distribution_id;
+ llvm::once_flag m_os_version_once_flag;
llvm::VersionTuple m_os_version;
};
@@ -40,8 +42,8 @@
}
llvm::VersionTuple HostInfoLinux::GetOSVersion() {
- static llvm::once_flag g_once_flag;
- llvm::call_once(g_once_flag, []() {
+ assert(g_fields && "Missing call to Initialize?");
+ llvm::call_once(g_fields->m_os_version_once_flag, []() {
struct utsname un;
if (uname(&un) != 0)
return;
@@ -82,10 +84,10 @@
}
llvm::StringRef HostInfoLinux::GetDistributionId() {
+ assert(g_fields && "Missing call to Initialize?");
// Try to run 'lbs_release -i', and use that response for the distribution
// id.
- static llvm::once_flag g_once_flag;
- llvm::call_once(g_once_flag, []() {
+ llvm::call_once(g_fields->m_distribution_once_flag, []() {
Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST));
LLDB_LOGF(log, "attempting to determine Linux distribution...");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D104093.351345.patch
Type: text/x-patch
Size: 1271 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210611/12cc454c/attachment.bin>
More information about the lldb-commits
mailing list