~ubuntu-branches/ubuntu/wily/spl-linux/wily

« back to all changes in this revision

Viewing changes to include/sys/debug.h

  • Committer: Package Import Robot
  • Author(s): Liang Guo
  • Date: 2014-07-31 15:16:53 UTC
  • Revision ID: package-import@ubuntu.com-20140731151653-tgao12alohj26jcs
Tags: upstream-0.6.3+git20140731
ImportĀ upstreamĀ versionĀ 0.6.3+git20140731

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
#define SPL_DEBUG_STR   ""
55
55
 
56
56
#define PANIC(fmt, a...)                                                \
57
 
do {                                                                    \
58
 
        printk(KERN_EMERG fmt, ## a);                                   \
59
 
        spl_debug_bug(__FILE__, __FUNCTION__, __LINE__, 0);             \
60
 
} while (0)
 
57
        spl_PANIC(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
61
58
 
62
59
#define __ASSERT(x)                     ((void)0)
63
60
#define ASSERT(x)                       ((void)0)
64
61
#define ASSERTF(x, y, z...)             ((void)0)
65
62
#define ASSERTV(x)
66
63
#define VERIFY(cond)                                                    \
67
 
do {                                                                    \
68
 
        if (unlikely(!(cond)))                                          \
69
 
                PANIC("VERIFY(" #cond ") failed\n");                    \
70
 
} while (0)
 
64
        (void)(unlikely(!(cond)) &&                                     \
 
65
                spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
 
66
                "%s", "VERIFY(" #cond ") failed\n"))
71
67
 
72
68
#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE, FMT, CAST)                  \
73
 
do {                                                                    \
74
 
        if (!((TYPE)(LEFT) OP (TYPE)(RIGHT)))                           \
75
 
                PANIC("VERIFY3(" #LEFT " " #OP " " #RIGHT ") "          \
 
69
        (void)((!((TYPE)(LEFT) OP (TYPE)(RIGHT))) &&                    \
 
70
                spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
 
71
                "VERIFY3(" #LEFT " " #OP " " #RIGHT ") "                \
76
72
                    "failed (" FMT " " #OP " " FMT ")\n",               \
77
 
                    CAST (LEFT), CAST (RIGHT));                         \
78
 
} while (0)
 
73
                    CAST (LEFT), CAST (RIGHT)))
79
74
 
80
75
#define VERIFY3S(x,y,z) VERIFY3_IMPL(x, y, z, int64_t, "%lld", (long long))
81
76
#define VERIFY3U(x,y,z) VERIFY3_IMPL(x, y, z, uint64_t, "%llu",         \
94
89
#define SPL_DEBUG_STR   " (DEBUG mode)"
95
90
 
96
91
#define PANIC(fmt, a...)                                                \
97
 
do {                                                                    \
98
 
        spl_debug_msg(NULL, 0, 0,                                       \
99
 
             __FILE__, __FUNCTION__, __LINE__,  fmt, ## a);             \
100
 
        spl_debug_bug(__FILE__, __FUNCTION__, __LINE__, 0);             \
101
 
} while (0)
 
92
        spl_PANIC(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
102
93
 
103
94
/* ASSERTION that is safe to use within the debug system */
104
95
#define __ASSERT(cond)                                                  \
111
102
 
112
103
/* ASSERTION that will debug log used outside the debug sysytem */
113
104
#define ASSERT(cond)                                                    \
114
 
do {                                                                    \
115
 
        if (unlikely(!(cond)))                                          \
116
 
                PANIC("ASSERTION(" #cond ") failed\n");                 \
117
 
} while (0)
 
105
        (void)(unlikely(!(cond)) &&                                     \
 
106
                spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
 
107
                "%s", "ASSERTION(" #cond ") failed\n"))
118
108
 
119
109
#define ASSERTF(cond, fmt, a...)                                        \
120
 
do {                                                                    \
121
 
        if (unlikely(!(cond)))                                          \
122
 
                PANIC("ASSERTION(" #cond ") failed: " fmt, ## a);       \
123
 
} while (0)
 
110
        (void)(unlikely(!(cond)) &&                                     \
 
111
                spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
 
112
                "ASSERTION(" #cond ") failed: " fmt, ## a))
124
113
 
125
114
#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE, FMT, CAST)                  \
126
 
do {                                                                    \
127
 
        if (!((TYPE)(LEFT) OP (TYPE)(RIGHT)))                           \
128
 
                PANIC("VERIFY3(" #LEFT " " #OP " " #RIGHT ") "          \
 
115
        (void)((!((TYPE)(LEFT) OP (TYPE)(RIGHT))) &&                    \
 
116
                spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
 
117
                "VERIFY3(" #LEFT " " #OP " " #RIGHT ") "                \
129
118
                    "failed (" FMT " " #OP " " FMT ")\n",               \
130
 
                    CAST (LEFT), CAST (RIGHT));                         \
131
 
} while (0)
 
119
                    CAST (LEFT), CAST (RIGHT)))
132
120
 
133
121
#define VERIFY3S(x,y,z) VERIFY3_IMPL(x, y, z, int64_t, "%lld", (long long))
134
122
#define VERIFY3U(x,y,z) VERIFY3_IMPL(x, y, z, uint64_t, "%llu",         \
145
133
#define VERIFY(x)       ASSERT(x)
146
134
 
147
135
#endif /* NDEBUG */
 
136
 
 
137
/*
 
138
 * Helpers for the Solaris debug macros above
 
139
 */
 
140
extern int spl_PANIC(char *filename, const char *functionname,
 
141
        int lineno, const char *fmt, ...);
 
142
 
 
143
/*
 
144
 * Compile-time assertion. The condition 'x' must be constant.
 
145
 */
 
146
#define CTASSERT_GLOBAL(x)              _CTASSERT(x, __LINE__)
 
147
#define CTASSERT(x)                     { _CTASSERT(x, __LINE__); }
 
148
#define _CTASSERT(x, y)                 __CTASSERT(x, y)
 
149
#define __CTASSERT(x, y)                        \
 
150
        typedef char __attribute__ ((unused))   \
 
151
        __compile_time_assertion__ ## y[(x) ? 1 : -1]
 
152
 
148
153
#endif /* SPL_DEBUG_H */