Message ID | 53D109AE.7070006@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Ping. This patch is required to fix some package build issues and I want to push it before 2.20 release. On 24-07-2014 10:27, Adhemerval Zanella wrote: > This patch fixes the incorrect guard by __USE_MISC of struct winsize and > struct termios in powerpc termios header. Current states leads to build > failures if the program defines _XOPEN_SOURCE, but not _DEFAULT_SOURCE > or either _BSD_SOURCE or _SVID_SOURCE. Without any definition, > __USE_MISC will not be defined and neither the struct definitions. > > This patches moves powerpc termios.h definitions to powerpc specific > ioctl-types.h. It similar to linux default one, however powerpc > struct termio defines ten control characters fields (c_cc), instead of > linux default one of eight. I see a cleanup is possible on this, > however due 2.20 release, I took the more conservative approach. > > It has been reported by Fedora 21 build system [1] and I want to push > it to 2.20. Tested on powerpc64 and powerpc64le. > > [1] https://bugzilla.redhat.com/show_bug.cgi?id=1122714 > > -- > > * sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h (struct winsize): > Moved definition from termios.h. > (struct termio): Likewise. > (NCC, TIOCM_LE, TIOCM_DTR, TIOCM_RTS, TIOCM_ST, TIOCM_SR, TIOCM_CTS, > TIOCM_CAR, TIOCM_RNG, TIOCM_DSR, TIOCM_CD, TIOCM_RI, N_TTY, N_SLIP, > N_MOUSE, N_PPP, N_STRIP, N_AX25, N_X25, N_6PACK, N_MASC, N_R3964, > N_PROFIBUS_FDL, N_IRDA, N_SMSBLOCK, N_HDLC, N_SYNC_PPP, N_HCI): > Likewise. > * sysdeps/unix/sysv/linux/powerpc/bits/termios.h (struct winsize): > Moved definition to termios.h. > (struct termio): Likewise. > (NCC, TIOCM_LE, TIOCM_DTR, TIOCM_RTS, TIOCM_ST, TIOCM_SR, TIOCM_CTS, > TIOCM_CAR, TIOCM_RNG, TIOCM_DSR, TIOCM_CD, TIOCM_RI, N_TTY, N_SLIP, > N_MOUSE, N_PPP, N_STRIP, N_AX25, N_X25, N_6PACK, N_MASC, N_R3964, > N_PROFIBUS_FDL, N_IRDA, N_SMSBLOCK, N_HDLC, N_SYNC_PPP, N_HCI): > Likewise. > > --- > > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h > index 87b8265..058d4a2 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h > @@ -2,4 +2,57 @@ > # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead." > #endif > > -#include <termios.h> > +/* Get definition of constants for use with `ioctl'. */ > +#include <asm/ioctls.h> > + > +struct winsize > + { > + unsigned short int ws_row; > + unsigned short int ws_col; > + unsigned short int ws_xpixel; > + unsigned short int ws_ypixel; > + }; > + > +#define NCC 10 > +struct termio > + { > + unsigned short int c_iflag; /* input mode flags */ > + unsigned short int c_oflag; /* output mode flags */ > + unsigned short int c_cflag; /* control mode flags */ > + unsigned short int c_lflag; /* local mode flags */ > + unsigned char c_line; /* line discipline */ > + unsigned char c_cc[NCC]; /* control characters */ > +}; > + > +/* modem lines */ > +#define TIOCM_LE 0x001 > +#define TIOCM_DTR 0x002 > +#define TIOCM_RTS 0x004 > +#define TIOCM_ST 0x008 > +#define TIOCM_SR 0x010 > +#define TIOCM_CTS 0x020 > +#define TIOCM_CAR 0x040 > +#define TIOCM_RNG 0x080 > +#define TIOCM_DSR 0x100 > +#define TIOCM_CD TIOCM_CAR > +#define TIOCM_RI TIOCM_RNG > + > +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ > + > +/* line disciplines */ > +#define N_TTY 0 > +#define N_SLIP 1 > +#define N_MOUSE 2 > +#define N_PPP 3 > +#define N_STRIP 4 > +#define N_AX25 5 > +#define N_X25 6 /* X.25 async */ > +#define N_6PACK 7 > +#define N_MASC 8 /* Mobitex module */ > +#define N_R3964 9 /* Simatic R3964 module */ > +#define N_PROFIBUS_FDL 10 /* Profibus */ > +#define N_IRDA 11 /* Linux IR */ > +#define N_SMSBLOCK 12 /* SMS block mode */ > +#define N_HDLC 13 /* synchronous HDLC */ > +#define N_SYNC_PPP 14 /* synchronous PPP */ > +#define N_HCI 15 /* Bluetooth HCI UART */ > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h > index b971d3c..def6e51 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h > @@ -261,24 +261,6 @@ struct ltchars { > #define TIOCPKT_NOSTOP 16 > #define TIOCPKT_DOSTOP 32 > > - > -struct winsize { > - unsigned short ws_row; > - unsigned short ws_col; > - unsigned short ws_xpixel; > - unsigned short ws_ypixel; > -}; > - > -#define NCC 10 > -struct termio { > - unsigned short c_iflag; /* input mode flags */ > - unsigned short c_oflag; /* output mode flags */ > - unsigned short c_cflag; /* control mode flags */ > - unsigned short c_lflag; /* local mode flags */ > - unsigned char c_line; /* line discipline */ > - unsigned char c_cc[NCC]; /* control characters */ > -}; > - > /* c_cc characters */ > #define _VINTR 0 > #define _VQUIT 1 > @@ -291,38 +273,7 @@ struct termio { > #define _VEOL2 8 > #define _VSWTC 9 > > -/* modem lines */ > -#define TIOCM_LE 0x001 > -#define TIOCM_DTR 0x002 > -#define TIOCM_RTS 0x004 > -#define TIOCM_ST 0x008 > -#define TIOCM_SR 0x010 > -#define TIOCM_CTS 0x020 > -#define TIOCM_CAR 0x040 > -#define TIOCM_RNG 0x080 > -#define TIOCM_DSR 0x100 > -#define TIOCM_CD TIOCM_CAR > -#define TIOCM_RI TIOCM_RNG > - > /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ > #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ > > -/* line disciplines */ > -#define N_TTY 0 > -#define N_SLIP 1 > -#define N_MOUSE 2 > -#define N_PPP 3 > -#define N_STRIP 4 > -#define N_AX25 5 > -#define N_X25 6 /* X.25 async */ > -#define N_6PACK 7 > -#define N_MASC 8 /* Mobitex module */ > -#define N_R3964 9 /* Simatic R3964 module */ > -#define N_PROFIBUS_FDL 10 /* Profibus */ > -#define N_IRDA 11 /* Linux IR */ > -#define N_SMSBLOCK 12 /* SMS block mode */ > -#define N_HDLC 13 /* synchronous HDLC */ > -#define N_SYNC_PPP 14 /* synchronous PPP */ > -#define N_HCI 15 /* Bluetooth HCI UART */ > - > #endif /* __USE_MISC */ >
On 07/24/2014 09:27 AM, Adhemerval Zanella wrote: > This patch fixes the incorrect guard by __USE_MISC of struct winsize and > struct termios in powerpc termios header. Current states leads to build > failures if the program defines _XOPEN_SOURCE, but not _DEFAULT_SOURCE > or either _BSD_SOURCE or _SVID_SOURCE. Without any definition, > __USE_MISC will not be defined and neither the struct definitions. Is struct termios a real problem? Isn't the minimal fix to just move winsize into the ppc-specific ioctl-types.h like it is for all other machines? I don't care really, moving both makes ioctl-types.h match the generic Linux version and that's very good for ppc64le. OK to checkin if you make it match the generic ioctl-types.h more e.g. add the missing comments for winsize. > This patches moves powerpc termios.h definitions to powerpc specific > ioctl-types.h. It similar to linux default one, however powerpc > struct termio defines ten control characters fields (c_cc), instead of > linux default one of eight. I see a cleanup is possible on this, > however due 2.20 release, I took the more conservative approach. > > It has been reported by Fedora 21 build system [1] and I want to push > it to 2.20. Tested on powerpc64 and powerpc64le. > > [1] https://bugzilla.redhat.com/show_bug.cgi?id=1122714 > > -- > > * sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h (struct winsize): > Moved definition from termios.h. > (struct termio): Likewise. > (NCC, TIOCM_LE, TIOCM_DTR, TIOCM_RTS, TIOCM_ST, TIOCM_SR, TIOCM_CTS, > TIOCM_CAR, TIOCM_RNG, TIOCM_DSR, TIOCM_CD, TIOCM_RI, N_TTY, N_SLIP, > N_MOUSE, N_PPP, N_STRIP, N_AX25, N_X25, N_6PACK, N_MASC, N_R3964, > N_PROFIBUS_FDL, N_IRDA, N_SMSBLOCK, N_HDLC, N_SYNC_PPP, N_HCI): > Likewise. > * sysdeps/unix/sysv/linux/powerpc/bits/termios.h (struct winsize): > Moved definition to termios.h. > (struct termio): Likewise. > (NCC, TIOCM_LE, TIOCM_DTR, TIOCM_RTS, TIOCM_ST, TIOCM_SR, TIOCM_CTS, > TIOCM_CAR, TIOCM_RNG, TIOCM_DSR, TIOCM_CD, TIOCM_RI, N_TTY, N_SLIP, > N_MOUSE, N_PPP, N_STRIP, N_AX25, N_X25, N_6PACK, N_MASC, N_R3964, > N_PROFIBUS_FDL, N_IRDA, N_SMSBLOCK, N_HDLC, N_SYNC_PPP, N_HCI): > Likewise. > > --- > > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h > index 87b8265..058d4a2 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h > @@ -2,4 +2,57 @@ > # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead." > #endif > > -#include <termios.h> > +/* Get definition of constants for use with `ioctl'. */ > +#include <asm/ioctls.h> > + > +struct winsize > + { > + unsigned short int ws_row; > + unsigned short int ws_col; > + unsigned short int ws_xpixel; > + unsigned short int ws_ypixel; > + }; > + Could you make this match bits/ioctl-types.h as much as possible? That way when I do a diff against bits/ioctl-types.h it shows what's different and what's not. > +#define NCC 10 > +struct termio OK. > + { > + unsigned short int c_iflag; /* input mode flags */ > + unsigned short int c_oflag; /* output mode flags */ > + unsigned short int c_cflag; /* control mode flags */ > + unsigned short int c_lflag; /* local mode flags */ > + unsigned char c_line; /* line discipline */ > + unsigned char c_cc[NCC]; /* control characters */ > +}; > + OK. Again make sure a diff against the power version shows as the difference only those changes if possible. > +/* modem lines */ > +#define TIOCM_LE 0x001 > +#define TIOCM_DTR 0x002 > +#define TIOCM_RTS 0x004 > +#define TIOCM_ST 0x008 > +#define TIOCM_SR 0x010 > +#define TIOCM_CTS 0x020 > +#define TIOCM_CAR 0x040 > +#define TIOCM_RNG 0x080 > +#define TIOCM_DSR 0x100 > +#define TIOCM_CD TIOCM_CAR > +#define TIOCM_RI TIOCM_RNG > + OK. > +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ > + > +/* line disciplines */ > +#define N_TTY 0 > +#define N_SLIP 1 > +#define N_MOUSE 2 > +#define N_PPP 3 > +#define N_STRIP 4 > +#define N_AX25 5 > +#define N_X25 6 /* X.25 async */ > +#define N_6PACK 7 > +#define N_MASC 8 /* Mobitex module */ > +#define N_R3964 9 /* Simatic R3964 module */ > +#define N_PROFIBUS_FDL 10 /* Profibus */ > +#define N_IRDA 11 /* Linux IR */ > +#define N_SMSBLOCK 12 /* SMS block mode */ > +#define N_HDLC 13 /* synchronous HDLC */ > +#define N_SYNC_PPP 14 /* synchronous PPP */ > +#define N_HCI 15 /* Bluetooth HCI UART */ OK. > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h > index b971d3c..def6e51 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h > @@ -261,24 +261,6 @@ struct ltchars { > #define TIOCPKT_NOSTOP 16 > #define TIOCPKT_DOSTOP 32 > > - > -struct winsize { > - unsigned short ws_row; > - unsigned short ws_col; > - unsigned short ws_xpixel; > - unsigned short ws_ypixel; > -}; > - > -#define NCC 10 > -struct termio { > - unsigned short c_iflag; /* input mode flags */ > - unsigned short c_oflag; /* output mode flags */ > - unsigned short c_cflag; /* control mode flags */ > - unsigned short c_lflag; /* local mode flags */ > - unsigned char c_line; /* line discipline */ > - unsigned char c_cc[NCC]; /* control characters */ > -}; > - > /* c_cc characters */ > #define _VINTR 0 > #define _VQUIT 1 > @@ -291,38 +273,7 @@ struct termio { > #define _VEOL2 8 > #define _VSWTC 9 > > -/* modem lines */ > -#define TIOCM_LE 0x001 > -#define TIOCM_DTR 0x002 > -#define TIOCM_RTS 0x004 > -#define TIOCM_ST 0x008 > -#define TIOCM_SR 0x010 > -#define TIOCM_CTS 0x020 > -#define TIOCM_CAR 0x040 > -#define TIOCM_RNG 0x080 > -#define TIOCM_DSR 0x100 > -#define TIOCM_CD TIOCM_CAR > -#define TIOCM_RI TIOCM_RNG > - > /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ > #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ > > -/* line disciplines */ > -#define N_TTY 0 > -#define N_SLIP 1 > -#define N_MOUSE 2 > -#define N_PPP 3 > -#define N_STRIP 4 > -#define N_AX25 5 > -#define N_X25 6 /* X.25 async */ > -#define N_6PACK 7 > -#define N_MASC 8 /* Mobitex module */ > -#define N_R3964 9 /* Simatic R3964 module */ > -#define N_PROFIBUS_FDL 10 /* Profibus */ > -#define N_IRDA 11 /* Linux IR */ > -#define N_SMSBLOCK 12 /* SMS block mode */ > -#define N_HDLC 13 /* synchronous HDLC */ > -#define N_SYNC_PPP 14 /* synchronous PPP */ > -#define N_HCI 15 /* Bluetooth HCI UART */ > - > #endif /* __USE_MISC */ > OK. Cheers, Carlos.
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h index 87b8265..058d4a2 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h @@ -2,4 +2,57 @@ # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead." #endif -#include <termios.h> +/* Get definition of constants for use with `ioctl'. */ +#include <asm/ioctls.h> + +struct winsize + { + unsigned short int ws_row; + unsigned short int ws_col; + unsigned short int ws_xpixel; + unsigned short int ws_ypixel; + }; + +#define NCC 10 +struct termio + { + unsigned short int c_iflag; /* input mode flags */ + unsigned short int c_oflag; /* output mode flags */ + unsigned short int c_cflag; /* control mode flags */ + unsigned short int c_lflag; /* local mode flags */ + unsigned char c_line; /* line discipline */ + unsigned char c_cc[NCC]; /* control characters */ +}; + +/* modem lines */ +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG + +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ + +/* line disciplines */ +#define N_TTY 0 +#define N_SLIP 1 +#define N_MOUSE 2 +#define N_PPP 3 +#define N_STRIP 4 +#define N_AX25 5 +#define N_X25 6 /* X.25 async */ +#define N_6PACK 7 +#define N_MASC 8 /* Mobitex module */ +#define N_R3964 9 /* Simatic R3964 module */ +#define N_PROFIBUS_FDL 10 /* Profibus */ +#define N_IRDA 11 /* Linux IR */ +#define N_SMSBLOCK 12 /* SMS block mode */ +#define N_HDLC 13 /* synchronous HDLC */ +#define N_SYNC_PPP 14 /* synchronous PPP */ +#define N_HCI 15 /* Bluetooth HCI UART */ diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h index b971d3c..def6e51 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h @@ -261,24 +261,6 @@ struct ltchars { #define TIOCPKT_NOSTOP 16 #define TIOCPKT_DOSTOP 32 - -struct winsize { - unsigned short ws_row; - unsigned short ws_col; - unsigned short ws_xpixel; - unsigned short ws_ypixel; -}; - -#define NCC 10 -struct termio { - unsigned short c_iflag; /* input mode flags */ - unsigned short c_oflag; /* output mode flags */ - unsigned short c_cflag; /* control mode flags */ - unsigned short c_lflag; /* local mode flags */ - unsigned char c_line; /* line discipline */ - unsigned char c_cc[NCC]; /* control characters */ -}; - /* c_cc characters */ #define _VINTR 0 #define _VQUIT 1 @@ -291,38 +273,7 @@ struct termio { #define _VEOL2 8 #define _VSWTC 9 -/* modem lines */ -#define TIOCM_LE 0x001 -#define TIOCM_DTR 0x002 -#define TIOCM_RTS 0x004 -#define TIOCM_ST 0x008 -#define TIOCM_SR 0x010 -#define TIOCM_CTS 0x020 -#define TIOCM_CAR 0x040 -#define TIOCM_RNG 0x080 -#define TIOCM_DSR 0x100 -#define TIOCM_CD TIOCM_CAR -#define TIOCM_RI TIOCM_RNG - /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ -/* line disciplines */ -#define N_TTY 0 -#define N_SLIP 1 -#define N_MOUSE 2 -#define N_PPP 3 -#define N_STRIP 4 -#define N_AX25 5 -#define N_X25 6 /* X.25 async */ -#define N_6PACK 7 -#define N_MASC 8 /* Mobitex module */ -#define N_R3964 9 /* Simatic R3964 module */ -#define N_PROFIBUS_FDL 10 /* Profibus */ -#define N_IRDA 11 /* Linux IR */ -#define N_SMSBLOCK 12 /* SMS block mode */ -#define N_HDLC 13 /* synchronous HDLC */ -#define N_SYNC_PPP 14 /* synchronous PPP */ -#define N_HCI 15 /* Bluetooth HCI UART */ - #endif /* __USE_MISC */