Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
279f2cb9
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
279f2cb9
编写于
4月 10, 2014
作者:
B
Bernard Xiong
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #260 from grissiom/logtrace-next
Logtrace next
上级
abcef00c
299cccfb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
50 addition
and
13 deletion
+50
-13
components/utilities/logtrace/log_trace.c
components/utilities/logtrace/log_trace.c
+11
-10
components/utilities/logtrace/log_trace.h
components/utilities/logtrace/log_trace.h
+39
-3
未找到文件。
components/utilities/logtrace/log_trace.c
浏览文件 @
279f2cb9
...
@@ -42,7 +42,7 @@ static rt_device_t _traceout_device = RT_NULL;
...
@@ -42,7 +42,7 @@ static rt_device_t _traceout_device = RT_NULL;
/* define a default lg session. The name is empty. */
/* define a default lg session. The name is empty. */
static
struct
log_trace_session
_def_session
=
{{
"
\0
"
},
LOG_TRACE_LEVEL_INFO
};
static
struct
log_trace_session
_def_session
=
{{
"
\0
"
},
LOG_TRACE_LEVEL_INFO
};
static
struct
log_trace_session
*
_the_sessions
[
LOG_TRACE_MAX_SESSION
]
=
{
&
_def_session
};
static
const
struct
log_trace_session
*
_the_sessions
[
LOG_TRACE_MAX_SESSION
]
=
{
&
_def_session
};
/* there is a default session at least */
/* there is a default session at least */
static
rt_uint16_t
_the_sess_nr
=
1
;
static
rt_uint16_t
_the_sess_nr
=
1
;
...
@@ -83,11 +83,11 @@ rt_inline int _idname_len(log_trace_idnum_t id)
...
@@ -83,11 +83,11 @@ rt_inline int _idname_len(log_trace_idnum_t id)
*/
*/
static
struct
log_trace_session
*
_lg_lookup_session
(
log_trace_idnum_t
num
)
static
struct
log_trace_session
*
_lg_lookup_session
(
log_trace_idnum_t
num
)
{
{
static
struct
log_trace_session
*
_cache
=
&
_def_session
;
static
const
struct
log_trace_session
*
_cache
=
&
_def_session
;
rt_uint16_t
first
,
last
;
rt_uint16_t
first
,
last
;
if
(
_cache
->
id
.
num
==
num
)
if
(
_cache
->
id
.
num
==
num
)
return
_cache
;
return
(
struct
log_trace_session
*
)
_cache
;
first
=
0
;
first
=
0
;
last
=
_the_sess_nr
;
last
=
_the_sess_nr
;
...
@@ -104,7 +104,7 @@ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num)
...
@@ -104,7 +104,7 @@ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num)
* process and we wrote the old one to _cache. But it doesn't harm
* process and we wrote the old one to _cache. But it doesn't harm
* a lot because it will be flushed in the next time. */
* a lot because it will be flushed in the next time. */
_cache
=
_the_sessions
[
i
];
_cache
=
_the_sessions
[
i
];
return
_the_sessions
[
i
];
return
(
struct
log_trace_session
*
)
_the_sessions
[
i
];
}
}
else
if
(
_the_sessions
[
i
]
->
id
.
num
>
num
)
else
if
(
_the_sessions
[
i
]
->
id
.
num
>
num
)
{
{
...
@@ -119,7 +119,7 @@ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num)
...
@@ -119,7 +119,7 @@ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num)
return
RT_NULL
;
return
RT_NULL
;
}
}
rt_err_t
log_trace_register_session
(
struct
log_trace_session
*
session
)
rt_err_t
log_trace_register_session
(
const
struct
log_trace_session
*
session
)
{
{
unsigned
int
lvl
,
i
;
unsigned
int
lvl
,
i
;
...
@@ -255,8 +255,9 @@ static rt_size_t _lg_parse_session(
...
@@ -255,8 +255,9 @@ static rt_size_t _lg_parse_session(
return
0
;
return
0
;
}
}
static
void
_lg_fmtout
(
void
__logtrace_vfmtout
(
const
struct
log_trace_session
*
session
,
struct
log_trace_session
*
session
,
const
char
*
fmt
,
va_list
argptr
)
const
char
*
fmt
,
va_list
argptr
)
{
{
/* 1 for ']' */
/* 1 for ']' */
static
char
_trace_buf
[
1
+
LOG_TRACE_BUFSZ
];
static
char
_trace_buf
[
1
+
LOG_TRACE_BUFSZ
];
...
@@ -303,12 +304,12 @@ void log_trace(const char *fmt, ...)
...
@@ -303,12 +304,12 @@ void log_trace(const char *fmt, ...)
return
;
return
;
va_start
(
args
,
fmt
);
va_start
(
args
,
fmt
);
_
lg_
fmtout
(
session
,
fmt
,
args
);
_
_logtrace_v
fmtout
(
session
,
fmt
,
args
);
va_end
(
args
);
va_end
(
args
);
}
}
FINSH_FUNCTION_EXPORT
(
log_trace
,
log
trace
);
FINSH_FUNCTION_EXPORT
(
log_trace
,
log
trace
);
void
log_session
(
struct
log_trace_session
*
session
,
const
char
*
fmt
,
...)
void
log_session
(
const
struct
log_trace_session
*
session
,
const
char
*
fmt
,
...)
{
{
va_list
args
;
va_list
args
;
int
level
;
int
level
;
...
@@ -321,7 +322,7 @@ void log_session(struct log_trace_session *session, const char *fmt, ...)
...
@@ -321,7 +322,7 @@ void log_session(struct log_trace_session *session, const char *fmt, ...)
return
;
return
;
va_start
(
args
,
fmt
);
va_start
(
args
,
fmt
);
_
lg_
fmtout
(
session
,
fmt
,
args
);
_
_logtrace_v
fmtout
(
session
,
fmt
,
args
);
va_end
(
args
);
va_end
(
args
);
}
}
...
...
components/utilities/logtrace/log_trace.h
浏览文件 @
279f2cb9
/*
/*
* File : log_trace.h
* File : log_trace.h
* This file is part of RT-Thread RTOS
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2013, RT-Thread Development Team
* COPYRIGHT (C) 2013
-2014
, RT-Thread Development Team
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
...
@@ -95,7 +95,7 @@ void log_trace_init(void);
...
@@ -95,7 +95,7 @@ void log_trace_init(void);
*
*
* @return RT_EOK on success. -RT_EFULL if there is no space for registration.
* @return RT_EOK on success. -RT_EFULL if there is no space for registration.
*/
*/
rt_err_t
log_trace_register_session
(
struct
log_trace_session
*
session
);
rt_err_t
log_trace_register_session
(
const
struct
log_trace_session
*
session
);
/** find a session with name
/** find a session with name
*
*
...
@@ -130,7 +130,43 @@ void log_trace(const char *fmt, ...);
...
@@ -130,7 +130,43 @@ void log_trace(const char *fmt, ...);
* "[systick][name]log messages". The name is the name of the session. It is
* "[systick][name]log messages". The name is the name of the session. It is
* faster than bare log_trace.
* faster than bare log_trace.
*/
*/
void
log_session
(
struct
log_trace_session
*
session
,
const
char
*
fmt
,
...);
void
log_session
(
const
struct
log_trace_session
*
session
,
const
char
*
fmt
,
...);
extern
void
__logtrace_vfmtout
(
const
struct
log_trace_session
*
session
,
const
char
*
fmt
,
va_list
argptr
);
rt_inline
void
__logtrace_fmtout
(
const
struct
log_trace_session
*
session
,
const
char
*
fmt
,
...)
{
va_list
args
;
va_start
(
args
,
fmt
);
__logtrace_vfmtout
(
session
,
fmt
,
args
);
va_end
(
args
);
}
/**
* log with numeric level
*
* The prototype of this function is:
*
* void log_session_lvl(struct log_trace_session *session,
* int lvl,
* const char *fmt, ...);
*
* If the @session is const and @level is greater than @session->lvl, the whole
* function will be optimized out. This is suitable for performance critical
* places where in most cases, the log is turned off by level.
*/
#define log_session_lvl(session, level, fmt, ...) \
do { \
if ((level) > (session)->lvl) \
{ \
break; \
} \
__logtrace_fmtout(session, fmt, ##__VA_ARGS__); \
} while (0)
/* here comes the global part. All sessions share the some output backend. */
/* here comes the global part. All sessions share the some output backend. */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录