podsystem we/wy
Transkrypt
podsystem we/wy
System OS-9 Obsługa we–wy Przykłady funkcji wejścia-wyjścia #include <modes.h> int open (char * name, short mode); wejście (argumenty): name wskaźnik do nazwy pliku, mode tryb dostepu do pliku (opis w modes.h); wyjście (wynik): lokalny numer ścieżki (-1 = bład - kod w errno). int read (int path, char * buf, unsigned count); wejście (argumenty): path lokalny numer ścieżki, buf wskaźnik bufora dla odczytu, count maksymalna ilość bajtów do odczytania; wyjście (wynik): ilość bajtów rzeczywiście odczytanych (0 = koniec pliku, -1 = bład - kod w errno). MW-ZPCiR-ICT-PWr 1 System OS-9 Obsługa we–wy Usługi wejścia-wyjścia w OS–9 (1/3) I$Attach (Attach I/O Device) Przyłacza urzadzenie zapewniajac jego inicjalizacje, przydzielenie pamieci statycznej, umieszczenie w tablicy urzadzeń. I$Detach (Detach I/O Device) Odłacza urzadzenie. I$Dup (Duplicate Path) Powiela ścieżke, dajac dodatkowy lokalny numer dla wcześniej otwartej ścieżki. I$Create (Create New File) Tworzy nowy plik i otwiera ścieżke dostepu do niego. I$Open (Open Existing File) Tworzony deskryptor ścieżki ma pola PD COUNT i PD CNT ustawione na 1, PD MOD - zgodnie z podanym trybem. PD USER ustawia sie na numer grupy i użytkownika procesu. Po wywołaniu I$Attach do PD DEV wpisuje sie adres miejsca w tablicy urzadzeń. I$Close (Close Path) Zamyka otwarta ścieżke. PD COUNT i PD CNT sa zmniejszane, jeśli żaden inny proces z niej nie korzysta - jadro (kernel) wywołuje funkcje close modułu obsługi plików. MW-ZPCiR-ICT-PWr 2 System OS-9 Obsługa we–wy Usługi wejścia-wyjścia w OS–9 (2/3) I$MakDir (Make Directory File) Podobnie, jak w I$Create, przy atrybytach directory. I$ChgDir (Change Default Directory) Tymczasowo otwiera ścieżke, wywołuje funkcje modułu obsługi plików i zamyka ścieżke. Adres urzadzenia jest wpisywany do P$DIO - w deskryptorze procesu (jako bieżacy katalog danych lub programów, w zależności od atrybutu execute). I$Delete (Delete File) Tymczasowo otwiera ścieżke, wywołuje moduł obsługi plików i zamyka ścieżke. I$Seek (Change Current Position) Przestawia bieżacy wskaźnik w pliku (w otwartej ścieżce). I$Read (Read Data) Czyta do bufora dane bez ich modyfikowania z otwartej ścieżki. MW-ZPCiR-ICT-PWr 3 System OS-9 Obsługa we–wy Usługi wejścia-wyjścia w OS–9 (3/3) I$Write (Write Data) Pisze z bufora dane bez ich modyfikowania do otwartej ścieżki. I$ReadLn (Read Line of ASCII Data) Działa jak I$Read, lecz kończy czytanie na końcu linii (w OS–9 zazwyczaj CR=$13). I$WritLn (Write Line of ASCII Data) Działa jak I$Write, lecz zakłada, że moduł obsługi plików kończy na CR i dokonuje prostych konwersji (SCF - LF po CR, pauza po nowej stronie i rozwijanie tabulacji). I$GetStt (Get Path Status) Pozwala na dostep do takich własności urzadzeń we/wy, które nie sa osiagalne w inny sposób. Wymaga otwartej ścieżki. Przy wywołaniu podaje sie numer funkcji, który jest specyficzny dla sterownika urzadzenia. I$SetStt (Set Path Status) Jak I$GetStt, ale dla zadawania parametrów urzadzeniom i realizowania specyficznych funkcji. MW-ZPCiR-ICT-PWr 4 System OS-9 Obsługa we–wy Hierarchiczna obsługa we–wy w OS–9 /!! => $ % system !"" # $% & $'() * $'+(, -* "./ - ' 0"1 2 $'+() ' 0"1 3 kernel (IOMan) File Manager Device Driver 0" 4". 576 0" 4"8 .9 : 5;< ' 0"1 MW-ZPCiR-ICT-PWr 5 System OS-9 Obsługa we–wy Modułowy podsystem we–wy e=fg*hifwki)hxv pWyzv{l+|} e=fghigCjkClmonpqf/m!r hm0s4tgsjCuv8r ?A@CB+D ECECE ?A@GFIH+JK ECECE ?A@LMN/KPOQDKRS ECECE ?A@T+?*UWV ?A@XDKY ECECE ?A@+ZN\[ ECECE "sc332" ... "SCF" ... "term" ... ?A@]^] ?A@B4D ECEE ?A@F*H+JK ECEE ?A@LMN/KPO_T+JIH` ECEE ?A@+abKWS ]WVKWHW[K ZN/KC` ECECE "SCF" ?A@]^] e-fg*hikq,jCmf}~uv{l4r hm0s4tgsjCuv8r ?A@CB+D ECECE ?A@GFIH+JK ECECE ?A@LMN/KPOQDVc+Y ECECE ?A@4abKWS ECECE ?A@4D\B+`c[ ?A@4D^KHd ECECE "sc332" ?A@]^] MW-ZPCiR-ICT-PWr 6 System OS-9 Obsługa we–wy Moduł deskryptora urzadzenia (device descriptor) adr. C module.h asm module.a znaczenie Adres portu Wektor obsługi przerwań Poziom przerwania Priorytet przerwania Zakres możliwosci urzadzenia Adres nazwy modułu obsługi plików Adres nazwy sterownika urzadzenia Adres obszaru parametrów specjalnych Zarezerwowane Wielkość obszaru opcji (zależna od typu urzadzenia) Poczatek obszaru opcji – typ urzadzenia 30 34 35 36 37 mport mvector mirqlvl mpriority mmode M$Port M$Vector M$IRQLvl M$Prior M$Mode 38 mfmgr M$FMgr 3A mpdev M$PDev 3C mdevcon M$DevCon 3E 46 48 ... mopt mdtype MW-ZPCiR-ICT-PWr ... M$Opt M$DTyp 7 System OS-9 Obsługa we–wy Tablica odstep ów (offset) procedur obsługi funkcji we–wy w module obsługi plików (file manager) adres nazwa wykonywana czynność 0000 0002 0004 0006 0008 000A Create Open MakDir ChgDir Delete Seek 000C 000E 0010 0012 0014 0016 0018 Read Write ReadLn WriteLn GetStat SetStat Close Tworzenie nowego pliku Otwieranie istniejacego pliku Tworzenie katalogu Zmiana katalogu bieżacego Kasowanie pliku Przesuwanie wskaźnika pozycji odczytu/zapisu w pliku Odczyt znaku (bajtu) z pliku Zapis znaku (bajtu) do pliku Odczyt linii (rekordu) z pliku Zapis linii (rekordu) do pliku Odczyt statusu pliku Ustawienie statusu pliku Zamykanie pliku MW-ZPCiR-ICT-PWr 8 System OS-9 Obsługa we–wy Moduł sterownika urzadzenia (device driver) adr. C module.h asm module.a znaczenie 30 34 38 3C mexec mexcpt mdata mdinit M$Exec M$Excpt M$Mem M$DInit 3E mdread M$DRead 40 mdwrite M$DWrite 42 mdgetstat M$DGetStat 44 mdsetstt M$DSetStat 46 mdterm M$DTerm 48 mderror M$DError Wskaźnik startu programu Wskaźnik obsługi TRAP Wielkość obszaru danych Odstep od procedury Init (inicjalizacja urzadzenia) Odstep procedury Read (odczyt z urzadzenia) Odstep procedury Write (zapis na urzadzeniu) Odstep procedury GetStat (odczyt statusu urzadzenia) Odstep procedury SetStat (ustawienie statusu urzadzenia) Odstep procedury Term (zakończenie pracy urzadzenia) Odstep procedury Error (obsługa wyjatków - 0=brak) MW-ZPCiR-ICT-PWr 9 System OS-9 Obsługa we–wy Systemowa tablica urzadze ń (device table) Statyczna tablica o stałej wielkości, wskazywana przez zmienna globalna D DevTbl, zawierajaca struktury opisujace zainicjowane urzadzenia: adres nazwa znaczenie 0000 V$DRIV 0004 V$STAT 0008 V$DESC 000C V$FMGR 0010 V$USRS Adres modułu sterownika urzadzenia (device driver) Adres bazowy pamieci statycznej przydzielonej sterownikowi urzadzenia Adres modułu deskryptora urzadzenia (device descriptor) Adres modułu obsługi plików dla urzadzenia (file manager) Licznik użyć urzadzenia MW-ZPCiR-ICT-PWr 10 System OS-9 Obsługa we–wy Pamie ć statyczna urzadzenia Obszar zmiennych roboczych przydzielony sterownikowi w trakcie inicjalizacji. Na poczatku zawiera stałe pola: adres nazwa znaczenie 0000 0004 0006 V PORT V LPRC V BUSY 0008 V WAKE 000A V Paths 000E 002E ... V USER Adres bazowy portu urzadzenia ID ostatnio aktywnego procesu ID aktualnie aktywnego procesu (0=brak) ID procesu, który ma zostać obudzony przez sterownik Lista ścieżek otwartych na urzadzeniu Zarezerwowane Poczatek obszaru roboczego dla sterownika urzadzenia MW-ZPCiR-ICT-PWr 11 System OS-9 Obsługa we–wy Deskryptor ścieżki (path descriptor) adres nazwa znaczenie 0000 0002 0003 0004 0008 000a 000e 0012 0014 0016 001a 001c 001e 0022 0026 0080 PD PD PD PD PD PD PD PD PD MOD CNT DEV CPR RGS BUF USER PD PD PD PD PD ... PD Paths COUNT LProc ErrNo SysGlob Systemowy numer ścieżki Flagi trybu Licznik użyć (stary) Adres w tablicy urzadzeń ID aktualnego procesu Adres ramki stosu procesu Adres bufora danych Numer grupy ... ... i ID użytkownika Nastepna scieżka na urzadzeniu Licznik użyć scieżki (nowy) ID ostatniego procesu Numer ostatniego błedu Wskaźnik pamieci globalnej Zarezerwowane Obszar opcji MW-ZPCiR-ICT-PWr OPT 12 System OS-9 Obsługa we–wy Systemowa tablica ścieżek (path descriptor table) Tablica wskazywana przez zmienna globalna D PthDBT, zawierajaca adresy deskryptorów otwartych ścieżek dostepu do plików (indeks tablicy odpowiada numerowi ścieżki): indeks odstep zawartość 0 0000 0002 0004 0008 000C 0010 0014 ... Wielkość tablicy ścieżek Rozmiar deskryptora (256) Adres deskryptora #1 (0=brak) Adres deskryptora #2 (0=brak) Adres deskryptora #3 (0=brak) Adres deskryptora #4 (0=brak) Adres deskryptora #5 (0=brak) ... 1 2 3 4 5 ... MW-ZPCiR-ICT-PWr 13 System OS-9 Obsługa we–wy Tablica translacji ścieżek procesu 32-elementowa tablica (P$Path) w deskryptorze procesu zawierajaca systemowe numery otwartych ścieżek dostepu do plików (indeks tablicy odpowiada lokalnemu numerowi ścieżki): adres indeks zawartość 0168 0 016A 1 016E 2 0170 3 0172 4 ... 01A6 ... 31 Numer ścieżki systemowej stdin (0=brak) Numer ścieżki systemowej stdout (0=brak) Numer ścieżki systemowej stderr (0=brak) Numer ścieżki systemowej lokalnej ścieżki #3 (0=brak) Numer ścieżki systemowej lokalnej ścieżki #4 (0=brak) ... Numer ścieżki systemowej lokalnej ścieżki #31 (0=brak) MW-ZPCiR-ICT-PWr dla dla dla dla dla dla 14