xref: /linux/fs/ntfs3/debug.h (revision f8d87ed9f0d546ac5b05e8e7d2b148d4b77599fa)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  *
4  * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5  *
6  * useful functions for debugging
7  */
8 
9 // clang-format off
10 #ifndef Add2Ptr
11 #define Add2Ptr(P, I)		((void *)((u8 *)(P) + (I)))
12 #define PtrOffset(B, O)		((size_t)((size_t)(O) - (size_t)(B)))
13 #endif
14 
15 #define QuadAlign(n)		(((n) + 7u) & (~7u))
16 #define IsQuadAligned(n)	(!((size_t)(n)&7u))
17 #define Quad2Align(n)		(((n) + 15u) & (~15u))
18 #define IsQuad2Aligned(n)	(!((size_t)(n)&15u))
19 #define Quad4Align(n)		(((n) + 31u) & (~31u))
20 #define IsSizeTAligned(n)	(!((size_t)(n) & (sizeof(size_t) - 1)))
21 #define DwordAlign(n)		(((n) + 3u) & (~3u))
22 #define IsDwordAligned(n)	(!((size_t)(n)&3u))
23 #define WordAlign(n)		(((n) + 1u) & (~1u))
24 #define IsWordAligned(n)	(!((size_t)(n)&1u))
25 
26 #ifdef CONFIG_PRINTK
27 __printf(2, 3)
28 void ntfs_printk(const struct super_block *sb, const char *fmt, ...);
29 __printf(2, 3)
30 void ntfs_inode_printk(struct inode *inode, const char *fmt, ...);
31 #else
32 static inline __printf(2, 3)
33 void ntfs_printk(const struct super_block *sb, const char *fmt, ...)
34 {
35 }
36 
37 static inline __printf(2, 3)
38 void ntfs_inode_printk(struct inode *inode, const char *fmt, ...)
39 {
40 }
41 #endif
42 
43 /*
44  * Logging macros ( thanks Joe Perches <joe@perches.com> for implementation )
45  */
46 
47 #define ntfs_err(sb, fmt, ...)  ntfs_printk(sb, KERN_ERR fmt, ##__VA_ARGS__)
48 #define ntfs_warn(sb, fmt, ...) ntfs_printk(sb, KERN_WARNING fmt, ##__VA_ARGS__)
49 #define ntfs_info(sb, fmt, ...) ntfs_printk(sb, KERN_INFO fmt, ##__VA_ARGS__)
50 #define ntfs_notice(sb, fmt, ...)                                              \
51 	ntfs_printk(sb, KERN_NOTICE fmt, ##__VA_ARGS__)
52 
53 #define ntfs_inode_err(inode, fmt, ...)                                        \
54 	ntfs_inode_printk(inode, KERN_ERR fmt, ##__VA_ARGS__)
55 #define ntfs_inode_warn(inode, fmt, ...)                                       \
56 	ntfs_inode_printk(inode, KERN_WARNING fmt, ##__VA_ARGS__)
57 
58 #define ntfs_malloc(s)		kmalloc(s, GFP_NOFS)
59 #define ntfs_zalloc(s)		kzalloc(s, GFP_NOFS)
60 #define ntfs_vmalloc(s)		kvmalloc(s, GFP_KERNEL)
61 #define ntfs_free(p)		kfree(p)
62 #define ntfs_vfree(p)		kvfree(p)
63 #define ntfs_memdup(src, len)	kmemdup(src, len, GFP_NOFS)
64 // clang-format on
65