/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
*
* Copyright ( c ) International Business Machines Corp . , 2000 , 2002
* Modified by Steve French ( sfrench @ us . ibm . com )
*/
#ifndef _H_CIFS_DEBUG
#define _H_CIFS_DEBUG
#ifdef pr_fmt
#undef pr_fmt
#endif
#define pr_fmt(fmt) "CIFS: " fmt
void cifs_dump_mem(char *label, void *data, int length);
void cifs_dump_detail(void *buf, struct TCP_Server_Info *ptcp_info);
void cifs_dump_mids(struct TCP_Server_Info *);
extern bool traceSMB; /* flag which enables the function below */
void dump_smb(void *, int );
#define CIFS_INFO 0 x01
#define CIFS_RC 0 x02
#define CIFS_TIMER 0 x04
#define VFS 1
#define FYI 2
extern int cifsFYI;
#ifdef CONFIG_CIFS_DEBUG2
#define NOISY 4
#else
#define NOISY 0
#endif
#define ONCE 8
/*
* debug ON
* - - - - - - - -
*/
#ifdef CONFIG_CIFS_DEBUG
/*
* When adding tracepoints and debug messages we have various choices .
* Some considerations :
*
* Use cifs_dbg ( VFS , . . . ) for things we always want logged , and the user to see
* cifs_info ( . . . ) slightly less important , admin can filter via loglevel > 6
* cifs_dbg ( FYI , . . . ) minor debugging messages , off by default
* trace_smb3_ * ftrace functions are preferred for complex debug messages
* intended for developers or experienced admins , off by default
*/
/* Information level messages, minor events */
#define cifs_info_func(ratefunc, fmt, ...) \
pr_info_ ## ratefunc(fmt, ## __VA_ARGS__)
#define cifs_info(fmt, ...) \
cifs_info_func(ratelimited, fmt, ## __VA_ARGS__)
/* information message: e.g., configuration, major event */
#define cifs_dbg_func(ratefunc, type, fmt, ...) \
do { \
if ((type) & FYI && cifsFYI & CIFS_INFO) { \
pr_debug_ ## ratefunc("%s: " fmt, \
__FILE__, ## __VA_ARGS__); \
} else if ((type) & VFS) { \
pr_err_ ## ratefunc("VFS: " fmt, ## __VA_ARGS__); \
} else if ((type) & NOISY && (NOISY != 0 )) { \
pr_debug_ ## ratefunc(fmt, ## __VA_ARGS__); \
} \
} while (0 )
#define cifs_dbg(type, fmt, ...) \
do { \
if ((type) & ONCE) \
cifs_dbg_func(once, type, fmt, ## __VA_ARGS__); \
else \
cifs_dbg_func(ratelimited, type, fmt, ## __VA_ARGS__); \
} while (0 )
#define cifs_server_dbg_func(ratefunc, type, fmt, ...) \
do { \
spin_lock(&server->srv_lock); \
if ((type) & FYI && cifsFYI & CIFS_INFO) { \
pr_debug_ ## ratefunc("%s: \\\\%s " fmt, \
__FILE__, server->hostname, \
## __VA_ARGS__); \
} else if ((type) & VFS) { \
pr_err_ ## ratefunc("VFS: \\\\%s " fmt, \
server->hostname, ## __VA_ARGS__); \
} else if ((type) & NOISY && (NOISY != 0 )) { \
pr_debug_ ## ratefunc("\\\\%s " fmt, \
server->hostname, ## __VA_ARGS__); \
} \
spin_unlock(&server->srv_lock); \
} while (0 )
#define cifs_server_dbg(type, fmt, ...) \
do { \
if ((type) & ONCE) \
cifs_server_dbg_func(once, type, fmt, ## __VA_ARGS__); \
else \
cifs_server_dbg_func(ratelimited, type, fmt, \
## __VA_ARGS__); \
} while (0 )
#define cifs_tcon_dbg_func(ratefunc, type, fmt, ...) \
do { \
const char *tn = "" ; \
if (tcon && tcon->tree_name) \
tn = tcon->tree_name; \
if ((type) & FYI && cifsFYI & CIFS_INFO) { \
pr_debug_ ## ratefunc("%s: %s " fmt, \
__FILE__, tn, ## __VA_ARGS__); \
} else if ((type) & VFS) { \
pr_err_ ## ratefunc("VFS: %s " fmt, tn, ## __VA_ARGS__); \
} else if ((type) & NOISY && (NOISY != 0 )) { \
pr_debug_ ## ratefunc("%s " fmt, tn, ## __VA_ARGS__); \
} \
} while (0 )
#define cifs_tcon_dbg(type, fmt, ...) \
do { \
if ((type) & ONCE) \
cifs_tcon_dbg_func(once, type, fmt, ## __VA_ARGS__); \
else \
cifs_tcon_dbg_func(ratelimited, type, fmt, \
## __VA_ARGS__); \
} while (0 )
/*
* debug OFF
* - - - - - - - - -
*/
#else /* _CIFS_DEBUG */
#define cifs_dbg(type, fmt, ...) \
do { \
if (0 ) \
pr_debug(fmt, ## __VA_ARGS__); \
} while (0 )
#define cifs_server_dbg(type, fmt, ...) \
do { \
if (0 ) \
pr_debug("\\\\%s " fmt, \
server->hostname, ## __VA_ARGS__); \
} while (0 )
#define cifs_tcon_dbg(type, fmt, ...) \
do { \
if (0 ) \
pr_debug("%s " fmt, tcon->tree_name, ## __VA_ARGS__); \
} while (0 )
#define cifs_info(fmt, ...) \
pr_info(fmt, ## __VA_ARGS__)
#endif
#endif /* _H_CIFS_DEBUG */
Messung V0.5 in Prozent C=94 H=41 G=72
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-09-30)
¤
*© Formatika GbR, Deutschland