winsup/cygwin/sys/termios.h bit rates extension
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Jan 31 09:23:30 GMT 2023
On Jan 29 22:57, Brian Inglis wrote:
> FreeBSD, NetBSD, and Linux all bumped their serial bit rates to support
> 500k(+500k)4000k, extending the rates to 3500k and 4000k, dropping 128k and
> 256k, renumbering the extended baud rate indices under Linux, effectively
> changing the ABI for any previously compiled serial application.
>
> See:
> https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/include/sys/termios.h;hb=HEAD#l189
>
> Patch would be like:
> diff a/winsup/cygwin/include/sys/termios.h b/winsup/cygwin/include/sys/termios.h
> --- a/winsup/cygwin/include/sys/termios.h
> +++ b/winsup/cygwin/include/sys/termios.h
> @@ -190,19 +190,19
> #define CBAUDEX 0x0100f
> #define B57600 0x01001
> #define B115200 0x01002
> -#define B128000 0x01003
> -#define B230400 0x01004
> +#define B230400 0x01003
> -#define B256000 0x01005
> -#define B460800 0x01006
> +#define B460800 0x01004
> -#define B500000 0x01007
> +#define B500000 0x01005
> -#define B576000 0x01008
> +#define B576000 0x01006
> -#define B921600 0x01009
> +#define B921600 0x01007
> -#define B1000000 0x0100a
> +#define B1000000 0x01008
> -#define B1152000 0x0100b
> +#define B1152000 0x01009
> -#define B1500000 0x0100c
> +#define B1500000 0x0100a
> -#define B2000000 0x0100d
> +#define B2000000 0x0100b
> -#define B2500000 0x0100e
> +#define B2500000 0x0100c
> -#define B3000000 0x0100f
> +#define B3000000 0x0100d
> +#define B3500000 0x0100e
> +#define B4000000 0x0100f
>
> #define CRTSXOFF 0x04000
> #define CRTSCTS 0x08000
>
> Is this acceptable, not really any issue for Cygwin, or an issue, and some
> compatibility code would be required to do an internal upgrade, and return
> an error for unsupported speeds, or should we add another bit to extend
> CBAUD/CBAUDEX to 0x0101f, and use higher indices 0x01010/0x01011?
We'd need a compat layer, depending on the version of Cygwin
the executable has been created under (see include/sys/cygwin.h).
Just extending CBAUD/CBAUDEX. isn't an option because all bits
in cflags are taken, afaics.
However, afaics our CBAUDEX is defined incorrectly. The BSDs define it
as LINUX_CBAUDEX, because it's apparently not a BSD idea. And per
Linux, it should only contain the mask bit which defines extended
speeds, so
#define CBAUD 0x0100f
#define CBAUDEX 0x01000
would be the right (i. e., Linux-compatible).
Corinna
More information about the Cygwin-patches
mailing list