diff --git a/system/cu/cu.h b/system/cu/cu.h deleted file mode 100644 index be9b31fb321..00000000000 --- a/system/cu/cu.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** - * apps/system/cu/cu.h - * - * SPDX-License-Identifier: BSD-3-Clause - * SPDX-FileCopyrightText: 2014 sysmocom - s.f.m.c. GmbH. All rights reserved. - * SPDX-FileContributor: Harald Welte - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -#ifndef __APPS_SYSTEM_CU_CU_H -#define __APPS_SYSTEM_CU_CU_H - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include -#include -#include -#include - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Configuration ************************************************************/ - -#ifndef CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE -# define CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE "/dev/ttyS0" -#endif - -#ifndef CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD -# define CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD 115200 -#endif - -/**************************************************************************** - * Public Types - ****************************************************************************/ - -/* All terminal state data is packaged in a single structure to minimize - * name conflicts with other global symbols -- a poor man's name space. - */ - -struct cu_globals_s -{ - int devfd; /* I/O data to serial port */ - int stdfd; /* I/O data to standard console */ - int escape; /* Escape char */ - struct termios devtio; /* Original serial port setting */ - struct termios stdtio; /* Original standard console setting */ - pthread_t listener; /* Terminal listener thread */ - bool force_exit; /* Force exit */ -}; - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -#endif /* __APPS_SYSTEM_CU_CU_H */ diff --git a/system/cu/cu_main.c b/system/cu/cu_main.c index 6e25acfc9e8..fa5b319004c 100644 --- a/system/cu/cu_main.c +++ b/system/cu/cu_main.c @@ -53,10 +53,26 @@ #include #include #include +#include +#include +#include +#include #include "system/readline.h" -#include "cu.h" +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +#ifndef CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE +# define CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE "/dev/ttyS0" +#endif + +#ifndef CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD +# define CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD 115200 +#endif #ifdef CONFIG_SYSTEM_CUTERM_DISABLE_ERROR_PRINT # define cu_error(...) @@ -75,6 +91,21 @@ enum parity_mode PARITY_ODD, }; +/* All terminal state data is packaged in a single structure to minimize + * name conflicts with other global symbols -- a poor man's name space. + */ + +struct cu_globals_s +{ + int devfd; /* I/O data to serial port */ + int stdfd; /* I/O data to standard console */ + int escape; /* Escape char */ + struct termios devtio; /* Original serial port setting */ + struct termios stdtio; /* Original standard console setting */ + pthread_t listener; /* Terminal listener thread */ + bool force_exit; /* Force exit */ +}; + /**************************************************************************** * Private Data ****************************************************************************/ @@ -123,7 +154,7 @@ static FAR void *cu_listener(FAR void *parameter) } #ifdef CONFIG_ENABLE_ALL_SIGNALS -static void sigint(int sig) +static void cu_exit(int signo, FAR siginfo_t *siginfo, FAR void *context) { FAR struct cu_globals_s *cu = siginfo->si_user; cu->force_exit = true; @@ -302,8 +333,16 @@ int main(int argc, FAR char *argv[]) /* Install signal handlers */ memset(&sa, 0, sizeof(sa)); - sa.sa_handler = sigint; - sigaction(SIGINT, &sa, NULL); + sa.sa_user = &cu; + sa.sa_sigaction = cu_exit; + sigemptyset(&sa.sa_mask); + if (sigaction(SIGINT, &sa, NULL) < 0) + { + cu_error("cu_main: ERROR during setup cu_exit sigaction(): %d\n", + errno); + return EXIT_FAILURE; + } + #endif optind = 0; /* Global that needs to be reset in FLAT mode */ while ((option = getopt(argc, argv, "l:s:ceE:fho?")) != ERROR)