diff --git a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C index 97749284aba2ad7fc1efd4ed38bbadba58f81a34..9808f91c113db1755a0a2e249a2a447529a5017e 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 12da420a96f070c4bda0ac36f458f83dd9183dd6..bf83a350d7809777417765321f8164cc9a934657 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 9af0e28406d2f2889dfd161d87ee01d9804a1f6f..c226ff6e1f5d2dd832659ac1603b8f26b61b6b72 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 ea1207cfb8a6b8f01a110e7a498a5b6fa05043ee..0a9cda36decfca2fb0b5216283e649ae4e6b1613 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; - };