/src/rt/rust_log.h

http://github.com/jruderman/rust · C Header · 76 lines · 63 code · 12 blank · 1 comment · 5 complexity · 44251e6443cefdb3a63235d4b11864b6 MD5 · raw file

  1. // -*- c++ -*-
  2. #ifndef RUST_LOG_H
  3. #define RUST_LOG_H
  4. #include "rust_globals.h"
  5. const uint32_t log_err = 0;
  6. const uint32_t log_warn = 1;
  7. const uint32_t log_info = 2;
  8. const uint32_t log_debug = 3;
  9. #define LOG(task, field, ...) \
  10. DLOG_LVL(log_debug, task, task->sched_loop, field, __VA_ARGS__)
  11. #define LOG_ERR(task, field, ...) \
  12. DLOG_LVL(log_err, task, task->sched_loop, field, __VA_ARGS__)
  13. #define DLOG(sched_loop, field, ...) \
  14. DLOG_LVL(log_debug, NULL, sched_loop, field, __VA_ARGS__)
  15. #define DLOG_ERR(sched_loop, field, ...) \
  16. DLOG_LVL(log_err, NULL, sched_loop, field, __VA_ARGS__)
  17. #define LOGPTR(sched_loop, msg, ptrval) \
  18. DLOG_LVL(log_debug, NULL, sched_loop, mem, "%s 0x%" PRIxPTR, msg, ptrval)
  19. #define DLOG_LVL(lvl, task, sched_loop, field, ...) \
  20. do { \
  21. rust_sched_loop* _d_ = sched_loop; \
  22. if (log_rt_##field >= lvl && _d_->log_lvl >= lvl) { \
  23. _d_->get_log().log(task, lvl, __VA_ARGS__); \
  24. } \
  25. } while (0)
  26. #define KLOG(k, field, ...) \
  27. KLOG_LVL(k, field, log_debug, __VA_ARGS__)
  28. #define KLOG_LVL(k, field, lvl, ...) \
  29. do { \
  30. if (log_rt_##field >= lvl) { \
  31. (k)->log(lvl, __VA_ARGS__); \
  32. } \
  33. } while (0)
  34. struct rust_sched_loop;
  35. struct rust_task;
  36. class rust_log {
  37. public:
  38. rust_log(rust_sched_loop *sched_loop);
  39. virtual ~rust_log();
  40. void log(rust_task* task, uint32_t level, char const *fmt, ...);
  41. void trace_ln(rust_task *task, uint32_t level, char *message);
  42. void trace_ln(char *prefix, char *message);
  43. bool is_tracing(uint32_t type_bits);
  44. private:
  45. rust_sched_loop *_sched_loop;
  46. bool _use_labels;
  47. void trace_ln(rust_task *task, char *message);
  48. };
  49. void update_log_settings(void* crate_map, char* settings);
  50. extern uint32_t log_rt_mem;
  51. extern uint32_t log_rt_box;
  52. extern uint32_t log_rt_comm;
  53. extern uint32_t log_rt_task;
  54. extern uint32_t log_rt_dom;
  55. extern uint32_t log_rt_trace;
  56. extern uint32_t log_rt_cache;
  57. extern uint32_t log_rt_upcall;
  58. extern uint32_t log_rt_timer;
  59. extern uint32_t log_rt_gc;
  60. extern uint32_t log_rt_stdlib;
  61. extern uint32_t log_rt_kern;
  62. extern uint32_t log_rt_backtrace;
  63. extern uint32_t log_rt_callback;
  64. #endif /* RUST_LOG_H */