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