diff options
author | Jeffrey Walton <noloader@gmail.com> | 2016-09-19 22:35:53 -0400 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2016-09-19 22:35:53 -0400 |
commit | f7c8251a088332d7b78f911357539b9b24b582e9 (patch) | |
tree | 838a61d564628a73fbce8644dc3fb8870563a125 /ossig.h | |
parent | 923efa865b5b1161fb1a4a429b9e57125692f873 (diff) | |
download | cryptopp-git-f7c8251a088332d7b78f911357539b9b24b582e9.tar.gz |
Updated documentation
Diffstat (limited to 'ossig.h')
-rw-r--r-- | ossig.h | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -20,11 +20,22 @@ NAMESPACE_BEGIN(CryptoPP) #if defined(CRYPTOPP_BSD_AVAILABLE) || defined(CRYPTOPP_UNIX_AVAILABLE) || defined(CRYPTOPP_DOXYGEN_PROCESSING)
//! \brief Signal handler function pointer
-//! \sa SignalHandler
+//! \details SignalHandlerFn is provided as a stand alone function pointer with external "C" linkage
+//! \sa SignalHandler, NullSignalHandler
extern "C" {
typedef void (*SignalHandlerFn) (int);
};
+//! \brief Null signal handler function
+//! \param unused the signal number
+//! \details NullSignalHandler is provided as a stand alone function with external "C" linkage
+//! and not a static member function due to the the member function's implicit
+//! external "C++" linkage.
+//! \sa SignalHandler, SignalHandlerFn
+extern "C" {
+ inline void NullSignalHandler(int unused) {CRYPTOPP_UNUSED(unused);}
+};
+
//! Signal handler for Linux and Unix compatibles
//! \tparam S Signal number
//! \tparam O Flag indicating exsting handler should be overwriiten
@@ -38,7 +49,7 @@ extern "C" { //! \warning Do not use SignalHandler in a code block that uses <tt>setjmp</tt> or <tt>longjmp</tt>
//! because the destructor may not run.
//! \since Crypto++ 5.6.5
-//! \sa SignalHandlerFn, \ref CRYPTOPP_ASSERT "CRYPTOPP_ASSERT", DebugTrapHandler
+//! \sa NullSignalHandler, SignalHandlerFn, \ref CRYPTOPP_ASSERT "CRYPTOPP_ASSERT", DebugTrapHandler
template <int S, bool O=false>
struct SignalHandler
{
@@ -72,7 +83,7 @@ struct SignalHandler if (m_old.sa_handler != 0 && !O) break;
// Sun Studio 12.2-12.4 needs the two casts, and they must be C-style casts
- new_handler.sa_handler = (SignalHandlerFn)(pfn ? pfn : (SignalHandlerFn)&SignalHandler::NullHandler);
+ new_handler.sa_handler = (pfn ? pfn : &NullSignalHandler);
new_handler.sa_flags = (pfn ? flags : 0);
ret = sigemptyset (&new_handler.sa_mask);
@@ -97,8 +108,6 @@ private: struct sigaction m_old;
bool m_installed;
- static void NullHandler(int /*unused*/) { /* continue*/ }
-
private:
// Not copyable
SignalHandler(const SignalHandler &);
|