log: use global variable to catch statements in loggers

parent fc3b9533
...@@ -385,7 +385,7 @@ int bpf_program_cgroup_attach(struct bpf_program *prog, int type, ...@@ -385,7 +385,7 @@ int bpf_program_cgroup_attach(struct bpf_program *prog, int type,
if (ret < 0) if (ret < 0)
return log_error_errno(-1, errno, "Failed to attach bpf program"); return log_error_errno(-1, errno, "Failed to attach bpf program");
free_replace_move_ptr(prog->attached_path, copy); free_move_ptr(prog->attached_path, copy);
prog->attached_type = type; prog->attached_type = type;
prog->attached_flags = flags; prog->attached_flags = flags;
......
...@@ -477,69 +477,79 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \ ...@@ -477,69 +477,79 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
} while (0) } while (0)
#endif #endif
#define log_error_errno(__ret__, __errno__, format, ...) \ #define log_error_errno(__ret__, __errno__, format, ...) \
({ \ ({ \
errno = __errno__; \ typeof(__ret__) __internal_ret__ = (__ret__); \
SYSERROR(format, ##__VA_ARGS__); \ errno = (__errno__); \
__ret__; \ SYSERROR(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_error(__ret__, format, ...) \ #define log_error(__ret__, format, ...) \
({ \ ({ \
ERROR(format, ##__VA_ARGS__); \ typeof(__ret__) __internal_ret__ = (__ret__); \
__ret__; \ ERROR(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_trace_errno(__ret__, __errno__, format, ...) \ #define log_trace_errno(__ret__, __errno__, format, ...) \
({ \ ({ \
errno = __errno__; \ typeof(__ret__) __internal_ret__ = (__ret__); \
SYSTRACE(format, ##__VA_ARGS__); \ errno = __errno__; \
__ret__; \ SYSTRACE(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_trace(__ret__, format, ...) \ #define log_trace(__ret__, format, ...) \
({ \ ({ \
TRACE(format, ##__VA_ARGS__); \ typeof(__ret__) __internal_ret__ = (__ret__); \
__ret__; \ TRACE(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_warn_errno(__ret__, __errno__, format, ...) \ #define log_warn_errno(__ret__, __errno__, format, ...) \
({ \ ({ \
errno = __errno__; \ typeof(__ret__) __internal_ret__ = (__ret__); \
SYSWARN(format, ##__VA_ARGS__); \ errno = __errno__; \
__ret__; \ SYSWARN(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_warn(__ret__, format, ...) \ #define log_warn(__ret__, format, ...) \
({ \ ({ \
WARN(format, ##__VA_ARGS__); \ typeof(__ret__) __internal_ret__ = (__ret__); \
__ret__; \ WARN(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_debug_errno(__ret__, __errno__, format, ...) \ #define log_debug_errno(__ret__, __errno__, format, ...) \
({ \ ({ \
errno = __errno__; \ typeof(__ret__) __internal_ret__ = (__ret__); \
SYSDEBUG(format, ##__VA_ARGS__); \ errno = __errno__; \
__ret__; \ SYSDEBUG(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_debug(__ret__, format, ...) \ #define log_debug(__ret__, format, ...) \
({ \ ({ \
DEBUG(format, ##__VA_ARGS__); \ typeof(__ret__) __internal_ret__ = (__ret__); \
__ret__; \ DEBUG(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_info_errno(__ret__, __errno__, format, ...) \ #define log_info_errno(__ret__, __errno__, format, ...) \
({ \ ({ \
errno = __errno__; \ typeof(__ret__) __internal_ret__ = (__ret__); \
SYSINFO(format, ##__VA_ARGS__); \ errno = __errno__; \
__ret__; \ SYSINFO(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
#define log_info(__ret__, format, ...) \ #define log_info(__ret__, format, ...) \
({ \ ({ \
INFO(format, ##__VA_ARGS__); \ typeof(__ret__) __internal_ret__ = (__ret__); \
__ret__; \ INFO(format, ##__VA_ARGS__); \
__internal_ret__; \
}) })
extern int lxc_log_fd; extern int lxc_log_fd;
......
...@@ -442,24 +442,23 @@ enum { ...@@ -442,24 +442,23 @@ enum {
__internal_fd__; \ __internal_fd__; \
}) })
#define ret_set_errno(__ret__, __errno__) \ #define ret_set_errno(__ret__, __errno__) \
({ \ ({ \
errno = __errno__; \ typeof(__ret__) __internal_ret__ = (__ret__); \
__ret__; \ errno = (__errno__); \
__internal_ret__; \
}) })
#define ret_errno(__errno__) \ #define ret_errno(__errno__) \
({ \ ({ \
errno = __errno__; \ errno = (__errno__); \
-__errno__; \ -(__errno__); \
}) })
#define free_replace_move_ptr(a, b) \ #define free_move_ptr(a, b) \
({ \ ({ \
free(a); \ free(a); \
(a) = (b); \ (a) = move_ptr((b)); \
(b) = NULL; \
0; \
}) })
/* Container's specific file/directory names */ /* Container's specific file/directory names */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment