-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2011, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
*
* requires -Wall. Unfortunately this rules out use of likely/unlikely.
*/
-#define LASSERT(cond) \
+#define LASSERTF(cond, fmt, ...) \
do { \
if (cond) \
; \
- else \
- libcfs_assertion_failed( #cond , __FILE__, \
- __FUNCTION__, __LINE__); \
-} while(0)
-
-#define LASSERTF(cond, fmt, ...) \
-do { \
- if (cond) \
- ; \
- else { \
- libcfs_debug_msg(NULL, DEBUG_SUBSYSTEM, D_EMERG, \
- __FILE__, __FUNCTION__,__LINE__, \
- "ASSERTION(" #cond ") failed: " fmt, \
+ else { \
+ LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, D_EMERG, NULL); \
+ libcfs_debug_msg(&msgdata, \
+ "ASSERTION( %s ) failed: " fmt, #cond, \
## __VA_ARGS__); \
- LBUG(); \
- } \
+ LBUG(); \
+ } \
} while(0)
-#else /* !LASSERT_CHECKED */
+#define LASSERT(cond) LASSERTF(cond, "\n")
-#define LASSERT(cond) \
-do { \
- if (unlikely(!(cond))) \
- libcfs_assertion_failed(#cond , __FILE__, \
- __FUNCTION__, __LINE__); \
-} while(0)
+#else /* !LASSERT_CHECKED */
#define LASSERTF(cond, fmt, ...) \
do { \
if (unlikely(!(cond))) { \
- libcfs_debug_msg(NULL, DEBUG_SUBSYSTEM, D_EMERG, \
- __FILE__, __FUNCTION__,__LINE__, \
- "ASSERTION(" #cond ") failed: " fmt, \
+ LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, D_EMERG, NULL); \
+ libcfs_debug_msg(&msgdata, \
+ "ASSERTION( %s ) failed: " fmt, #cond, \
## __VA_ARGS__ ); \
LBUG(); \
} \
} while(0)
+#define LASSERT(cond) LASSERTF(cond, "\n")
#endif /* !LASSERT_CHECKED */
#else /* !LIBCFS_DEBUG */
/* sizeof is to use expression without evaluating it. */
#define KLASSERT(e) LASSERT(e)
-void lbug_with_loc(const char *file, const char *func, const int line)
- __attribute__((noreturn));
+void lbug_with_loc(struct libcfs_debug_msg_data *) __attribute__((noreturn));
-#define LBUG() lbug_with_loc(__FILE__, __FUNCTION__, __LINE__)
+#define LBUG() \
+do { \
+ LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, D_EMERG, NULL); \
+ lbug_with_loc(&msgdata); \
+} while(0)
extern cfs_atomic_t libcfs_kmemory;
/*
void libcfs_debug_dumpstack(cfs_task_t *tsk);
void libcfs_run_upcall(char **argv);
-void libcfs_run_lbug_upcall(const char * file, const char *fn, const int line);
+void libcfs_run_lbug_upcall(struct libcfs_debug_msg_data *);
void libcfs_debug_dumplog(void);
int libcfs_debug_init(unsigned long bufsize);
int libcfs_debug_cleanup(void);
# else
# define LIBCFS_ALLOC(ptr, size) do { (ptr) = calloc(1,size); } while (0)
# endif
-# define LIBCFS_FREE(a, b) do { free(a); } while (0)
+# define LIBCFS_FREE(ptr, size) do { free(ptr); } while((size) - (size))
void libcfs_debug_dumplog(void);
int libcfs_debug_init(unsigned long bufsize);