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
