| 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 | |
| 10 | // clang-format off |
| 11 | #ifndef _LINUX_NTFS3_DEBUG_H |
| 12 | #define _LINUX_NTFS3_DEBUG_H |
| 13 | |
| 14 | struct super_block; |
| 15 | struct inode; |
| 16 | |
| 17 | #ifndef Add2Ptr |
| 18 | #define Add2Ptr(P, I) ((void *)((u8 *)(P) + (I))) |
| 19 | #define PtrOffset(B, O) ((size_t)((size_t)(O) - (size_t)(B))) |
| 20 | #endif |
| 21 | |
| 22 | #ifdef CONFIG_PRINTK |
| 23 | __printf(2, 3) |
| 24 | void ntfs_printk(const struct super_block *sb, const char *fmt, ...); |
| 25 | __printf(2, 3) |
| 26 | void ntfs_inode_printk(struct inode *inode, const char *fmt, ...); |
| 27 | #else |
| 28 | static inline __printf(2, 3) |
| 29 | void ntfs_printk(const struct super_block *sb, const char *fmt, ...) |
| 30 | { |
| 31 | } |
| 32 | |
| 33 | static inline __printf(2, 3) |
| 34 | void ntfs_inode_printk(struct inode *inode, const char *fmt, ...) |
| 35 | { |
| 36 | } |
| 37 | #endif |
| 38 | |
| 39 | /* |
| 40 | * Logging macros. Thanks Joe Perches <joe@perches.com> for implementation. |
| 41 | */ |
| 42 | |
| 43 | #define ntfs_err(sb, fmt, ...) ntfs_printk(sb, KERN_ERR fmt, ##__VA_ARGS__) |
| 44 | #define ntfs_warn(sb, fmt, ...) ntfs_printk(sb, KERN_WARNING fmt, ##__VA_ARGS__) |
| 45 | #define ntfs_info(sb, fmt, ...) ntfs_printk(sb, KERN_INFO fmt, ##__VA_ARGS__) |
| 46 | #define ntfs_notice(sb, fmt, ...) \ |
| 47 | ntfs_printk(sb, KERN_NOTICE fmt, ##__VA_ARGS__) |
| 48 | |
| 49 | #define ntfs_inode_err(inode, fmt, ...) \ |
| 50 | ntfs_inode_printk(inode, KERN_ERR fmt, ##__VA_ARGS__) |
| 51 | #define ntfs_inode_warn(inode, fmt, ...) \ |
| 52 | ntfs_inode_printk(inode, KERN_WARNING fmt, ##__VA_ARGS__) |
| 53 | |
| 54 | #endif /* _LINUX_NTFS3_DEBUG_H */ |
| 55 | // clang-format on |
| 56 | |