[PATCH] tools: termios_linux.h: Fix tcsendbreak() implementation
Stefan Roese
sr at denx.de
Thu Oct 21 07:36:49 CEST 2021
On 06.10.21 14:30, Pali Rohár wrote:
> There are two Linux ioctls which implements tcsendbreak() functionality:
> TCSBRK and TCSBRKP
>
> TCSBRK with non-zero parameter implements tcdrain() and with zero parameter
> implements tcsendbreak() for duration of 0.25s.
>
> TCSBRKP with zero parameter is same as TCSBRK and with non-zero parameter
> implements tcsendbreak() for duration in deciseconds specified by
> parameter. TCSBRKP does not have to be provided by older toolchain
> versions.
>
> So tcsendbreak() has to either use TCSBRK with zero parameter or TCSBRKP
> with any parameter.
>
> Fix code to use TCSBRKP and fallback to TCSBRK with 0.
>
> Signed-off-by: Pali Rohár <pali at kernel.org>
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> ---
> tools/termios_linux.h | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/tools/termios_linux.h b/tools/termios_linux.h
> index d73989b625a2..e100c8e4eb5f 100644
> --- a/tools/termios_linux.h
> +++ b/tools/termios_linux.h
> @@ -90,7 +90,11 @@ static inline int tcflush(int fd, int q)
>
> static inline int tcsendbreak(int fd, int d)
> {
> - return ioctl(fd, TCSBRK, d);
> +#ifdef TCSBRKP
> + return ioctl(fd, TCSBRKP, d);
> +#else
> + return ioctl(fd, TCSBRK, 0);
> +#endif
> }
>
> static inline int tcflow(int fd, int a)
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list