This is an automated email from the ASF dual-hosted git repository. lupyuen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push: new c4f142e45c syslog: add an option to completely disable syslog logic c4f142e45c is described below commit c4f142e45c05983976ae4eadbde4135246e3b29f Author: raiden00pl <raide...@railab.me> AuthorDate: Sun Mar 23 08:44:16 2025 +0100 syslog: add an option to completely disable syslog logic Add an option to completely disable syslog() and replace it with an empty functions. This option can be useful for small systems when we don't have any logging support, but compiler is not able to remove useless code. This way the final image also won't contain the strings that are present in syslog() calls when compiler optimization is enabled (for example from /boards where syslog is often used instead of debug macros). Signed-off-by: raiden00pl <raide...@railab.me> --- drivers/syslog/CMakeLists.txt | 2 +- drivers/syslog/Kconfig | 10 +++++++ libs/libc/syslog/CMakeLists.txt | 4 +++ libs/libc/syslog/Make.defs | 4 +++ libs/libc/syslog/lib_syslog_none.c | 59 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 1 deletion(-) diff --git a/drivers/syslog/CMakeLists.txt b/drivers/syslog/CMakeLists.txt index b8e8804d33..74da0e05f2 100644 --- a/drivers/syslog/CMakeLists.txt +++ b/drivers/syslog/CMakeLists.txt @@ -32,7 +32,7 @@ if(CONFIG_SYSLOG_INTBUFFER) list(APPEND SRCS syslog_intbuffer.c) endif() -if(NOT CONFIG_ARCH_SYSLOG) +if(CONFIG_SYSLOG) list(APPEND SRCS syslog_initialize.c) endif() diff --git a/drivers/syslog/Kconfig b/drivers/syslog/Kconfig index 0c51edfab5..85748d103c 100644 --- a/drivers/syslog/Kconfig +++ b/drivers/syslog/Kconfig @@ -27,6 +27,16 @@ config SYSLOG_TO_SCHED_NOTE ---help--- If this option is enabled, syslog will be redirected to sched_note, It uses the sched_note_printf macro to replace syslog + +config SYSLOG_NONE + bool "Disable system logging" + ---help--- + System logging is disabled and all calls to syslog() are replaced with + an empty function. This option can be useful for small systems when we don't + have any logging support, so we can get rid of unused logic. + This way the final image also won't contain the strings that are present + in syslog(). + endchoice config SYSLOG_CHARDEV diff --git a/libs/libc/syslog/CMakeLists.txt b/libs/libc/syslog/CMakeLists.txt index 8837e59661..c450efa833 100644 --- a/libs/libc/syslog/CMakeLists.txt +++ b/libs/libc/syslog/CMakeLists.txt @@ -23,3 +23,7 @@ if(CONFIG_SYSLOG) target_sources(c PRIVATE lib_setlogmask.c lib_syslog.c) endif() + +if(CONFIG_SYSLOG_NONE) + target_sources(c PRIVATE lib_syslog_none.c) +endif() diff --git a/libs/libc/syslog/Make.defs b/libs/libc/syslog/Make.defs index ffddf47976..e03a4be0da 100644 --- a/libs/libc/syslog/Make.defs +++ b/libs/libc/syslog/Make.defs @@ -26,6 +26,10 @@ ifeq ($(CONFIG_SYSLOG),y) CSRCS += lib_syslog.c lib_setlogmask.c endif +ifeq ($(CONFIG_SYSLOG_NONE),y) +CSRCS += lib_syslog_none.c +endif + # Add the syslog directory to the build DEPPATH += --dep-path syslog diff --git a/libs/libc/syslog/lib_syslog_none.c b/libs/libc/syslog/lib_syslog_none.c new file mode 100644 index 0000000000..14765f16ab --- /dev/null +++ b/libs/libc/syslog/lib_syslog_none.c @@ -0,0 +1,59 @@ +/**************************************************************************** + * libs/libc/syslog/lib_syslog_none.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> + +#include <syslog.h> + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: syslog/vsyslog + * + * Description: + * These are empty syslog function used when CONFIG_SYSLOG_NONE option + * is selected. This way we can completely remove the syslog logic and its + * associated strings from the image. + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void syslog(int priority, FAR const IPTR char *fmt, ...) +{ + UNUSED(priority); + UNUSED(fmt); +} + +void vsyslog(int priority, FAR const IPTR char *fmt, va_list ap) +{ + UNUSED(priority); + UNUSED(fmt); + UNUSED(ap); +}