|
发表于 2022-1-27 10:01:51
|
显示全部楼层
#include "txm_module.h"
#include "log.h"
#include "printf.h"
extern ALIGN_TYPE (*_txm_module_kernel_call_dispatcher)(ULONG type, ALIGN_TYPE param_1, ALIGN_TYPE param_2, ALIGN_TYPE param3);
int printk(const char *fmt, ...);
UINT logRegister(Log *log)
{
UINT return_value;
/* Call module manager dispatcher. */
return_value = (UINT) (_txm_module_kernel_call_dispatcher)(TXM_MODULE_EXTENSION_LOG_REG_CALL, (ALIGN_TYPE) log, 0,0);
/* Return value to the caller. */
return(return_value);
}
UINT logWrite(Log *log, LogLevel level, char *fmt,...)
{
UINT return_value;
char string[200 + 1]; /* 特别注意,如果printf的变量较多,注意此局部变量的大小是否够用 */
va_list v_args;
va_start(v_args, fmt);
(void)vsnprintf((char *)&string[0],
(size_t ) sizeof(string),
(char const *) fmt,
v_args);
va_end(v_args);
/* Call module manager dispatcher. */
return_value = (UINT) (_txm_module_kernel_call_dispatcher)(TXM_MODULE_EXTENSION_LOG_WRITE_CALL, (ALIGN_TYPE) log, (ALIGN_TYPE) level, (ALIGN_TYPE) string);
/* Return value to the caller. */
return(return_value);
}
通过模块管理器自定义一个打印接口函数 |
|