This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PowerPC: Fix termios definitions


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]