summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeco Man <[email protected]>2024-12-09 21:46:24 -0500
committerMeco Man <[email protected]>2025-01-04 22:50:04 -0500
commit6cad23bc3139b83c47a4e8643f2d3525d73a8218 (patch)
tree4cfce586c2ce2e38772b4c896e6a6cab0d0f2ef0 /src
parentebe05a91df561d4c8aec33d4dbd1d16c9ff1d4b4 (diff)
[kservice] optimize console_device
Diffstat (limited to 'src')
-rw-r--r--src/kservice.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/kservice.c b/src/kservice.c
index 167f94a6a7..d4970684e8 100644
--- a/src/kservice.c
+++ b/src/kservice.c
@@ -187,23 +187,15 @@ RTM_EXPORT(rt_console_get_device);
*/
rt_device_t rt_console_set_device(const char *name)
{
- rt_device_t new_device, old_device;
+ rt_device_t old_device = _console_device;
+ rt_device_t new_device = rt_device_find(name);
- /* save old device */
- old_device = _console_device;
-
- /* find new console device */
- new_device = rt_device_find(name);
-
- /* check whether it's a same device */
- if (new_device == old_device) return RT_NULL;
-
- if (new_device != RT_NULL)
+ if (new_device != RT_NULL && new_device != old_device)
{
- if (_console_device != RT_NULL)
+ if (old_device != RT_NULL)
{
/* close old console device */
- rt_device_close(_console_device);
+ rt_device_close(old_device);
}
/* set new console device */
@@ -319,20 +311,23 @@ static void _console_release(void)
*/
static void _kputs(const char *str, long len)
{
- RT_UNUSED(len);
+#ifdef RT_USING_DEVICE
+ rt_device_t console_device = rt_console_get_device();
+#endif /* RT_USING_DEVICE */
CONSOLE_TAKE;
#ifdef RT_USING_DEVICE
- if (_console_device == RT_NULL)
+ if (console_device == RT_NULL)
{
rt_hw_console_output(str);
}
else
{
- rt_device_write(_console_device, 0, str, len);
+ rt_device_write(console_device, 0, str, len);
}
#else
+ RT_UNUSED(len);
rt_hw_console_output(str);
#endif /* RT_USING_DEVICE */