EasyLogger
EasyLogger copied to clipboard
[features]: 实现中断上下文打印输出特性支持
- 判断当前log输出上下文
- 中断上下文与任务上下文使用单独输出buffer
- 不支持中断嵌套模式下中断输出调用
- 添加接口判断是否处于中断上下文
hi 你好: 我希望实现该log日志输出支持在中断上下文进行,相关代码修改请问是否合适
这个功能是否可以做成选配,默认关闭?
毕竟还有些非 RTOS 如 Linux 用户在用
如果主体方案您认为可行 我可以做成通过宏定义进行配置选择启用;
实现上还得斟酌一下,比如:
- 中断上下文执行也需要加锁,只是锁换成了锁全局中断
- 中断日志也得又独立日志 buf,与常规日志分开,避免可重入问题
也可以看下 ulog 的实现, https://github.com/RT-Thread/rt-thread/blob/master/components/utilities/ulog/ulog.c
您好: 参考 ulog.c 文件,完成如下特性实现考虑
- 增加移植接口
elog_port_interrupt_get_nest用于获取当前运行上下文是否为中断环境 - 增加移植接口
elog_port_output_lock_isrelog_port_output_unlock_isr用于在中断上下文下进行加锁 解锁操作 - 增加中断上下文输出buffer定义和线程上下文buffer定义
isr_log_bufthread_log_buf根据elog_port_interrupt_get_nest接口获取状态使用对应buffer输出
对于当前代码中的 output_is_locked_before_disable 和 output_is_locked_before_enable 还没有考虑好如何处理
还有一点疑问想请教 , 这里的设计为什么不使用栈空间开辟的buffer进行格式化输出,而是共享一个全局buffer; 如果使用栈空间输出buffer 可以避免一些锁的使用
还有一点疑问想请教 , 这里的设计为什么不使用栈空间开辟的buffer进行格式化输出,而是共享一个全局buffer; 如果使用栈空间输出buffer 可以避免一些锁的使用
主要这样会增加各个线程堆栈空间,这样在嵌入式设备里是不能接受的
完成基本功能添加和宏定义隔离,您对整个系统更加熟悉 希望可以把关看下