Whamcloud - gitweb
b=23289 cleanup assertion on atomic
[fs/lustre-release.git] / libcfs / include / libcfs / libcfs_private.h
index a859e88..92f9854 100644 (file)
@@ -288,6 +288,98 @@ int libcfs_debug_cleanup(void);
 /* !__KERNEL__ */
 #endif
 
+#define LASSERT_ATOMIC_ENABLED          (1)
+
+#if LASSERT_ATOMIC_ENABLED
+
+/** assert value of @a is equal to @v */
+#define LASSERT_ATOMIC_EQ(a, v)                                 \
+do {                                                            \
+        LASSERTF(cfs_atomic_read(a) == v,                       \
+                 "value: %d\n", cfs_atomic_read((a)));          \
+} while (0)
+
+/** assert value of @a is unequal to @v */
+#define LASSERT_ATOMIC_NE(a, v)                                 \
+do {                                                            \
+        LASSERTF(cfs_atomic_read(a) != v,                       \
+                 "value: %d\n", cfs_atomic_read((a)));          \
+} while (0)
+
+/** assert value of @a is little than @v */
+#define LASSERT_ATOMIC_LT(a, v)                                 \
+do {                                                            \
+        LASSERTF(cfs_atomic_read(a) < v,                        \
+                 "value: %d\n", cfs_atomic_read((a)));          \
+} while (0)
+
+/** assert value of @a is little/equal to @v */
+#define LASSERT_ATOMIC_LE(a, v)                                 \
+do {                                                            \
+        LASSERTF(cfs_atomic_read(a) <= v,                       \
+                 "value: %d\n", cfs_atomic_read((a)));          \
+} while (0)
+
+/** assert value of @a is great than @v */
+#define LASSERT_ATOMIC_GT(a, v)                                 \
+do {                                                            \
+        LASSERTF(cfs_atomic_read(a) > v,                        \
+                 "value: %d\n", cfs_atomic_read((a)));          \
+} while (0)
+
+/** assert value of @a is great/equal to @v */
+#define LASSERT_ATOMIC_GE(a, v)                                 \
+do {                                                            \
+        LASSERTF(cfs_atomic_read(a) >= v,                       \
+                 "value: %d\n", cfs_atomic_read((a)));          \
+} while (0)
+
+/** assert value of @a is great than @v1 and little than @v2 */
+#define LASSERT_ATOMIC_GT_LT(a, v1, v2)                         \
+do {                                                            \
+        int __v = cfs_atomic_read(a);                           \
+        LASSERTF(__v > v1 && __v < v2, "value: %d\n", __v);     \
+} while (0)
+
+/** assert value of @a is great than @v1 and little/equal to @v2 */
+#define LASSERT_ATOMIC_GT_LE(a, v1, v2)                         \
+do {                                                            \
+        int __v = cfs_atomic_read(a);                           \
+        LASSERTF(__v > v1 && __v <= v2, "value: %d\n", __v);    \
+} while (0)
+
+/** assert value of @a is great/equal to @v1 and little than @v2 */
+#define LASSERT_ATOMIC_GE_LT(a, v1, v2)                         \
+do {                                                            \
+        int __v = cfs_atomic_read(a);                           \
+        LASSERTF(__v >= v1 && __v < v2, "value: %d\n", __v);    \
+} while (0)
+
+/** assert value of @a is great/equal to @v1 and little/equal to @v2 */
+#define LASSERT_ATOMIC_GE_LE(a, v1, v2)                         \
+do {                                                            \
+        int __v = cfs_atomic_read(a);                           \
+        LASSERTF(__v >= v1 && __v <= v2, "value: %d\n", __v);   \
+} while (0)
+
+#else /* !LASSERT_ATOMIC_ENABLED */
+
+#define LASSERT_ATOMIC_EQ(a, v)                 do {} while (0)
+#define LASSERT_ATOMIC_NE(a, v)                 do {} while (0)
+#define LASSERT_ATOMIC_LT(a, v)                 do {} while (0)
+#define LASSERT_ATOMIC_LE(a, v)                 do {} while (0)
+#define LASSERT_ATOMIC_GT(a, v)                 do {} while (0)
+#define LASSERT_ATOMIC_GE(a, v)                 do {} while (0)
+#define LASSERT_ATOMIC_GT_LT(a, v1, v2)         do {} while (0)
+#define LASSERT_ATOMIC_GT_LE(a, v1, v2)         do {} while (0)
+#define LASSERT_ATOMIC_GE_LT(a, v1, v2)         do {} while (0)
+#define LASSERT_ATOMIC_GE_LE(a, v1, v2)         do {} while (0)
+
+#endif /* LASSERT_ATOMIC_ENABLED */
+
+#define LASSERT_ATOMIC_ZERO(a)                  LASSERT_ATOMIC_EQ(a, 0)
+#define LASSERT_ATOMIC_POS(a)                   LASSERT_ATOMIC_GT(a, 0)
+
 #define CFS_ALLOC_PTR(ptr)      LIBCFS_ALLOC(ptr, sizeof (*(ptr)));
 #define CFS_FREE_PTR(ptr)       LIBCFS_FREE(ptr, sizeof (*(ptr)));
 
@@ -318,25 +410,29 @@ __u32       libcfs_str2net(const char *str);
 lnet_nid_t  libcfs_str2nid(const char *str);
 int         libcfs_str2anynid(lnet_nid_t *nid, const char *str);
 char       *libcfs_id2str(lnet_process_id_t id);
-int         libcfs_str2server(char *name, int *type, __u32 *idx, char **endptr);
 int         cfs_iswhite(char c);
 void        cfs_free_nidlist(cfs_list_t *list);
 int         cfs_parse_nidlist(char *str, int len, cfs_list_t *list);
 int         cfs_match_nid(lnet_nid_t nid, cfs_list_t *list);
 
+/** \addtogroup lnet_addr
+ * @{ */
 /* how an LNET NID encodes net:address */
+/** extract the address part of an lnet_nid_t */
 #define LNET_NIDADDR(nid)      ((__u32)((nid) & 0xffffffff))
+/** extract the network part of an lnet_nid_t */
 #define LNET_NIDNET(nid)       ((__u32)(((nid) >> 32)) & 0xffffffff)
+/** make an lnet_nid_t from a network part and an address part */
 #define LNET_MKNID(net,addr)   ((((__u64)(net))<<32)|((__u64)(addr)))
 /* how net encodes type:number */
 #define LNET_NETNUM(net)       ((net) & 0xffff)
 #define LNET_NETTYP(net)       (((net) >> 16) & 0xffff)
 #define LNET_MKNET(typ,num)    ((((__u32)(typ))<<16)|((__u32)(num)))
+/** @} lnet_addr */
 
 /* max value for numeric network address */
 #define MAX_NUMERIC_VALUE 0xffffffff
 
-
 /* implication */
 #define ergo(a, b) (!(a) || (b))
 /* logical equivalence */
@@ -346,12 +442,6 @@ int         cfs_match_nid(lnet_nid_t nid, cfs_list_t *list);
 # define CFS_CURRENT_TIME time(0)
 #endif
 
-/* Server types */
-#define SVTYPE_MDT   0x0001
-#define SVTYPE_OST   0x0002
-#define SVTYPE_MGS   0x0004
-#define SVTYPE_ALL   0x0008
-
 /* --------------------------------------------------------------------
  * Light-weight trace
  * Support for temporary event tracing with minimal Heisenberg effect.