log.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #ifndef __LOG_H
  2. #define __LOG_H
  3. #include "system/generic/printf.h"
  4. #define __LOG_VERB 0
  5. #define __LOG_DEBUG 1
  6. #define __LOG_INFO 2
  7. #define __LOG_WARN 3
  8. #define __LOG_ERROR 4
  9. #define __LOG_CHAR 5
  10. struct logbuf {
  11. u16 len;
  12. u16 buf_len;
  13. char buf[0];
  14. };
  15. #define __LOG_ENABLE
  16. #ifndef __LOG_LEVEL
  17. #define __LOG_LEVEL 0
  18. #endif
  19. #ifdef CONFIG_RELEASE_ENABLE
  20. #undef __LOG_LEVEL
  21. #define __LOG_LEVEL 0xff
  22. #endif
  23. #if __LOG_LEVEL > __LOG_VERB
  24. #define log_v(...) do {} while (0)
  25. #elif defined __LOG_ENABLE
  26. #define log_v(...) log_print(__LOG_VERB, NULL, __VA_ARGS__)
  27. #else
  28. #define log_v(...) printf(__VA_ARGS__)
  29. #endif
  30. #if __LOG_LEVEL > __LOG_DEBUG
  31. #define log_d(...) do {} while (0)
  32. #elif defined __LOG_ENABLE
  33. #define log_d(...) log_print(__LOG_DEBUG, NULL, __VA_ARGS__);
  34. #else
  35. #define log_d(...) printf(__VA_ARGS__)
  36. #endif
  37. #if __LOG_LEVEL > __LOG_INFO
  38. #define log_i(...) do {} while (0)
  39. #elif defined __LOG_ENABLE
  40. #define log_i(...) log_print(__LOG_INFO, NULL, __VA_ARGS__);
  41. #else
  42. #define log_i(...) printf(__VA_ARGS__)
  43. #endif
  44. #if __LOG_LEVEL > __LOG_WARN
  45. #define log_w(...) do {} while (0)
  46. #elif defined __LOG_ENABLE
  47. #define log_w(...) log_print(__LOG_WARN, NULL, __VA_ARGS__);
  48. #else
  49. #define log_w(...) printf(__VA_ARGS__)
  50. #endif
  51. #if __LOG_LEVEL > __LOG_ERROR
  52. #define log_e(...) do {} while (0)
  53. #elif defined __LOG_ENABLE
  54. #define log_e(...) log_print(__LOG_ERROR, NULL, __VA_ARGS__);
  55. #else
  56. #define log_e(...) printf(__VA_ARGS__)
  57. #endif
  58. #if __LOG_LEVEL > __LOG_CHAR
  59. #define log_c(x) do {} while (0)
  60. #elif defined __LOG_ENABLE
  61. #define log_c(x) putchar(x)
  62. #else
  63. #define log_c(x)
  64. #endif
  65. #define r_printf(x, ...) log_i("\e[31m\e[1m" x "\e[0m", ## __VA_ARGS__)
  66. #define g_printf(x, ...) log_i("\e[32m\e[1m" x "\e[0m", ## __VA_ARGS__)
  67. #define y_printf(x, ...) log_i("\e[33m\e[1m" x "\e[0m", ## __VA_ARGS__)
  68. #define r_f_printf(x, ...) log_i("\e[31m\e[5m\e[1m" x "\e[0m", ## __VA_ARGS__)
  69. #define g_f_printf(x, ...) log_i("\e[32m\e[5m\e[1m" x "\e[0m", ## __VA_ARGS__)
  70. #define y_f_printf(x, ...) log_i("\e[33m\e[5m\e[1m" x "\e[0m", ## __VA_ARGS__)
  71. #ifndef __LOG_ENABLE
  72. #define log_dump(a, b) do {} while(0)
  73. #define log_putchar() do {} while(0)
  74. #define log_early_init(a) do {} while(0)
  75. #define log_level(a) do {} while(0)
  76. #else
  77. int log_output_lock();
  78. void log_output_unlock();
  79. void log_print_time();
  80. void log_early_init(int buf_size);
  81. void log_level(int level);
  82. void log_print(int level, const char *tag, const char *format, ...);
  83. void log_dump(const u8 *buf, int len);
  84. struct logbuf *log_output_start(int len);
  85. void log_output_end(struct logbuf *);
  86. void log_putchar(struct logbuf *lb, char c);
  87. void log_put_u8hex(struct logbuf *lb, unsigned char dat);
  88. void log_putbyte(char);
  89. void log_set_time_offset(int offset);
  90. int log_get_time_offset();
  91. #endif
  92. void log_flush();
  93. #endif