Files
epics-base/modules/libcom/src/osi/epicsStackTrace.h
2022-07-04 16:27:48 -05:00

60 lines
1.5 KiB
C

/*
* Copyright: Stanford University / SLAC National Laboratory.
*
* SPDX-License-Identifier: EPICS
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
*
* Author: Till Straumann <strauman@slac.stanford.edu>, 2011, 2014
*/
/**
* \file epicsStackTrace.h
*
* Functions for printing the stack trace
*/
#ifndef INC_epicsStackTrace_H
#define INC_epicsStackTrace_H
#include "libComAPI.h"
#ifdef __cplusplus
extern "C" {
#endif
/** \brief Dump a stack trace
*
* Dump a stack trace to the errlog.
*/
LIBCOM_API void epicsStackTrace(void);
/* Inquire about functionality implemented on your system */
/** Bit mask to check if stack trace provides numerical addresses.*/
#define EPICS_STACKTRACE_ADDRESSES (1<<0)
/** Bit mask to check if stack trace is able to lookup dynamic symbols.*/
#define EPICS_STACKTRACE_DYN_SYMBOLS (1<<1)
/** Bit mask to check if stack trace is able to lookup global symbols */
#define EPICS_STACKTRACE_GBL_SYMBOLS (1<<2)
/** Bit mask to check if stack trace is able to lookup local symbols */
#define EPICS_STACKTRACE_LCL_SYMBOLS (1<<3)
/** \brief Get supported stacktrace features
*
* Returns an ORed bitset of supported features. Use the EPICS_STACKTRACE_ masks to
* check if a feature is supported.
*
* \return 0 if getting the stack trace is unsupported. Otherwise
* returns an ORed bitset of supported features.
*/
LIBCOM_API int epicsStackTraceGetFeatures(void);
#ifdef __cplusplus
}
#endif
#endif