Vážení kolegové,
Formality: ---------- ODSTRANTE KONECNE TY ABSOLUTNI ODKAZY (typu http://www.cs.vsb.cz/~gry72/tuox/x/y) a NAHRADTE JE RELATIVNIMI (ve tvaru ./mysrc.html, obecne ../../../supergrandparent.html) Nasledujici soubory obsahuji absolutni odkazy :-( : File FS\MOUNT\MOUNT.HTM: File FS\INODE\SUPER.HTM: File FS\INODE\READ.HTM: File FS\SYSCALL\SYSCALL.HTM: File FS\VITEJT~1.HTM: File CD\VITEJTE.HTM: File CD\VITEJT~1.HTM: Zdrojove soubory: Na 1.znak 1. radku prosim nevkladejte znak # (obvykle tam je #include), zmate to prohlizec - spravi to jeden prazdny radek na zacatku souboru. Zacatek HTML dokumentu - pokud pouzivate ceskou diakritiku, doplnte charset=1250, napr. nejak takto: <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250"> </HEAD> Aby to bylo aspon trochu jednotne, nepouzivejte jinych kodovani nez 1250. Když tak to můžeme překonvertovat. Ponechat jmena puvodnich autoru zdrojovych textu, pripsat se pod ne. Dalsi postup: ------------- Zkompilujte svuj modul ve Small modelu a bez Borlandskych knihoven (Options/Linker/Libraries - Standard Runtime Libs = None). Overte, jake externi symboly chybi. FS a MM by melo byt mozne zkompilovat bez nevyresenych odkazu na externi symboly (snad nejake to strcpy, o knihovnu s temi nekolika funkcemi si reknete knihovnikum). Tasky+kernel - pripadne zapomenute promenne dopiseme do glo.h, ktere jako non-extern pripojuje kernel. Nejlepsi by asi bylo, kdybyste mi kazdy poslali (mailem) seznam chybejicich symbolu, jak je pozaduje linker (nebo uplne nejlepe jen tech, ktere nejsou v COMMON/glo.h)
Testeri ------- - struktura adresaru zahrnuje BCLIB s .OBJ s pomocnymi funkcemi pro prekladac - trap.h: muj novy. bude ne v common/, ale test/ - seznam header souboru - radsi odkaz do COMMON - Nejaky popis fazi testu tak, jak jsem jej navrhnul. Testovaci kody od Vas (pro FS a MM), prip. odkazy na ostatni testovaci kody (assembler od p.Horyny a C od sl.Rojakove, pokud se jich nekdy dockame) Bootstrap --------- - casem by se mel vyspecifikovat nejaky uzivatelsky postup, jak urcit, jak velky ma byt ramdisk. Tuto hodnotu nastavit, o to mene dostane MM. Asi neco s RAMDiskSize polozkou v hlavicce v boot sektoru. Melo by se take rict, ze konstanta DRIVE v kodu je cislo disku pro BIOS, ktery hodlam udelat bootable. Promyslet, co by se muselo udelat, aby BOOT.COM a loader umel pracovat s partition HDD (rekneme, ze by se zacatecni cyl,hd,sec partition zadal rucne). s.h: na zacatek prazdny radek, # jako 1.znak nejak zblbne browser. Popsat, jak vznikne sekundarni zavadec. Je to DOS .COM nebo co ? "Describtion" se pise s 'p' :-) Zduraznit, ze polozka driveNo hlavicky musi byt nastavena podle disku, ze ktereho bootuji. ALLOC_TABLE (S.H) - velikost pameti alokovane pro modul - nebude to lepsi vzit z TUOX headeru prislusneho modulu ? Init,login,update & sysprocs ---------------------------- - /etc/passwd - mohly by se ignorovat radky zacinajici # - rict na WWW, kde je passwd a ttys (asi /etc) - shutdown() - fflush() - co s tim knihovnici delaji ? cache.c: flushall() - podobne v programu sync sync.c,update.c: existuje v knihovnach volani sync() ? passwd.c - poradek v headerech (podle knihovniku) - ! getpass() v knihovnach neni, napsat si sami (s TTY dohodnout NO_ECHO) pres ioctl() ! - proc zmena umask() ? - na WWW rict, ze nonroot passwd >6 znaku, upper&lower&nums -zadne manevry s chown(), passwd patri rootovi, passwd ma SUID na roota - open_pass() - proc ta smycka ? - zalozni soubor s hesly, zbytecne, nebezpecne, nejlip zlikvidovat login.c - popsat tu fintu s promennou prostredi INIT a vubec, jake promenne se ocekavaji od INITu. - zase getpass() - v knihovnach ZATIM NEBUDE, napsat si sam - main() - kontrola spravnosti hesla - snad strcmp() - argv[0]: jmeno programu (shellu) - bez "-" na zacatku - neexistuje-li shell (staci na to chyba v /etc/passwd), ohlasit a vratit se k promptu login: init.c - zverejnit, ze pouziva /bin/sh na vykonani systemoveho skriptu a jak ze se ten skript jmenuje. Zverejnit, odkud cte nastaveni terminalu - na konci cteni tabulky tty zavrit soubor. cat.c - argc=1 - jmeno programu vzdy 1. argumentem -popsat ten vypis z konzoly (parametr -) - nemichat ba vystup ty texty ("open file", atd.), pridaly by se mezi data -> kdyz tak na stderr nebo vubec ne echo.c - zase if (argc==0)... tee.c - chybova hlaseni na stderr - na konci: return x-- ?? chyba. -> co nejdrive dodelat ls, chown, chmod, mount, umount, chmem, kill => nejdulezitejsi prikazy, nezbytne pro testovani systemu time.c, date.c - v knihovnach asi nebude localtime() -> vubec overit, zda ocekavane funkce v knihovnach budou nebo si je treba napsat sam. ? format pro time: podle UNIXu date.c - pocitat s rokem 2000 mkfs.c - oznacit DOS a TUOX verzi (nebo seskladat do jednoho zdrojaku a podmineny preklad) - struktury superbloku a inode by bylo lepsi include-ovat z COMMON (popr. FS), nez to mit opsane - help: n_blocks neni "max data blocks": ne maximalni, ale celkovy -> pokud neni zadan, lze zjistit pres ioctl() - viz stranka FS (K.Krecmer) - ne "blocks for kernel image" ale "... for system image" - main() - nejak divne testuje argc, nebo to spis neni v helpu switch() - boot_file obcas neinicializovane proc test n_inode*2 <= n_block ? Zapis boot bloku - vy nebo BOOT.COM od bootstrapu ? -> dohodnout ( v tom pripade chtit po bootstrapu ciste jen kod zavadece, bez kopirovaciho kodu) Defaultni boot blok (bez zavadece)- ne text, radsi par instrukci, ktere vypisou neco jako NONBOOTABLE MEDIA (pres BIOS) Vypocet poctu bloku s bitmape inode a volnych bloku spis treba: (num*sizeof(dana_struktura))/BLOCK_SIZE (+1 ?) - dodelat fyzicky zapis bloku - bud pres BIOS nebo floppy task (podmineny preklad) - v bitmape volnych zon/inode nahodit prvni (resp. 2) bity. - Mozna by se na disk mely zapsat "prazdne inodes", tj. s vynulovanou tabulkou souborem obsazenych bloku. Nejspis aspon na inode 1, tam take rozumne nastavit priznaky (ze jde o adresar, rwx,r-x,r-x, owner=root), nulovou delku atd. pwd - vnitrni prikaz shellu, jako externi vlastne nema smysl ln.c - lepsi help (ktery parametr je jmeno stareho a noveho souboru) - budeme podporovat symbolicke linky ? asi ne (musel by to obslouzit FS). - linky na adresare povolit rootovi. - kdyz se nezada druhy parametr: s tim podtrzitkem je to standardni chovani ? (pokud ne, vyhodit). - oddelovac cesty je / (ne \) mkdir.c - radsi vracet skutecny chybovy kod (nejlepe ale i rict duvod chyby - seznam moznych chyb viz FS) mknod.c - test na nulove cisla zarizeni (a jine parametry, nez je cislo). Konstanta EXIT_FAILURE ? Radsi chybove kody z ln. mv.c switch(errno) - pouzit symbolickych konstant z errno.h - co ma byt ten prepinac -i ? Kdyz nic, vyhodit ... ... rm.c ! - fopen("con") - NEJSME NA DOSu ! - ani bych ten vymaz u uzivatele dotazem neoveroval (tim zmizi fce exists() - stejne neresi prava, radsi access(), ale staci chybovy kod z unlink()). rmdir.c - vracet chybove kody z rmdir() Ramdisk ------- memory.c: Prenos bloku z proc[] - to pretypovani nejake podezrele. Pozor na pointrovou aritmetiku, at k adrese pricitate opravdu bajty (m_ptr->m_u.m_dio.position * BLOCK_SIZE) a ne v jednotkach velikosti zaznamu proc[]. (&proc je prave ptr na takovy typ) Hlavni smycka: prijde-li nejaka nesmyslna zprava, ve vetvi default i trap(TRAP_UNKNOWN_MSG) Zapis na DEV_NULL: asi by melo vracet 1, jako ze se zapis bloku povedl (ze se data zahodila, vrchni crstvy vedet nemusi). Jak dopadne IOCTL-GETDEVSIZE na DEV_NULL ? MM -- Udelat poradek v headerech - co neni vase prevzit s aktualnimi jmeny (stahnete si aktualni verze), se skutecnym umistenim headeru (adresar) se uvidi. Odstranit predevsim ruzne #include "kernel.h", "fs.h" - takovyto hdr vubec neni. - zprava exec - popsat, co se ocekava na zasobniku (nebo odkaz do me specifikace) - tuoxhead.h - k cemu ta konstanta s max. delkou nazvu souboru ? - co je ta "max. velikost segmentu" ? tuoxhead.htm - proc je max. velikost textoveho segmentu o 15 mensi nez FFFFh ? - na stranku odkaz na header se symbolickym pojmenovanim clenu zprav (mm.h ?) Chybove kody - jak jsem se jiz domahal v mailu : misto merror.h namapovat chybove stavy na errno.h z COMMON (kody prip. rozsirim, bude-li treba). Neco je udelano, ale musi se dodelat dusledne. MM: exec() - co nachystat na stack pri vstupu do programu ? Domluvte se s bootstrapem, jake parametry ma mit vas main(). Patrne ptr na nejakou strukturu, kde zjistite, kde pro vas zacina volna pamet. Popis zprav: - ke kazde zprave vetu, co ze to dela. V nekterych pripadech je treba popsat parametry (tam, kde to neni na 1. pohled jasne) C_FORK - kernel nedoda zadny PID stepeneho procesu, ale z receive() vam ve zprave prijde jeji odesilatel, tedy index do proc[], takze ze takto vi, ktery proces se stepi. Pry to vraci PID noveho detskeho procesu. Kde ? VE FORKEDCHILD ? funkce panic() - co to je ? Nejspis volejte makro TRAP. A vubec, zkouseli jste to zkompilovat ? Vsechny headery musi byt aktualni, ze systemu ! (moc na to nevypadaji) Domluvit s bootstrapy, jak predat velikost volne pameti a jeji zacatek do MAIN. C_EXEC: v parametrech chybi jmeno souboru, ktery vlastne spoustim !!! (nebrat jej z ARGV[] ze stacku, tam uz je bez cesty) - pridat ptr na jmeno spousteneho programu jako parametr zpravy a prevzit jej z adr. prostoru uzivatele stejnym mechanismem, jako prebirate stack. C_BRK: vystup: jaky "konec alokovane casti" ? Rekneme "konec segmentu dat a zacatek GAPu". Popsat, jak zjistit hodnotu teto hranice (viz stara stranka). C_WAIT - kod ECHILD - ne od vas, ale z errno.h. - popsat, co je v "termination status" - pocitam mp_sigstatus s mproc[], tj. cislo signalu, kvuli kteremu proces skoncil (nebo 0 pokud normalne). - popis option WNOHANG: "pokud zadne dite neexistuje" - nemelo by spis byt "... ukoncene dite ..." ? OVERIT v UNIX man-u !. - Tu konstantu WNOHANG musi mit k dispozici C-programator. Domluvit s knihovniky, kde bude (header). mm_fork(), mm_exit() - rict o teto udalosti FS (patrne by taky meli chytat zpravu C__FORK a C_EXIT, overte, jake potrebuji parametry (budou asi jine nez vase: staci patrne pozice v proc[] procesu, ktereho (-ych) se to tyka)). C_SIGNAL: dohodnout s knihovniky header, kde budou konstanty SIG_IGN,SIG_DFL (hodnoty musi byt konzistentni mezi vami a tim, co dostane k dispozici uzivatel knihoven). C_ALARM: jste si jisti, ce parametr je pocet sekund ? Overit v man-u, ze to standardne nejsou treba milisekundy. Kazdopadne to cislo primo predavate clock tasku a ten ocekava tiky nebo tak neco, ale urcite ne sekundy. ! CHCI KONECNE TY PARAMETRY ZPRAVY _C_KSIG pro vyrizeni signalu. C_GETPROCTBL - dohodnout s knihovniky, do ktereho headeru se daji ty konstanty pro options, aby byly pristupne zvenci. PROJDETE SI ZDROJAKY, OBCAS TAM JSOU VE VYKRICNICICH (nebo $$$$$) POZNAMKY, CO SE MUSI DODELAT. CEMU NEPOROZUMITE, OKAMZITE SE PTEJTE ! PROHLEDEJTE VSECHNY KODY NA VYSKYT MAKER send a receive A OVERTE, ZDA ZPRAVY PRO TASKY (asi zejmena CLOCK a SYSTEM task) JSOU ZFORUMLOVANY SPRAVNE S OHLEDEM NA NEJNOVEJSI SPECIFIKACE NA PRISLUSNYCH WWW STRANKACH. Knihovny -------- Konstanty pro access() - odkud ? execve() - ptr na environment - pole pointru ukazuje na ruzne umistene bloky v pameti, seskladat do spolecneho bloku (see login.c) - aby to umel MM prevzit. Podobne asi s parametry prik. radku. Bude krome execve() i execv() ? (mozna je NULL jako posledni argument -> jak si s tim vyradi MM ?) Vadi necemu, kdyz argv[0] neni jmeno programu, ale prazdne (pouziva init) ? Nebo to doplni knihovny ? assert - jak to dopadlo s tou fci abort() ? Generuje SIGABRT ? - jaka bude adresarova struktura pro headery v /include ? (myslim ruzne ty include/sys atd., chtelo by to pak popsat). - nenasel jsem volani execve() - to je asi zakladni forma, pocita se s nim Jak jste si poradili s temi zpravami pro MM, co jsou tak zmatene popsany ? stdio - jak zachazi s CR,LF ? Vase zdrojaky: adresar include/sys: jsou v nem COMMON headery. Dame to uzivateli ? Nebo se z toho neco vybere, nebo nejaky podmineny preklad, nebo jak ? Cilem je, aby uzivatel nemusel zavadet spoustu symbolu zajimavych jen uvnitr systemu. Shell ----- - projit headery, ktere pripojujete a podivat se, jestli a pod jakym jmenem je dali k dispozici knihovnici. - finalni uprava stranky (doplnit, co uz se dodelalo, ale na strance to vypada, ze to jeste neni) - simulovane roury - popis jazyka: zda case sensitive, zda musi prikazy zacinat hned na zacatku radku (nebo povolujete mezery), co komentare ve skriptech ? - seznam chybovych hlaseni - dopsat skript3 - nejaky ulet, testuje se stale na tutez konstantu tsh.c - malloc() - vysledek (void*) radeji pretypovat - mozna (???) udelat neco, aby to slo snadno overovat na DOSu (aspon ten getenv(PS) atd.) - popsat programatorske reseni analyzy a interpretace skriptu, at se na to da rozumne navazat. Floppy ------ !!! - floppy.h - Proc #include dos.h a stdio.h ??? (pokud to ma byt na testovani, tak podmineny preklad) - lepe popsat razeni sektoru (co roste nejrychleji: sektory, hlavy, pak cylindry ?) Popis zprav: "konzistentni se zpravami RAM Disku" - nejen jeho, obecne vsech blokovych zarizeni; odkaz na stranku FS Karla Krecmera Oznamit, jak odlisit pocet zapsanych/nactenych bloku od cisla chyby: cisla chyb jsou zaporna (errno.h). Podle stranky FS (fs/device/device.html) dodelat zpravu IOCTL: subspravy GETNUMBERMINORDEV - zjisteni poctu minor zarizeni (disketovych mechanik) a GETDEVSIZE - zjisteni poctu bloku na danem minor zarizeni. Popis polozek zprav: address - poznacit, ze je adresa v ramci adr. prostoru procesu proc_nr. Ve zdrojaku VYRAZNE odlisit rutiny, ktere nejsou pro TUOX verzi, ale DOSovsky testovaci program - nejlepe by bylo odhodit je do zvlastniho modulu, nebo na zacatek zdrojoveho textu a kompilovat je podminene na zaklade definovani/nedefinovani nejakeho symbolu (vselijaky ty "void interrupt f_counter()" apod. ). - nez definovat vlastni typy dword a byte by bylo lepsi se smirit s typy DWord a Byte z COMMON/type.h a pouzivat je, at neni zmatek. Vyhodit hromady zbytecnych a nepouzivanych konstant (aspon pokud nemohou byt k necemu dobra pro budoucnost) HDD --- - Rozbalit ten ZIP, at se daji zdrojaky stahnout samostatne. - Popis do HTML a na stranku, at to je videt. CD -- Ocekavam predevsim popis normy ISO 9660. Prehled je prinosny a zajimavy, ale realne vzato podle toho nikdo nic nenaprogramuje. Je treba zjistit, jak to vypada na vyssich urovnich. Mj. by to chtelo popis struktury adresaru a od kolegy Kratkeho ten slibovany (technicko-programatorsky) popis ATAPI rozhrani. Clock ----- prototyp funkce watchdog(): parametr je int, co v nem je ? (mozna nic, nezlikvidujeme ten parametr ?) Popis func_ptr: mozna explicitne napsat, ze ten ukazatel je near ptr v ramci spolecneho kodoveho segmentu jadra a tasku GET/SET TIME: jen bych pripsal, s jakou frekvenci ty tiky chodi a odkdy se pocita "prvni tik". SET_ALARM - v jakych jednotkach je ten interval ? V ticich ? CLOCK_TICK: text "clock interrupt byl vykonan" je dost matouci; radsi neco jako: "informace pro clock task, ze doslo k HW preruseni od hodin". On totiz teprve bude "vykonan", totiz kod, kterym na interrupt reagujete. Popis navratovych kodu zprav: formalne trochu zmatene-ono to sice skoro kazdemu dojde, ale co je to m_ptr ? Jestli by nebylo lepsi treba msg.RET_ERROR_CODE, atd., at tam aspon neni ten pointer. Nakonec by se melo popsat, co clock task vlastne dela mimo obsluhy zprav od uzivatele, tj. vlastne co se deje v CLOCK_TICK. Jak se tam pocita to casove kvantum a vola scheduler a sleduje vyprseni alarmu atd. Kernel ------ Kdyz uz mate na sve strance odkaz na vytah z me specifikace (coz je chvalyhodne, jen copyright tam chybi :-)), tak by se mel upravit podle vasi skutecne implementace. Bootstrap&kernel ---------------- kde je SP pri vstupu do main() ? - Pocitam nahore D segmentu Nachystat stack INITu Bootstrap --------- - predani zacatku volne pameti memory manageru - domluvit (asi pres parametr jejich main funkce) - predani zacatku a velikosti ramdisku jeho ovladaci - asi nejjednoduseji jako parametr main funkce Na WWW popsat uvodni naplanovani procesu - ktere tasky (a servery a Init) jsou umisteny do kterych front planovace a v jakem poradi. FS (11.2.98) -- K popisu zprav: Ke KAZDE zprave vypsat error kody, ktere muze vracet a strucne duvod kazdeho takoveho chyboveho stavu. (pro MOUNT,UMOUNT to tam je, ale zahrabane, pro READ,WRITE OK) ACCESS - napsat, odkud vzit konstanty pro mode (patrne COMMON ?) CHMOD - co to je "set maska" ? Radsi nejaky odkaz do konstant COMMON CREAT - mode nejsou "prava", proste rezim otevirani - odkud konstanty ? podobne OPEN - konstanty FSTAT,STAT - ukazatel na vyst. buffer - neuvadet jako char*, ale rovnou ptr na prislusnou strukturu. Definice te struktury by se take mohla nekde na tomto miste vypsat. TIMS - vstup neni "ukazatel na vyst. buffer typu realtime", vraci se prece 4 casy, takze kdyz tak ptr na pole 4 realtime polozek. Co bude s tou zpravou SYNC (->do_sync() { flushAll() } ? Zprava _C_UNPAUSE od MM, kdyz dorucuje nekomu signal; kdyby proces visel ve FS cekajic na cteni, z read() se vrati EINTR name_i(),search_dir() - popis sice je, ale silne matouci ! cache.html: struktura buf - radsi na html stranku dat i hlavicku struktury. fsconst.h neni c COMMON, ale FS\COMMON Funkce cache: Ty nadpisy (Vraceni bloku atd) mozna nejake vetsi nez headery funkci, at je to prehledne. Popis zachazeni s bloky: neplyne z toho, ze bych mel volat put_block() i kdyz nic nezmenim, proste vzdy, kdyz uz z blokem nebudu dale pracovat alloc_zone: mirne zmateny popis load_bit_maps - na WWW rict, k cemu je ta pametova kopie bitmap dobra a ze bitmapy zustavaji v pametu po celou dobu namontovani prislusneho zarizeni. super.c: load_bit_maps() - test, zda je v cache dost bloku: kdyz neni, nevracet blok jako MAP_BLOCK, protoze se takto dale nepouziva. WWW: load_bit_maps(): Nastavi prvni 0. a 1. zonu jako obsazenou - snad inode ? unload_bit_maps(): misto "pametove bloky" radeji bloky cache rw_super() - nejen "nacte do cache", ale zkopiruje do poskytnuteho bufferu. - i pri READING je treba blok vratit put_block(), kdyz data z nej prevezmete a uz je nepotrebujete (aby se nepovaloval v cache). get_inode(): WWW - aby z toho bylo jasne, ze "tabulkou i-uzlu" se mysli tabulka inode[] v pameti. put_inode(): Aby v popisu nekoho nematl pojem "pocet odkazu" Jedna vec je count, tj. kolikrat je inode najednou pouzit v ramci systemu a jina vec je pocet linku, ktery rika, kolik jmen inode vlastne ma. Maze se (uvolneni zon souboru) samozrejme pri klesnuti poctu LINKU k nule. Taky by se melo popsat, ze s get_inode a put_inode se zachazi stejne jako s get_block a put_block v cache: chci-li pristupovat k i-uzlu, vyzadam si jeho natazeni do tab. inode[] pres get_inode(), kdyz uz jej pak nepotrebuji, volam put_inode(). popis wipe_inode() - Zadna "jista pole" ! Napsat ktera. popis get_fd(): jaky "volny slot souboru" ? Primo "volny slot tabulky filp[]). Vubec by se strucne mohlo popsat, jak to tam s temi odkazy z tabulky deskriptoru na sloty filp[] funguje, nebo aspon odkaz na prislusnou kapitolu me specifikace. popis read_map() - ne moc srozumitelne . popis rw_user() - s pojmy segment:offset radeji neoperovat, kdyz tak segment a virtualni adresa v nem. device.html - odkaz, odkud jsou ta major cisla tasku (COMMON/com.h ?) Mohlo by se napsat, ze major # urcuje tridu zarizeni a tim i ovladac a je to vlastne pozice tasku prislusneho ovladace v proc[], minor # je poradove cislo zarizeni daneho typu. popis parametru zprav: proc_nr - napsat, ze je to pozice v proc[], at tam nekdo necpe PID. dev_open() - odkud vzit konstanty pro mode ? dev_io() - -"- pro rwflag ? CELY FS: Overit, zda jste spravne pochopili get_block() a put_block(). Get_block() volam, kdyz chci blok, az uz jej nepotrebuji, volam put_blok() - i kdyz slo jen o cteni. TTY --- !!! Zrusit funkce z dos.h, stdio.h, stdlib.h, conio.h apod. (jste ovladac zarizeni TUOXu, Borlandske knihovny funkci VUBEC_NEBUDOU_PRIPOJENY). - dohodnete se s Karlem Krecmerem, jestli zpravy pro vas nechat ve tvaru TTY-*, nebo prejmenovat na DEV_* (je to skoro jedno, jste stejne jedine znakove zarizeni). ! Na strance snad vubec ani nezminovat makra jako m_tty_line etc (a nezverejnovat v tty_mess.h). Misto toho primo pouzivat ty m.dio.*, kdyz uz ten format zpravy takto vzniknul. Vsimnete si, ze ta makra v tty_mess.h jsou stejne naopak: Rongi (puvodni autor) uz to mel napsane se svymi konstantami, kdyz jsem prisel s novym formatem zpravy, tak to temi makry vyresil tak, aby se to navenek jevilo jako dio a vevnitr nemusel nic predelavat. tty_mess.h: konstanty pro nastaveni/cteni parametru tty: zkoordinovat ty konstanty s Karlem Krecmerem a knihovniky, at to nekoliduje. Krome toho zverejnit konstanty pro nastavovani komunikacnich parametru RS232. Konstanty jako SUSPEND a REVIVE - taky jsou definovany nekde jinde (v COMMON: SUSPEND a TRYAGAIN v errno.h, REVIVE je zprava C_REVIVE z callnr.h), CANCEL - z headeru vyhodit Vyhodit ty zkopirovane typy (ani pres podmineny preklad #if 0 ...) Struktury tty_params a _ctrlchars bych mozna dal i do zvlastniho headeru spolu s konstantami pro ioctl - muze je chtit #include-ovat C-programator, kteremu nic neni do vnirnich veci nejakeho TTY tasku (ani nevi, ze neco takoveho existuje). Domluvte s knihovniky. WWW: Struktura zprav pro TTY: tedy vyhodit ty #define m_ , viz vyse. Popsat cleny struktur pro ioctl() - kazdy nekolika slovy, jsou asi celkem jasne - hlavne vypsat konstanty vsech tech modu (co mohu davat do tty_mode: CBREAK, ECHO, ...) Tak mne napada: zdalipak RS232 podporuje XON-XOFF protokol ? (obdoba Ctrl-S) Popis TTY_READ, atd: odkud jsou ty konstanty CONSOLE, RS232LINEx,... ? (ne ze by o ne moc slo, stejne jejich hodnoty potrebuje znat jen root pri volani mknod pri vytvareni spec. souboru v /dev) Doplnit popis navratovych kodu zprav (konzistentne s K.Krecmerem) Na strance s kody oddelte kody RS232 od zbytku, at to je prehledne. porty.h - jeden prazdny radek na zacatek, at to sezere prohlizec porty.c - ne natvrdo pro COM1 (Adresy 3fx). - pred vyslanim znaku testnout, zda uz je vysilaci registr prazdny - v tech kodech skoro nic neni ! A co ta druha strana (ten emulator terminalu pro DOS, kdyz jste to nechteli psat jako standardni VT100) ?????? Otazky k doreseni pro Pana Sefa ------------------------------- MM,FS: Kdo vyplni jejich sloty pro proces init ? Vsechny polozky rozumne inicializovat, fork-em se pak kopiruje ke vsem odstatnim procesum. FS to vyplnuje pri inicializaci, MM se musi prozkoumat Uvodni vynulovani inode, hlavne tabulky souborem obsazenych bloku. get_super() - to neumi superblok natahnout, kdyz v tabulce zatim neni ? Specifikace: 2.4.: server procesy - kde, konstanty 2.6.: intr pro sys_call je 31h, be 20h proc[].p_splimit - je to rozumne jako int* ? (ovlivni kernel) - jak se to vubec nastavuje ? nejak pres NEWMAP od SYSTASKu ???