[ Pobierz całość w formacie PDF ]
.Zamieszanie rodzi³o chaos.Programy otwiera³y pliki blokuj¹cez ró¿nych miejsc, a maj¹ce kontrolowaæ jedno urz¹dzenie tty.Efekt by³ taki, jakbypliki blokuj¹ce w ogóle nie by³y u¿ywane.Aby rozwi¹zaæ ten problem, stworzono urz¹dzenia cua.Zamiast polegaæ na plikachblokuj¹cych, które mia³y zabezpieczaæ przed kolidowaniem ze sob¹ programów ko-rzystaj¹cych z urz¹dzeñ szeregowych, zdecydowano, ¿e to j¹dro bêdzie decydowaæ,kto ma mieæ dostêp do urz¹dzenia.Je¿eli urz¹dzenie ttyS by³o ju¿ otwarte, próbaotwarcia cua koñczy³a siê b³êdem.Program móg³ go zinterpretowaæ jako informacjê,¿e urz¹dzenie jest u¿ywane.Je¿eli urz¹dzenie cua by³o ju¿ otwarte i zosta³a podjêtapróba otwarcia urz¹dzenia ttyS, ¿¹danie by³o blokowane, to znaczy wstrzymywanedo czasu zamkniêcia urz¹dzenia cua przez inny proces.Dzia³a³o do ca³kiem dobrze,je¿eli mia³eS jeden modem skonfigurowany do odbierania po³¹czeñ i co jakiS czaschcia³eS zadzwoniæ za pomoc¹ tego samego urz¹dzenia.K³opoty pojawi³y siê w Sro-dowiskach, gdzie wiele programów chcia³o dzwoniæ z tego samego urz¹dzenia.Je-dynym sposobem na rozwi¹zanie tego problemu by³o zastosowanie plików blo-kuj¹cych.Powrót do punktu wyjScia.Wystarczy wspomnieæ, ¿e przyszed³ tu z pomoc¹ standard systemu plików Linuksa.Teraz pliki blokuj¹ce musz¹ znajdowaæ siê w katalogu /var/lock i nazywaæ zgodniez przyjêt¹ konwencj¹, czyli plik blokuj¹cy dla urz¹dzenia ttyS1 nazywa siê naprzyk³ad LCK.ttyS1.Pliki blokuj¹ce cua powinny tak¿e znajdowaæ siê w tym katalo-gu, ale u¿ywanie urz¹dzeñ cua nie jest zalecane.Przez jakiS czas urz¹dzenia cua bêd¹ jeszcze funkcjonowa³y, by zapewniæ kompatybil-noSæ w okresie przejSciowym, ale stopniowo bêd¹ wycofywane.Je¿eli zastanawiaszsiê, czego u¿ywaæ, trzymaj siê urz¹dzeñ ttyS i upewnij siê, ¿e twój system jest zgodnyz FSSTND lub ¿e przynajmniej wszystkie programy korzystaj¹ce z urz¹dzeñ szere-gowych umieszczaj¹ pliki blokuj¹ce w tym samym miejscu.WiêkszoSæ oprogramo-Dostêp do urz¹dzeñ szeregowych 51wania pracuj¹cego z urz¹dzeniami szeregowymi tty posiada opcjê kompilacyjn¹ po-zwalaj¹c¹ na wskazanie miejsca umieszczania plików blokuj¹cych.Czêsto wystêpu-je ona w postaci zmiennej o nazwie typuLOCKDIRw pliku Makefile lub w nag³Ã³w-kowym pliku konfiguracyjnym.Je¿eli sam kompilujesz oprogramowanie, najlepiejjest ustawiæ tê zmienn¹ tak, by zapewniæ zgodnoSæ z lokalizacj¹ okreSlon¹ przezFSSTND.Je¿eli korzystasz ze skompilowanych plików binarnych i nie jesteS pewien,gdzie program zapisuje swoje pliki blokuj¹ce, mo¿esz u¿yæ poni¿szego polecenia,by uzyskaæ wskazówkê:strings plikbinarny | grep lockJe¿eli wskazana lokalizacja nie zgadza siê z pozosta³¹ czêSci¹ twojego systemu, sta-raj siê utworzyæ dowi¹zanie symboliczne z katalogu plików blokuj¹cych, któregochce u¿ywaæ dany program, do katalogu /var/lock.Nie jest to zbyt eleganckie roz-wi¹zanie, ale dzia³a.Pliki specjalne urz¹dzenia szeregowegoNumery podrzêdne s¹ identyczne dla obu typów urz¹dzeñ szeregowych.GdybySmia³ swój modem na jednym z czterech standardowych portów COM:, jego numerpodrzêdny by³by numerem portu COM plus 63.GdybyS u¿ywa³ specjalnegourz¹dzenia szeregowego, takiego jak szybki wieloportowy kontroler szeregowy,prawdopodobnie musia³byS tworzyæ dla niego specjalne pliki urz¹dzeñ.Zapewnekarta taka nie pos³ugiwa³aby siê standardowym sterownikiem urz¹dzenia.Odpo-wiednie szczegó³y zapewne znajdziesz w dokumencie Serial-HOWTO.Za³Ã³¿my, ¿e twój modem jest pod³¹czony do COM2:.Jego numer podrzêdny to 65,a nadrzêdny to 4 w przypadku normalnego zastosowania.Powinno istnieæ urz¹dze-nie ttyS1, które ma takie numery.Wylistuj urz¹dzenia szeregowe tty w katalogu/dev/.Pi¹ta i szósta kolumna pokazuj¹ odpowiednio numery podrzêdne i nad-rzêdne:$ ls -l /dev/ttyS*0 crw-rw---- 1 uucp dialout 4, 64 Oct 13 1997 /dev/ttyS00 crw-rw---- 1 uucp dialout 4, 65 Jan 26 21:55 /dev/ttyS10 crw-rw---- 1 uucp dialout 4, 66 Oct 13 1997 /dev/ttyS20 crw-rw---- 1 uucp dialout 4, 67 Oct 13 1997 /dev/ttyS3Gdyby nie by³o urz¹dzenia o numerze nadrzêdnym 4 i podrzêdnym 65, musia³byS jestworzyæ.W takiej sytuacji zaloguj siê jako u¿ytkownik uprzywilejowany i napisz:# mknod -m 666 /dev/ttyS1 c 4 65# chown uucp.dialout /dev/ttyS1Dystrybucje Linuksa u¿ywaj¹ ró¿nych strategii do okreSlania, kto powinien byæw³aScicielem urz¹dzeñ szeregowych.Czasem bêd¹ one w³asnoSci¹ u¿ytkownika root,a innym razem bêd¹ nale¿a³y na przyk³ad douucp, tak jak w naszym przyk³adzie.Wspó³czesne dystrybucje maj¹ specjaln¹ grupê dla urz¹dzeñ s³u¿¹cych do dzwonie-nia.Ka¿dy u¿ytkownik, który ma prawo ich u¿ywaæ, jest dodawany do tej grupy.Niektórzy sugeruj¹ stworzenie dowi¹zania symbolicznego /dev/modem do urz¹dze-nia modemu, tak by zwykli u¿ytkownicy nie musieli zapamiêtywaæ czegoS takskomplikowanego jak ttyS1.Jednak nie mo¿esz u¿ywaæ w jednym programie nazwy52 Rozdzia³ 4: Konfigurowanie urz¹dzeñ szeregowychmodem, a w drugim rzeczywistej nazwy pliku urz¹dzenia.Ich pliki blokuj¹ce bêd¹mia³y ró¿ne nazwy i mechanizm blokowania nie zadzia³a.Urz¹dzenia szeregoweRS-232 jest obecnie najbardziej znanym standardem komunikacji szeregowejw Swiecie PC.Wykorzystuje wiele uk³adów do transmisji pojedynczych bitów orazdo synchronizacji.Mo¿na wprowadziæ dodatkowe linie do sygnalizacji obecnoScinoSnej (u¿ywanej przez modemy) i do uzgadniania (ang.handshaking)
[ Pobierz całość w formacie PDF ]