[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