void __ceph_assert_fail(const char *assertion, const char *file, int line,
const char *func)
{
+ g_assert_condition = assertion;
+ g_assert_file = file;
+ g_assert_line = line;
+ g_assert_func = func;
+ g_assert_thread = (unsigned long long)pthread_self();
+ pthread_getname_np(pthread_self(), g_assert_thread_name,
+ sizeof(g_assert_thread_name));
+
ostringstream tss;
tss << ceph_clock_now();
ostringstream tss;
tss << ceph_clock_now();
+ g_assert_condition = assertion;
+ g_assert_file = file;
+ g_assert_line = line;
+ g_assert_func = func;
+ g_assert_thread = (unsigned long long)pthread_self();
+ pthread_getname_np(pthread_self(), g_assert_thread_name,
+ sizeof(g_assert_thread_name));
+
class BufAppender {
public:
BufAppender(char* buf, int size) : bufptr(buf), remaining(size) {
*/
CephContext *g_ceph_context = NULL;
md_config_t *g_conf = NULL;
+
+const char *g_assert_file = 0;
+int g_assert_line = 0;
+const char *g_assert_func = 0;
+const char *g_assert_condition = 0;
+unsigned long long g_assert_thread = 0;
+char g_assert_thread_name[4096];
extern CephContext *g_ceph_context;
extern md_config_t *g_conf;
+extern const char *g_assert_file;
+extern int g_assert_line;
+extern const char *g_assert_func;
+extern const char *g_assert_condition;
+extern unsigned long long g_assert_thread;
+extern char g_assert_thread_name[4096];
+
#endif