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__
|
||||
}
|
||||
|
||||
// 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_assert(
|
||||
std::is_same_v<std::underlying_type_t<ProcessInitializationFlags::Flags>,
|
||||
uint32_t>);
|
||||
|
||||
static void PlatformInit(ProcessInitializationFlags::Flags flags) {
|
||||
// init_process_flags is accessed in ResetStdio(),
|
||||
|
@ -1057,7 +1063,7 @@ std::unique_ptr<InitializationResult> InitializeOncePerProcess(
|
|||
}
|
||||
|
||||
void TearDownOncePerProcess() {
|
||||
const uint64_t flags = init_process_flags.load();
|
||||
const uint32_t flags = init_process_flags.load();
|
||||
ResetStdio();
|
||||
if (!(flags & ProcessInitializationFlags::kNoDefaultSignalHandling)) {
|
||||
ResetSignalHandlers();
|
||||
|
|
11
src/node.h
11
src/node.h
|
@ -227,10 +227,8 @@ class Environment;
|
|||
class MultiIsolatePlatform;
|
||||
class InitializationResultImpl;
|
||||
|
||||
namespace ProcessFlags {
|
||||
// TODO(addaleax): Switch to uint32_t to match std::atomic<uint32_t>
|
||||
// init_process_flags in node.cc
|
||||
enum Flags : uint64_t {
|
||||
namespace ProcessInitializationFlags {
|
||||
enum Flags : uint32_t {
|
||||
kNoFlags = 0,
|
||||
// Enable stdio inheritance, which is disabled by default.
|
||||
// This flag is also implied by kNoStdioInitialization.
|
||||
|
@ -270,9 +268,8 @@ enum Flags : uint64_t {
|
|||
kNoParseGlobalDebugVariables | kNoAdjustResourceLimits |
|
||||
kNoUseLargePages | kNoPrintHelpOrVersionOutput,
|
||||
};
|
||||
} // namespace ProcessFlags
|
||||
// TODO(addaleax): Make this the canonical name, as it is more descriptive.
|
||||
namespace ProcessInitializationFlags = ProcessFlags;
|
||||
} // namespace ProcessInitializationFlags
|
||||
namespace ProcessFlags = ProcessInitializationFlags; // Legacy alias.
|
||||
|
||||
class NODE_EXTERN InitializationResult {
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue