Move common knob initialization macros to header

This commit is contained in:
Lukas Joswiak 2021-08-23 11:40:20 -07:00
parent e2d897a2c2
commit d554205db3
4 changed files with 6 additions and 12 deletions

View File

@ -23,12 +23,8 @@
#include "fdbclient/SystemData.h"
#include "flow/UnitTest.h"
#define KNOB_FN(_1, _2, _3, FN, ...) FN
#define init(...) KNOB_FN(__VA_ARGS__, INIT_ATOMIC_KNOB, INIT_KNOB)(__VA_ARGS__)
#define INIT_KNOB(knob, value) initKnob(knob, value, #knob)
#define INIT_ATOMIC_KNOB(knob, value, atomic) initKnob(knob, value, #knob, atomic)
ClientKnobs::ClientKnobs(Randomize randomize) {
initialize(randomize);
}

View File

@ -20,12 +20,8 @@
#include "fdbclient/ServerKnobs.h"
#define KNOB_FN(_1, _2, _3, FN, ...) FN
#define init(...) KNOB_FN(__VA_ARGS__, INIT_ATOMIC_KNOB, INIT_KNOB)(__VA_ARGS__)
#define INIT_KNOB(knob, value) initKnob(knob, value, #knob)
#define INIT_ATOMIC_KNOB(knob, value, atomic) initKnob(knob, value, #knob, atomic)
ServerKnobs::ServerKnobs(Randomize randomize, ClientKnobs* clientKnobs, IsSimulated isSimulated) {
initialize(randomize, clientKnobs, isSimulated);
}

View File

@ -34,12 +34,8 @@ FlowKnobs::FlowKnobs(Randomize randomize, IsSimulated isSimulated) {
FlowKnobs bootstrapGlobalFlowKnobs(Randomize::False, IsSimulated::False);
FlowKnobs const* FLOW_KNOBS = &bootstrapGlobalFlowKnobs;
#define KNOB_FN(_1, _2, _3, FN, ...) FN
#define init(...) KNOB_FN(__VA_ARGS__, INIT_ATOMIC_KNOB, INIT_KNOB)(__VA_ARGS__)
#define INIT_KNOB(knob, value) initKnob(knob, value, #knob)
#define INIT_ATOMIC_KNOB(knob, value, atomic) initKnob(knob, value, #knob, atomic)
// clang-format off
void FlowKnobs::initialize(Randomize randomize, IsSimulated isSimulated) {
init( AUTOMATIC_TRACE_DUMP, 1 );

View File

@ -32,6 +32,12 @@
#include <variant>
#include <optional>
// Helper macros to allow the init macro to be called with an optional third
// paramater, used to explicit set atomicity of knobs.
#define KNOB_FN(_1, _2, _3, FN, ...) FN
#define INIT_KNOB(knob, value) initKnob(knob, value, #knob)
#define INIT_ATOMIC_KNOB(knob, value, atomic) initKnob(knob, value, #knob, atomic)
// NOTE: Directly using KnobValueRef as the return type for Knobs::parseKnobValue would result
// in a cyclic dependency, so we use this intermediate ParsedKnobValue type
struct NoKnobFound {};