From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
To: qemu-devel@nongnu.org
Cc: laurent@vivier.eu, amarkovic@wavecomp.com
Subject: [PATCH 2/4] linux-user: mips: Synchronize termbits.h with kernel
Date: Fri, 17 Jan 2020 03:11:55 +0100 [thread overview]
Message-ID: <1579227117-6310-3-git-send-email-aleksandar.markovic@rt-rk.com> (raw)
In-Reply-To: <1579227117-6310-1-git-send-email-aleksandar.markovic@rt-rk.com>
From: Aleksandar Markovic <amarkovic@wavecomp.com>
Synchronize all elements of mips' termbits.h with kernel and
make sure that all applicable macros and other definitions are
expressed in terms of target, not the host.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
linux-user/mips/termbits.h | 140 ++++++++++++++++++++++++++++-----------------
1 file changed, 89 insertions(+), 51 deletions(-)
diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h
index 3287cf6..79a9b9b 100644
--- a/linux-user/mips/termbits.h
+++ b/linux-user/mips/termbits.h
@@ -3,33 +3,89 @@
#ifndef LINUX_USER_MIPS_TERMBITS_H
#define LINUX_USER_MIPS_TERMBITS_H
-#define TARGET_NCCS 23
+typedef unsigned char target_cc_t;
+typedef unsigned int target_speed_t;
+typedef unsigned int target_tcflag_t;
+/*
+ * The ABI says nothing about NCC but seems to use NCCS as
+ * replacement for it in struct termio
+ */
+#define TARGET_NCCS 23
struct target_termios {
- unsigned int c_iflag; /* input mode flags */
- unsigned int c_oflag; /* output mode flags */
- unsigned int c_cflag; /* control mode flags */
- unsigned int c_lflag; /* local mode flags */
- unsigned char c_line; /* line discipline */
- unsigned char c_cc[TARGET_NCCS]; /* control characters */
+ target_tcflag_t c_iflag; /* input mode flags */
+ target_tcflag_t c_oflag; /* output mode flags */
+ target_tcflag_t c_cflag; /* control mode flags */
+ target_tcflag_t c_lflag; /* local mode flags */
+ target_cc_t c_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+};
+
+struct target_termios2 {
+ target_tcflag_t c_iflag; /* input mode flags */
+ target_tcflag_t c_oflag; /* output mode flags */
+ target_tcflag_t c_cflag; /* control mode flags */
+ target_tcflag_t c_lflag; /* local mode flags */
+ target_cc_t c_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+struct target_ktermios {
+ target_tcflag_t c_iflag; /* input mode flags */
+ target_tcflag_t c_oflag; /* output mode flags */
+ target_tcflag_t c_cflag; /* control mode flags */
+ target_tcflag_t c_lflag; /* local mode flags */
+ target_cc_t c_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
};
+/* c_cc character offsets */
+#define TARGET_VINTR 0 /* Interrupt character [ISIG]. */
+#define TARGET_VQUIT 1 /* Quit character [ISIG]. */
+#define TARGET_VERASE 2 /* Erase character [ICANON]. */
+#define TARGET_VKILL 3 /* Kill-line character [ICANON]. */
+#define TARGET_VMIN 4 /* Minimum number of bytes read at once */
+#define TARGET_VTIME 5 /* Time-out value (tenths of a second) */
+#define TARGET_VEOL2 6 /* Second EOL character [ICANON]. */
+#define TARGET_VSWTC 7 /* ??? */
+#define TARGET_VSWTCH VSWTC
+#define TARGET_VSTART 8 /* Start (X-ON) character [IXON, IXOFF]. */
+#define TARGET_VSTOP 9 /* Stop (X-OFF) character [IXON, IXOFF]. */
+#define TARGET_VSUSP 10 /* Suspend character [ISIG]. */
+
+#if 0
+/*
+ * VDSUSP is not supported
+ */
+#define TARGET_VDSUSP 11 /* Delayed suspend character [ISIG]. */
+#endif
+#define TARGET_VREPRINT 12 /* Reprint-line character [ICANON]. */
+#define TARGET_VDISCARD 13 /* Discard character [IEXTEN]. */
+#define TARGET_VWERASE 14 /* Word-erase character [ICANON]. */
+#define TARGET_VLNEXT 15 /* Literal-next character [IEXTEN]. */
+#define TARGET_VEOF 16 /* End-of-file character [ICANON]. */
+#define TARGET_VEOL 17 /* End-of-line character [ICANON]. */
+
/* c_iflag bits */
-#define TARGET_IGNBRK 0000001
-#define TARGET_BRKINT 0000002
-#define TARGET_IGNPAR 0000004
-#define TARGET_PARMRK 0000010
-#define TARGET_INPCK 0000020
-#define TARGET_ISTRIP 0000040
-#define TARGET_INLCR 0000100
-#define TARGET_IGNCR 0000200
-#define TARGET_ICRNL 0000400
-#define TARGET_IUCLC 0001000
-#define TARGET_IXON 0002000
-#define TARGET_IXANY 0004000
-#define TARGET_IXOFF 0010000
-#define TARGET_IMAXBEL 0020000
-#define TARGET_IUTF8 0040000
+#define TARGET_IGNBRK 0000001 /* Ignore break condition. */
+#define TARGET_BRKINT 0000002 /* Signal interrupt on break. */
+#define TARGET_IGNPAR 0000004 /* Ignore characters with parity errors. */
+#define TARGET_PARMRK 0000010 /* Mark parity and framing errors. */
+#define TARGET_INPCK 0000020 /* Enable input parity check. */
+#define TARGET_ISTRIP 0000040 /* Strip 8th bit off characters. */
+#define TARGET_INLCR 0000100 /* Map NL to CR on input. */
+#define TARGET_IGNCR 0000200 /* Ignore CR. */
+#define TARGET_ICRNL 0000400 /* Map CR to NL on input. */
+#define TARGET_IUCLC 0001000 /* Map upper case to lower case on input. */
+#define TARGET_IXON 0002000 /* Enable start/stop output control. */
+#define TARGET_IXANY 0004000 /* Any character will restart after stop. */
+#define TARGET_IXOFF 0010000 /* Enable start/stop input control. */
+#define TARGET_IMAXBEL 0020000 /* Ring bell when input queue is full. */
+#define TARGET_IUTF8 0040000 /* Input is UTF-8 */
/* c_oflag bits */
#define TARGET_OPOST 0000001
@@ -82,8 +138,8 @@ struct target_termios {
#define TARGET_B9600 0000015
#define TARGET_B19200 0000016
#define TARGET_B38400 0000017
-#define TARGET_EXTA B19200
-#define TARGET_EXTB B38400
+#define TARGET_EXTA TARGET_B19200
+#define TARGET_EXTB TARGET_B38400
#define TARGET_CSIZE 0000060
#define TARGET_CS5 0000000
#define TARGET_CS6 0000020
@@ -134,26 +190,6 @@ struct target_termios {
#define TARGET_TOSTOP 0100000
#define TARGET_ITOSTOP TARGET_TOSTOP
-/* c_cc character offsets */
-#define TARGET_VINTR 0
-#define TARGET_VQUIT 1
-#define TARGET_VERASE 2
-#define TARGET_VKILL 3
-#define TARGET_VMIN 4
-#define TARGET_VTIME 5
-#define TARGET_VEOL2 6
-#define TARGET_VSWTC 7
-#define TARGET_VSTART 8
-#define TARGET_VSTOP 9
-#define TARGET_VSUSP 10
-/* VDSUSP not supported */
-#define TARGET_VREPRINT 12
-#define TARGET_VDISCARD 13
-#define TARGET_VWERASE 14
-#define TARGET_VLNEXT 15
-#define TARGET_VEOF 16
-#define TARGET_VEOL 17
-
/* ioctls */
#define TARGET_TCGETA 0x5401
@@ -186,7 +222,7 @@ struct target_termios {
#define TARGET_TIOCPKT_START 0x08 /* start output */
#define TARGET_TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */
#define TARGET_TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */
-/* #define TIOCPKT_IOCTL 0x40 state change of pty driver */
+#define TARGET_TIOCPKT_IOCTL 0x40 /* state change of pty driver */
#define TARGET_TIOCSWINSZ TARGET_IOW('t', 103, struct winsize) /* set window size */
#define TARGET_TIOCGWINSZ TARGET_IOR('t', 104, struct winsize) /* get window size */
#define TARGET_TIOCNOTTY 0x5471 /* void tty association */
@@ -205,8 +241,8 @@ struct target_termios {
#define TARGET_TIOCGPGRP TARGET_IOR('t', 119, int) /* get pgrp of tty */
#define TARGET_TIOCCONS TARGET_IOW('t', 120, int) /* become virtual console */
-#define TARGET_FIONREAD 0x467f
-#define TARGET_TIOCINQ TARGET_FIONREAD
+#define TARGET_FIONREAD 0x467f
+#define TARGET_TIOCINQ TARGET_FIONREAD
#define TARGET_TIOCGETP 0x7408
#define TARGET_TIOCSETP 0x7409
@@ -222,10 +258,10 @@ struct target_termios {
#define TARGET_TIOCSBRK 0x5427 /* BSD compatibility */
#define TARGET_TIOCCBRK 0x5428 /* BSD compatibility */
#define TARGET_TIOCGSID 0x7416 /* Return the session ID of FD */
-#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct termios2)
-#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct termios2)
-#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct termios2)
-#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct termios2)
+#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct target_termios2)
+#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct target_termios2)
+#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct target_termios2)
+#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct target_termios2)
#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x2E, struct serial_rs485)
#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x2F, struct serial_rs485)
#define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
@@ -237,6 +273,8 @@ struct target_termios {
#define TARGET_TIOCGPTLCK TARGET_IOR('T', 0x39, int)
#define TARGET_TIOCGEXCL TARGET_IOR('T', 0x40, int)
#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41)
+#define TARGET_TIOCGISO7816 TARGET_IOR('T', 0x42, struct serial_iso7816)
+#define TARGET_TIOCSISO7816 TARGET_IOWR('T', 0x43, struct serial_iso7816)
/* I hope the range from 0x5480 on is free ... */
#define TARGET_TIOCSCTTY 0x5480 /* become controlling tty */
--
2.7.4
next prev parent reply other threads:[~2020-01-17 2:14 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-17 2:11 [PATCH 0/4] linux-user: Fix some issues in termbits.h files Aleksandar Markovic
2020-01-17 2:11 ` [PATCH 1/4] linux-user: alpha: Synchronize termbits.h with kernel Aleksandar Markovic
2020-01-17 2:11 ` Aleksandar Markovic [this message]
2020-01-17 2:11 ` [PATCH 3/4] linux-user: xtensa: Fix some constants in termbits.h Aleksandar Markovic
2020-01-17 2:11 ` [PATCH 4/4] linux-user: Fix some constants in remaining termbits.h Aleksandar Markovic
2020-01-17 10:12 ` [PATCH 0/4] linux-user: Fix some issues in termbits.h files no-reply
2020-01-28 18:19 ` Laurent Vivier
2020-03-19 16:24 ` Aleksandar Markovic
2020-03-19 16:34 ` Laurent Vivier
2020-03-19 19:02 ` Aleksandar Markovic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1579227117-6310-3-git-send-email-aleksandar.markovic@rt-rk.com \
--to=aleksandar.markovic@rt-rk.com \
--cc=amarkovic@wavecomp.com \
--cc=laurent@vivier.eu \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.