🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
1 messages
1 total messages Started by Takie Jeden Łoś Fri, 16 Dec 2011 13:04
Parzystosci portu szeregowego
#72402
Author: Takie Jeden Łoś
Date: Fri, 16 Dec 2011 13:04
44 lines
1902 bytes
Witam,

Pisze programik obslugujacy urzadzenie podlaczone przez COMa. W kodzie jadra 
w pliku drivers/char/n_tty.c jest taka procedura obslugujaca (chyba) blad 
parzystosci:

---------
static inline void n_tty_receive_parity_error(struct tty_struct *tty,
					      unsigned char c)
{
	if (I_IGNPAR(tty))
		return;
	if (I_PARMRK(tty)) {
		put_tty_queue('\377', tty);
		put_tty_queue('\0', tty);
		put_tty_queue(c, tty);
	} else	if (I_INPCK(tty))
		put_tty_queue('\0', tty);
	else
		put_tty_queue(c, tty);
	wake_up_interruptible(&tty->read_wait);
}
--------------


Wynika z niej, ze jesli mam ustawiony dla portu szeregowego PARMRK, to INPCK 
nie powinno miec znaczenia. A niestety eksperymentalnei sprawdzilem, ze tak 
nie jest tzn. jesli mam ustawiony 

newtio.c_iflag = IGNCR | INPCK | PARMRK ;

to rzeczywiscie bajty z bledem parzystosci sa poprzedzane bajtami \377 \0, 
natomiast jesli mam ustawione tylko

newtio.c_iflag = IGNCR | PARMRK ;

to jadro bajty z bledem parzystosci sa przepuszczane wszystkie, bez 
poprzedzenia bajtami \377 \0.

Dlaczego taksie dzieje?

Pozdrawiam

TJŁ
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads