diff --git a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C index 97749284ab..9808f91c11 100644 --- a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C +++ b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C @@ -33,41 +33,50 @@ License namespace Foam { + // Signal number to catch int sigStopAtWriteNow::signal_ ( debug::optimisationSwitch("stopAtWriteNowSignal", -1) ); + // Register re-reader class addstopAtWriteNowSignalToOpt : public ::Foam::simpleRegIOobject { + public: + addstopAtWriteNowSignalToOpt(const char* name) : ::Foam::simpleRegIOobject(Foam::debug::addOptimisationObject, name) {} + virtual ~addstopAtWriteNowSignalToOpt() {} + virtual void readData(Foam::Istream& is) { sigStopAtWriteNow::signal_ = readLabel(is); sigStopAtWriteNow::set(true); } + virtual void writeData(Foam::Ostream& os) const { os << sigStopAtWriteNow::signal_; } }; + addstopAtWriteNowSignalToOpt addstopAtWriteNowSignalToOpt_ ( "stopAtWriteNowSignal" ); + } -static Foam::Time const* runTimePtr_ = nullptr; +Foam::Time const* Foam::sigStopAtWriteNow::runTimePtr_ = nullptr; struct sigaction Foam::sigStopAtWriteNow::oldAction_; diff --git a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H index 12da420a96..bf83a350d7 100644 --- a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H +++ b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,9 +58,13 @@ class sigStopAtWriteNow //- Number of signal to use static int signal_; + //- Pointer to Time + static Time const* runTimePtr_; + //- Saved old signal trapping setting static struct sigaction oldAction_; + // Private Member Functions static void sigHandler(int); @@ -71,6 +75,7 @@ public: //- wip. Have setter have access to signal_ friend class addstopAtWriteNowSignalToOpt; + // Constructors //- Construct null diff --git a/src/OSspecific/POSIX/signals/sigWriteNow.C b/src/OSspecific/POSIX/signals/sigWriteNow.C index 9af0e28406..c226ff6e1f 100644 --- a/src/OSspecific/POSIX/signals/sigWriteNow.C +++ b/src/OSspecific/POSIX/signals/sigWriteNow.C @@ -33,39 +33,47 @@ License namespace Foam { + // Signal number to catch int sigWriteNow::signal_ ( debug::optimisationSwitch("writeNowSignal", -1) ); + // Register re-reader class addwriteNowSignalToOpt : public ::Foam::simpleRegIOobject { + public: + addwriteNowSignalToOpt(const char* name) : ::Foam::simpleRegIOobject(Foam::debug::addOptimisationObject, name) {} + virtual ~addwriteNowSignalToOpt() {} + virtual void readData(Foam::Istream& is) { sigWriteNow::signal_ = readLabel(is); sigWriteNow::set(true); } + virtual void writeData(Foam::Ostream& os) const { os << sigWriteNow::signal_; } }; + addwriteNowSignalToOpt addwriteNowSignalToOpt_("writeNowSignal"); } -static Foam::Time* runTimePtr_ = nullptr; +Foam::Time* Foam::sigWriteNow::runTimePtr_ = nullptr; struct sigaction Foam::sigWriteNow::oldAction_; diff --git a/src/OSspecific/POSIX/signals/sigWriteNow.H b/src/OSspecific/POSIX/signals/sigWriteNow.H index ea1207cfb8..0a9cda36de 100644 --- a/src/OSspecific/POSIX/signals/sigWriteNow.H +++ b/src/OSspecific/POSIX/signals/sigWriteNow.H @@ -57,9 +57,13 @@ class sigWriteNow //- Number of signal to use static int signal_; + //- Pointer to Time + static Time* runTimePtr_; + //- Saved old signal trapping setting static struct sigaction oldAction_; + // Private Member Functions static void sigHandler(int); @@ -92,7 +96,6 @@ public: //- Is active? bool active() const; - };