mirror of https://github.com/nodejs/node.git
src: use uint32_t for process initialization flags enum
Refs: https://github.com/nodejs/node/pull/45221 PR-URL: https://github.com/nodejs/node/pull/46427 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
1579ff4f95
commit
f84de0ad4c
|
@ -431,7 +431,13 @@ void ResetSignalHandlers() {
|
||||||
#endif // __POSIX__
|
#endif // __POSIX__
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We use uint32_t since that can be accessed as a lock-free atomic
|
||||||
|
// variable on all platforms that we support, which we require in
|
||||||
|
// order for its value to be usable inside signal handlers.
|
||||||
static std::atomic<uint32_t> init_process_flags = 0;
|
static std::atomic<uint32_t> init_process_flags = 0;
|
||||||
|
static_assert(
|
||||||
|
std::is_same_v<std::underlying_type_t<ProcessInitializationFlags::Flags>,
|
||||||
|
uint32_t>);
|
||||||
|
|
||||||
static void PlatformInit(ProcessInitializationFlags::Flags flags) {
|
static void PlatformInit(ProcessInitializationFlags::Flags flags) {
|
||||||
// init_process_flags is accessed in ResetStdio(),
|
// init_process_flags is accessed in ResetStdio(),
|
||||||
|
@ -1057,7 +1063,7 @@ std::unique_ptr<InitializationResult> InitializeOncePerProcess(
|
||||||
}
|
}
|
||||||
|
|
||||||
void TearDownOncePerProcess() {
|
void TearDownOncePerProcess() {
|
||||||
const uint64_t flags = init_process_flags.load();
|
const uint32_t flags = init_process_flags.load();
|
||||||
ResetStdio();
|
ResetStdio();
|
||||||
if (!(flags & ProcessInitializationFlags::kNoDefaultSignalHandling)) {
|
if (!(flags & ProcessInitializationFlags::kNoDefaultSignalHandling)) {
|
||||||
ResetSignalHandlers();
|
ResetSignalHandlers();
|
||||||
|
|
11
src/node.h
11
src/node.h
|
@ -227,10 +227,8 @@ class Environment;
|
||||||
class MultiIsolatePlatform;
|
class MultiIsolatePlatform;
|
||||||
class InitializationResultImpl;
|
class InitializationResultImpl;
|
||||||
|
|
||||||
namespace ProcessFlags {
|
namespace ProcessInitializationFlags {
|
||||||
// TODO(addaleax): Switch to uint32_t to match std::atomic<uint32_t>
|
enum Flags : uint32_t {
|
||||||
// init_process_flags in node.cc
|
|
||||||
enum Flags : uint64_t {
|
|
||||||
kNoFlags = 0,
|
kNoFlags = 0,
|
||||||
// Enable stdio inheritance, which is disabled by default.
|
// Enable stdio inheritance, which is disabled by default.
|
||||||
// This flag is also implied by kNoStdioInitialization.
|
// This flag is also implied by kNoStdioInitialization.
|
||||||
|
@ -270,9 +268,8 @@ enum Flags : uint64_t {
|
||||||
kNoParseGlobalDebugVariables | kNoAdjustResourceLimits |
|
kNoParseGlobalDebugVariables | kNoAdjustResourceLimits |
|
||||||
kNoUseLargePages | kNoPrintHelpOrVersionOutput,
|
kNoUseLargePages | kNoPrintHelpOrVersionOutput,
|
||||||
};
|
};
|
||||||
} // namespace ProcessFlags
|
} // namespace ProcessInitializationFlags
|
||||||
// TODO(addaleax): Make this the canonical name, as it is more descriptive.
|
namespace ProcessFlags = ProcessInitializationFlags; // Legacy alias.
|
||||||
namespace ProcessInitializationFlags = ProcessFlags;
|
|
||||||
|
|
||||||
class NODE_EXTERN InitializationResult {
|
class NODE_EXTERN InitializationResult {
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in New Issue