PowerPC: Fix termios definitions
Commit Message
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.
---
Comments
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.
@@ -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 */
@@ -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 */