예제 #1
0
파일: ioctl.c 프로젝트: vocho/openqnx
// Translate a "termio" structure into a "termios".
static void termio2termios(struct termio * termio,
					struct termios * termios) {
#define SET_LOW_BITS(x,y)       (*(unsigned short *)(&x) = (y))
        SET_LOW_BITS(termios->c_iflag, termio->c_iflag);
        SET_LOW_BITS(termios->c_oflag, termio->c_oflag);
        SET_LOW_BITS(termios->c_cflag, termio->c_cflag);
        SET_LOW_BITS(termios->c_lflag, termio->c_lflag);
#undef SET_LOW_BITS
        memcpy(termios->c_cc, termio->c_cc, NCC);
		termios->c_ispeed = get_bauds( termio->c_cflag & BAUD_SPEED_MASK );
		termios->c_ospeed = termios->c_ispeed;

		termios->c_cflag &= ~BAUD_SPEED_MASK;
}
예제 #2
0
static int set_termio(struct tty_struct * tty, struct termio * termio,
		      int channel)
{
	struct termio tmp_termio;
	struct termios tmp_termios;

	tmp_termios = *tty->termios;
	memcpy_fromfs(&tmp_termio, termio, sizeof (struct termio));

#define SET_LOW_BITS(x,y)	((x) = (0xffff0000 & (x)) | (y))

	SET_LOW_BITS(tmp_termios.c_iflag, tmp_termio.c_iflag);
	SET_LOW_BITS(tmp_termios.c_oflag, tmp_termio.c_oflag);
	SET_LOW_BITS(tmp_termios.c_cflag, tmp_termio.c_cflag);
	SET_LOW_BITS(tmp_termios.c_lflag, tmp_termio.c_lflag);
	memcpy(&tmp_termios.c_cc, &tmp_termio.c_cc, NCC);

#undef SET_LOW_BITS

	return set_termios_2(tty, &tmp_termios);
}