xref: /aosp_15_r20/external/libfuse/include/fuse_log.h (revision 9e5649576b786774a32d7b0252c9cd8c6538fa49)
1*9e564957SAndroid Build Coastguard Worker /*
2*9e564957SAndroid Build Coastguard Worker   FUSE: Filesystem in Userspace
3*9e564957SAndroid Build Coastguard Worker   Copyright (C) 2019  Red Hat, Inc.
4*9e564957SAndroid Build Coastguard Worker 
5*9e564957SAndroid Build Coastguard Worker   This program can be distributed under the terms of the GNU LGPLv2.
6*9e564957SAndroid Build Coastguard Worker   See the file COPYING.LIB.
7*9e564957SAndroid Build Coastguard Worker */
8*9e564957SAndroid Build Coastguard Worker 
9*9e564957SAndroid Build Coastguard Worker #ifndef FUSE_LOG_H_
10*9e564957SAndroid Build Coastguard Worker #define FUSE_LOG_H_
11*9e564957SAndroid Build Coastguard Worker 
12*9e564957SAndroid Build Coastguard Worker /** @file
13*9e564957SAndroid Build Coastguard Worker  *
14*9e564957SAndroid Build Coastguard Worker  * This file defines the logging interface of FUSE
15*9e564957SAndroid Build Coastguard Worker  */
16*9e564957SAndroid Build Coastguard Worker 
17*9e564957SAndroid Build Coastguard Worker #include <stdarg.h>
18*9e564957SAndroid Build Coastguard Worker 
19*9e564957SAndroid Build Coastguard Worker #ifdef __cplusplus
20*9e564957SAndroid Build Coastguard Worker extern "C" {
21*9e564957SAndroid Build Coastguard Worker #endif
22*9e564957SAndroid Build Coastguard Worker 
23*9e564957SAndroid Build Coastguard Worker /**
24*9e564957SAndroid Build Coastguard Worker  * Log severity level
25*9e564957SAndroid Build Coastguard Worker  *
26*9e564957SAndroid Build Coastguard Worker  * These levels correspond to syslog(2) log levels since they are widely used.
27*9e564957SAndroid Build Coastguard Worker  */
28*9e564957SAndroid Build Coastguard Worker enum fuse_log_level {
29*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_EMERG,
30*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_ALERT,
31*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_CRIT,
32*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_ERR,
33*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_WARNING,
34*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_NOTICE,
35*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_INFO,
36*9e564957SAndroid Build Coastguard Worker 	FUSE_LOG_DEBUG
37*9e564957SAndroid Build Coastguard Worker };
38*9e564957SAndroid Build Coastguard Worker 
39*9e564957SAndroid Build Coastguard Worker /**
40*9e564957SAndroid Build Coastguard Worker  * Log message handler function.
41*9e564957SAndroid Build Coastguard Worker  *
42*9e564957SAndroid Build Coastguard Worker  * This function must be thread-safe.  It may be called from any libfuse
43*9e564957SAndroid Build Coastguard Worker  * function, including fuse_parse_cmdline() and other functions invoked before
44*9e564957SAndroid Build Coastguard Worker  * a FUSE filesystem is created.
45*9e564957SAndroid Build Coastguard Worker  *
46*9e564957SAndroid Build Coastguard Worker  * Install a custom log message handler function using fuse_set_log_func().
47*9e564957SAndroid Build Coastguard Worker  *
48*9e564957SAndroid Build Coastguard Worker  * @param level log severity level
49*9e564957SAndroid Build Coastguard Worker  * @param fmt sprintf-style format string including newline
50*9e564957SAndroid Build Coastguard Worker  * @param ap format string arguments
51*9e564957SAndroid Build Coastguard Worker  */
52*9e564957SAndroid Build Coastguard Worker typedef void (*fuse_log_func_t)(enum fuse_log_level level,
53*9e564957SAndroid Build Coastguard Worker 				const char *fmt, va_list ap);
54*9e564957SAndroid Build Coastguard Worker 
55*9e564957SAndroid Build Coastguard Worker /**
56*9e564957SAndroid Build Coastguard Worker  * Install a custom log handler function.
57*9e564957SAndroid Build Coastguard Worker  *
58*9e564957SAndroid Build Coastguard Worker  * Log messages are emitted by libfuse functions to report errors and debug
59*9e564957SAndroid Build Coastguard Worker  * information.  Messages are printed to stderr by default but this can be
60*9e564957SAndroid Build Coastguard Worker  * overridden by installing a custom log message handler function.
61*9e564957SAndroid Build Coastguard Worker  *
62*9e564957SAndroid Build Coastguard Worker  * The log message handler function is global and affects all FUSE filesystems
63*9e564957SAndroid Build Coastguard Worker  * created within this process.
64*9e564957SAndroid Build Coastguard Worker  *
65*9e564957SAndroid Build Coastguard Worker  * @param func a custom log message handler function or NULL to revert to
66*9e564957SAndroid Build Coastguard Worker  *             the default
67*9e564957SAndroid Build Coastguard Worker  */
68*9e564957SAndroid Build Coastguard Worker void fuse_set_log_func(fuse_log_func_t func);
69*9e564957SAndroid Build Coastguard Worker 
70*9e564957SAndroid Build Coastguard Worker /**
71*9e564957SAndroid Build Coastguard Worker  * Emit a log message
72*9e564957SAndroid Build Coastguard Worker  *
73*9e564957SAndroid Build Coastguard Worker  * @param level severity level (FUSE_LOG_ERR, FUSE_LOG_DEBUG, etc)
74*9e564957SAndroid Build Coastguard Worker  * @param fmt sprintf-style format string including newline
75*9e564957SAndroid Build Coastguard Worker  */
76*9e564957SAndroid Build Coastguard Worker void fuse_log(enum fuse_log_level level, const char *fmt, ...);
77*9e564957SAndroid Build Coastguard Worker 
78*9e564957SAndroid Build Coastguard Worker #ifdef __cplusplus
79*9e564957SAndroid Build Coastguard Worker }
80*9e564957SAndroid Build Coastguard Worker #endif
81*9e564957SAndroid Build Coastguard Worker 
82*9e564957SAndroid Build Coastguard Worker #endif /* FUSE_LOG_H_ */
83