28a080 | 2000-08-14 | Martin Stjernholm | |
|
84aee5 | 2015-10-23 | Henrik Grubbström (Grubba) | |
|
f2180f | 2002-03-12 | Martin Stjernholm | |
#ifndef REQUEST_TRACE_H
#define REQUEST_TRACE_H
#include <roxen.h>
#include <module.h>
|
28a080 | 2000-08-14 | Martin Stjernholm | |
|
b4642f | 2008-09-03 | Jonas Wallden | |
|
1b8710 | 2002-10-25 | Martin Stjernholm | |
|
b4642f | 2008-09-03 | Jonas Wallden | |
|
40ba45 | 2008-09-26 | Martin Stjernholm | |
|
76c8c1 | 2002-03-19 | Martin Stjernholm | |
|
35d155 | 2008-11-06 | Martin Stjernholm | | #if efun (gethrvtime)
#define HRTIME() gethrvtime()
#elif efun (gethrtime)
#define HRTIME() gethrtime()
#else
#define HRTIME() 0
#endif
|
28a080 | 2000-08-14 | Martin Stjernholm | |
#ifdef REQUEST_TRACE
|
35d155 | 2008-11-06 | Martin Stjernholm | | # define ID_TRACE_ENTER(ID, MSG, OBJ) do{ \
int _ts_ = HRTIME(); \
if (object _id_ = (ID)) { \
Roxen->trace_enter ((ID), (MSG), (OBJ), _ts_); \
_id_->misc->trace_overhead += HRTIME() - _ts_; \
} \
}while(0)
# define ID_TRACE_LEAVE(ID, MSG) do{ \
int _ts_ = HRTIME(); \
if (object _id_ = (ID)) { \
Roxen->trace_leave ((ID), (MSG), _ts_); \
_id_->misc->trace_overhead += HRTIME() - _ts_; \
} \
}while(0)
|
28a080 | 2000-08-14 | Martin Stjernholm | |
#else
|
35d155 | 2008-11-06 | Martin Stjernholm | | # define ID_TRACE_ENTER(ID, MSG, OBJ) do{ \
if (object _id_ = (ID)) { \
mapping _id_misc_ = _id_->misc; \
if (function(string,mixed,int:void) _trace_enter = \
|
18b9c5 | 2009-04-21 | Martin Stjernholm | | ([function(string,mixed,int:void)] _id_misc_->trace_enter)) { \
int _ts_ = HRTIME(); \
_trace_enter ((MSG), (OBJ), _ts_); \
_id_->misc->trace_overhead += HRTIME() - _ts_; \
} \
|
35d155 | 2008-11-06 | Martin Stjernholm | | } \
|
fa4f79 | 2000-03-13 | Martin Nilsson | | }while(0)
|
35d155 | 2008-11-06 | Martin Stjernholm | | # define ID_TRACE_LEAVE(ID, MSG) do{ \
if (object _id_ = (ID)) { \
mapping _id_misc_ = _id_->misc; \
if (function(string,int:void) _trace_leave = \
|
18b9c5 | 2009-04-21 | Martin Stjernholm | | ([function(string,int:void)] _id_misc_->trace_leave)) { \
int _ts_ = HRTIME(); \
_trace_leave ((MSG), _ts_); \
_id_->misc->trace_overhead += HRTIME() - _ts_; \
} \
|
35d155 | 2008-11-06 | Martin Stjernholm | | } \
|
fa4f79 | 2000-03-13 | Martin Nilsson | | }while(0)
|
28a080 | 2000-08-14 | Martin Stjernholm | |
|
fa4f79 | 2000-03-13 | Martin Nilsson | | #endif
|
471705 | 2001-05-07 | Per Hedbor | |
|
35d155 | 2008-11-06 | Martin Stjernholm | | #define TRACE_ENTER(MSG,OBJ) ID_TRACE_ENTER (id, (MSG), (OBJ))
#define TRACE_LEAVE(MSG) ID_TRACE_LEAVE (id, (MSG))
|
6e28de | 2008-11-05 | Martin Stjernholm | |
|
76c8c1 | 2002-03-19 | Martin Stjernholm | |
|
52ff1e | 2008-09-26 | Martin Stjernholm | |
|
76c8c1 | 2002-03-19 | Martin Stjernholm | |
|
6e28de | 2008-11-05 | Martin Stjernholm | | #define SIMPLE_ID_TRACE_ENTER(ID, OBJ, MSG...) do { \
|
76c8c1 | 2002-03-19 | Martin Stjernholm | | array _msg_arr_; \
|
6e28de | 2008-11-05 | Martin Stjernholm | | ID_TRACE_ENTER ((ID), \
(_msg_arr_ = ({MSG}), \
|
1b8710 | 2002-10-25 | Martin Stjernholm | | sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
|
b4642f | 2008-09-03 | Jonas Wallden | | (sizeof (_msg_arr_) ? _msg_arr_[0] : "")), \
|
76c8c1 | 2002-03-19 | Martin Stjernholm | | (OBJ)); \
} while (0)
|
6e28de | 2008-11-05 | Martin Stjernholm | | #define SIMPLE_ID_TRACE_LEAVE(ID, MSG...) do { \
|
76c8c1 | 2002-03-19 | Martin Stjernholm | | array _msg_arr_; \
|
6e28de | 2008-11-05 | Martin Stjernholm | | ID_TRACE_LEAVE ((ID), \
(_msg_arr_ = ({MSG}), \
|
879c70 | 2004-05-14 | Martin Stjernholm | | sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
|
b4642f | 2008-09-03 | Jonas Wallden | | (sizeof (_msg_arr_) ? _msg_arr_[0] : ""))); \
|
76c8c1 | 2002-03-19 | Martin Stjernholm | | } while (0)
|
6e28de | 2008-11-05 | Martin Stjernholm | | #define SIMPLE_TRACE_ENTER(OBJ, MSG...) SIMPLE_ID_TRACE_ENTER (id, OBJ, MSG)
#define SIMPLE_TRACE_LEAVE(MSG...) SIMPLE_ID_TRACE_LEAVE (id, MSG)
|
f2180f | 2002-03-12 | Martin Stjernholm | |
#define TAG_TRACE_ENTER(MSG...) do { \
array _msg_arr_; \
string _msg_; \
|
35d155 | 2008-11-06 | Martin Stjernholm | | TRACE_ENTER ("tag <" + (tag && tag->name) + "> " + \
|
1b8710 | 2002-10-25 | Martin Stjernholm | | (_msg_arr_ = ({MSG}), \
_msg_ = sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
|
b4642f | 2008-09-03 | Jonas Wallden | | (sizeof (_msg_arr_) ? _msg_arr_[0] : "")), \
|
f2180f | 2002-03-12 | Martin Stjernholm | | tag); \
DO_IF_DEBUG ( \
if (TAG_DEBUG_TEST (flags & RXML.FLAG_DEBUG)) \
tag_debug ("%O: %s\n", this_object(), \
|
76c8c1 | 2002-03-19 | Martin Stjernholm | | _msg_ || \
(_msg_arr_ = ({MSG}), \
sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
(sizeof (_msg_arr_) ? _msg_arr_[0] : ""))); \
|
1b8710 | 2002-10-25 | Martin Stjernholm | | ); \
|
f2180f | 2002-03-12 | Martin Stjernholm | | } while (0)
#define TAG_TRACE_LEAVE(MSG...) do { \
array _msg_arr_; \
string _msg_; \
|
bc34bf | 2002-10-25 | Martin Stjernholm | | TRACE_LEAVE ((_msg_arr_ = ({MSG}), \
_msg_ = sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
(sizeof (_msg_arr_) ? _msg_arr_[0] : ""))); \
|
f2180f | 2002-03-12 | Martin Stjernholm | | DO_IF_DEBUG ( \
if (TAG_DEBUG_TEST (flags & RXML.FLAG_DEBUG)) { \
if (!_msg_) { \
_msg_arr_ = ({MSG}); \
|
76c8c1 | 2002-03-19 | Martin Stjernholm | | _msg_ = \
sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
(sizeof (_msg_arr_) ? _msg_arr_[0] : ""); \
|
f2180f | 2002-03-12 | Martin Stjernholm | | } \
if (sizeof (_msg_)) tag_debug ("%O: %s\n", this_object(), _msg_); \
} \
); \
} while (0)
|
471705 | 2001-05-07 | Per Hedbor | |
#ifdef AVERAGE_PROFILING
#define PROF_ENTER(X,Y) id->conf->avg_prof_enter( X, Y, id )
#define PROF_LEAVE(X,Y) id->conf->avg_prof_leave( X, Y, id )
#define COND_PROF_ENTER(X,Y,Z) if(X)PROF_ENTER(Y,Z)
#define COND_PROF_LEAVE(X,Y,Z) if(X)PROF_LEAVE(Y,Z)
#else
#define PROF_ENTER(X,Y)
#define PROF_LEAVE(X,Y)
#define COND_PROF_ENTER(X,Y,Z)
#define COND_PROF_LEAVE(X,Y,Z)
#endif
|
f2180f | 2002-03-12 | Martin Stjernholm | |
#endif // !REQUEST_TRACE_H
|