brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · 16464e1 Raw
96 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Copyright 2020 IBM Corporation4 *5 */6 7#ifndef _NXU_DBG_H_8#define _NXU_DBG_H_9 10#include <sys/file.h>11#include <stdint.h>12#include <stdio.h>13#include <time.h>14#include <pthread.h>15 16extern FILE * nx_gzip_log;17extern int nx_gzip_trace;18extern unsigned int nx_gzip_inflate_impl;19extern unsigned int nx_gzip_deflate_impl;20extern unsigned int nx_gzip_inflate_flags;21extern unsigned int nx_gzip_deflate_flags;22 23extern int nx_dbg;24pthread_mutex_t mutex_log;25 26#define nx_gzip_trace_enabled()       (nx_gzip_trace & 0x1)27#define nx_gzip_hw_trace_enabled()    (nx_gzip_trace & 0x2)28#define nx_gzip_sw_trace_enabled()    (nx_gzip_trace & 0x4)29#define nx_gzip_gather_statistics()   (nx_gzip_trace & 0x8)30#define nx_gzip_per_stream_stat()     (nx_gzip_trace & 0x10)31 32#define prt(fmt, ...) do { \33	pthread_mutex_lock(&mutex_log);					\34	flock(nx_gzip_log->_fileno, LOCK_EX);				\35	time_t t; struct tm *m; time(&t); m = localtime(&t);		\36	fprintf(nx_gzip_log, "[%04d/%02d/%02d %02d:%02d:%02d] "		\37		"pid %d: " fmt,	\38		(int)m->tm_year + 1900, (int)m->tm_mon+1, (int)m->tm_mday, \39		(int)m->tm_hour, (int)m->tm_min, (int)m->tm_sec,	\40		(int)getpid(), ## __VA_ARGS__);				\41	fflush(nx_gzip_log);						\42	flock(nx_gzip_log->_fileno, LOCK_UN);				\43	pthread_mutex_unlock(&mutex_log);				\44} while (0)45 46/* Use in case of an error */47#define prt_err(fmt, ...) do { if (nx_dbg >= 0) {			\48	prt("%s:%u: Error: "fmt,					\49		__FILE__, __LINE__, ## __VA_ARGS__);			\50}} while (0)51 52/* Use in case of an warning */53#define prt_warn(fmt, ...) do {	if (nx_dbg >= 1) {			\54	prt("%s:%u: Warning: "fmt,					\55		__FILE__, __LINE__, ## __VA_ARGS__);			\56}} while (0)57 58/* Informational printouts */59#define prt_info(fmt, ...) do {	if (nx_dbg >= 2) {			\60	prt("Info: "fmt, ## __VA_ARGS__);				\61}} while (0)62 63/* Trace zlib wrapper code */64#define prt_trace(fmt, ...) do { if (nx_gzip_trace_enabled()) {		\65	prt("### "fmt, ## __VA_ARGS__);					\66}} while (0)67 68/* Trace statistics */69#define prt_stat(fmt, ...) do {	if (nx_gzip_gather_statistics()) {	\70	prt("### "fmt, ## __VA_ARGS__);					\71}} while (0)72 73/* Trace zlib hardware implementation */74#define hw_trace(fmt, ...) do {						\75		if (nx_gzip_hw_trace_enabled())				\76			fprintf(nx_gzip_log, "hhh " fmt, ## __VA_ARGS__); \77	} while (0)78 79/* Trace zlib software implementation */80#define sw_trace(fmt, ...) do {						\81		if (nx_gzip_sw_trace_enabled())				\82			fprintf(nx_gzip_log, "sss " fmt, ## __VA_ARGS__); \83	} while (0)84 85 86/**87 * str_to_num - Convert string into number and copy with endings like88 *              KiB for kilobyte89 *              MiB for megabyte90 *              GiB for gigabyte91 */92uint64_t str_to_num(char *str);93void nx_lib_debug(int onoff);94 95#endif	/* _NXU_DBG_H_ */96