#endif
};
+UNUSED static struct flags termios_iflags[] = {
+ FLAG_TARGET(IGNBRK),
+ FLAG_TARGET(BRKINT),
+ FLAG_TARGET(IGNPAR),
+ FLAG_TARGET(PARMRK),
+ FLAG_TARGET(INPCK),
+ FLAG_TARGET(ISTRIP),
+ FLAG_TARGET(INLCR),
+ FLAG_TARGET(IGNCR),
+ FLAG_TARGET(ICRNL),
+ FLAG_TARGET(IUCLC),
+ FLAG_TARGET(IXON),
+ FLAG_TARGET(IXANY),
+ FLAG_TARGET(IXOFF),
+ FLAG_TARGET(IMAXBEL),
+ FLAG_TARGET(IUTF8),
+ FLAG_END,
+};
+
+UNUSED static struct flags termios_oflags[] = {
+ FLAG_TARGET(OPOST),
+ FLAG_TARGET(OLCUC),
+ FLAG_TARGET(ONLCR),
+ FLAG_TARGET(OCRNL),
+ FLAG_TARGET(ONOCR),
+ FLAG_TARGET(ONLRET),
+ FLAG_TARGET(OFILL),
+ FLAG_TARGET(OFDEL),
+ FLAG_END,
+};
+
+UNUSED static struct enums termios_oflags_NLDLY[] = {
+ ENUM_TARGET(NL0),
+ ENUM_TARGET(NL1),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_oflags_CRDLY[] = {
+ ENUM_TARGET(CR0),
+ ENUM_TARGET(CR1),
+ ENUM_TARGET(CR2),
+ ENUM_TARGET(CR3),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_oflags_TABDLY[] = {
+ ENUM_TARGET(TAB0),
+ ENUM_TARGET(TAB1),
+ ENUM_TARGET(TAB2),
+ ENUM_TARGET(TAB3),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_oflags_VTDLY[] = {
+ ENUM_TARGET(VT0),
+ ENUM_TARGET(VT1),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_oflags_FFDLY[] = {
+ ENUM_TARGET(FF0),
+ ENUM_TARGET(FF1),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_oflags_BSDLY[] = {
+ ENUM_TARGET(BS0),
+ ENUM_TARGET(BS1),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_cflags_CBAUD[] = {
+ ENUM_TARGET(B0),
+ ENUM_TARGET(B50),
+ ENUM_TARGET(B75),
+ ENUM_TARGET(B110),
+ ENUM_TARGET(B134),
+ ENUM_TARGET(B150),
+ ENUM_TARGET(B200),
+ ENUM_TARGET(B300),
+ ENUM_TARGET(B600),
+ ENUM_TARGET(B1200),
+ ENUM_TARGET(B1800),
+ ENUM_TARGET(B2400),
+ ENUM_TARGET(B4800),
+ ENUM_TARGET(B9600),
+ ENUM_TARGET(B19200),
+ ENUM_TARGET(B38400),
+ ENUM_TARGET(B57600),
+ ENUM_TARGET(B115200),
+ ENUM_TARGET(B230400),
+ ENUM_TARGET(B460800),
+ ENUM_END,
+};
+
+UNUSED static struct enums termios_cflags_CSIZE[] = {
+ ENUM_TARGET(CS5),
+ ENUM_TARGET(CS6),
+ ENUM_TARGET(CS7),
+ ENUM_TARGET(CS8),
+ ENUM_END,
+};
+
+UNUSED static struct flags termios_cflags[] = {
+ FLAG_TARGET(CSTOPB),
+ FLAG_TARGET(CREAD),
+ FLAG_TARGET(PARENB),
+ FLAG_TARGET(PARODD),
+ FLAG_TARGET(HUPCL),
+ FLAG_TARGET(CLOCAL),
+ FLAG_TARGET(CRTSCTS),
+ FLAG_END,
+};
+
+UNUSED static struct flags termios_lflags[] = {
+ FLAG_TARGET(ISIG),
+ FLAG_TARGET(ICANON),
+ FLAG_TARGET(XCASE),
+ FLAG_TARGET(ECHO),
+ FLAG_TARGET(ECHOE),
+ FLAG_TARGET(ECHOK),
+ FLAG_TARGET(ECHONL),
+ FLAG_TARGET(NOFLSH),
+ FLAG_TARGET(TOSTOP),
+ FLAG_TARGET(ECHOCTL),
+ FLAG_TARGET(ECHOPRT),
+ FLAG_TARGET(ECHOKE),
+ FLAG_TARGET(FLUSHO),
+ FLAG_TARGET(PENDIN),
+ FLAG_TARGET(IEXTEN),
+ FLAG_TARGET(EXTPROC),
+ FLAG_END,
+};
+
UNUSED static struct flags mlockall_flags[] = {
FLAG_TARGET(MCL_CURRENT),
FLAG_TARGET(MCL_FUTURE),
}
}
+void
+print_termios(void *arg)
+{
+ const struct target_termios *target = arg;
+
+ target_tcflag_t iflags = tswap32(target->c_iflag);
+ target_tcflag_t oflags = tswap32(target->c_oflag);
+ target_tcflag_t cflags = tswap32(target->c_cflag);
+ target_tcflag_t lflags = tswap32(target->c_lflag);
+
+ qemu_log("{");
+
+ qemu_log("c_iflag = ");
+ print_flags(termios_iflags, iflags, 0);
+
+ qemu_log("c_oflag = ");
+ target_tcflag_t oflags_clean = oflags & ~(TARGET_NLDLY | TARGET_CRDLY |
+ TARGET_TABDLY | TARGET_BSDLY |
+ TARGET_VTDLY | TARGET_FFDLY);
+ print_flags(termios_oflags, oflags_clean, 0);
+ if (oflags & TARGET_NLDLY) {
+ print_enums(termios_oflags_NLDLY, oflags & TARGET_NLDLY, 0);
+ }
+ if (oflags & TARGET_CRDLY) {
+ print_enums(termios_oflags_CRDLY, oflags & TARGET_CRDLY, 0);
+ }
+ if (oflags & TARGET_TABDLY) {
+ print_enums(termios_oflags_TABDLY, oflags & TARGET_TABDLY, 0);
+ }
+ if (oflags & TARGET_BSDLY) {
+ print_enums(termios_oflags_BSDLY, oflags & TARGET_BSDLY, 0);
+ }
+ if (oflags & TARGET_VTDLY) {
+ print_enums(termios_oflags_VTDLY, oflags & TARGET_VTDLY, 0);
+ }
+ if (oflags & TARGET_FFDLY) {
+ print_enums(termios_oflags_FFDLY, oflags & TARGET_FFDLY, 0);
+ }
+
+ qemu_log("c_cflag = ");
+ if (cflags & TARGET_CBAUD) {
+ print_enums(termios_cflags_CBAUD, cflags & TARGET_CBAUD, 0);
+ }
+ if (cflags & TARGET_CSIZE) {
+ print_enums(termios_cflags_CSIZE, cflags & TARGET_CSIZE, 0);
+ }
+ target_tcflag_t cflags_clean = cflags & ~(TARGET_CBAUD | TARGET_CSIZE);
+ print_flags(termios_cflags, cflags_clean, 0);
+
+ qemu_log("c_lflag = ");
+ print_flags(termios_lflags, lflags, 0);
+
+ qemu_log("c_cc = ");
+ qemu_log("\"%s\",", target->c_cc);
+
+ qemu_log("c_line = ");
+ print_raw_param("\'%c\'", target->c_line, 1);
+
+ qemu_log("}");
+}
+
#undef UNUSED
#ifdef TARGET_NR_accept