| Programuje | Stav |
| Karel Krečmer | Testování |
| Task | Device | Device major number | Device special files |
| 0 | 0 | not used | |
| FLOPPY | Disketa | 3 | /dev/fd[0-9] |
| MEM | Paměť | 5 | /dev/mem |
| TTY | Terminál | 6 | /dev/tty[0-9] |
| HDD | Hard disk | 7 | /dev/hd[a-z][0-9] |
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
| Položka v mess_devio | Její význam |
| int device | minor device number |
| int proc_nr | process požadující I/O operaci |
| unsigned int count | u blokových = 1
u znakových počet bytů |
| unsigned long position | u blokových číslo požadovaného bloku
u znakových nic (TTY uses this for flags if needed) První blok na zařízení je 0 slovy nultý |
| vir_bytes address | adresa buferu pro data in (proc_nr) space
(TTY uses it as ptr to info structure for ioctl |
| Položka v mess_devio | Její význam |
| int device | minor device number |
| int proc_nr | process požadující IOCTL |
| unsigned int count | request tj. IOCTL požadavek |
| unsigned long position | nic |
| vir_bytes address | adresa argumentů |
| PUBLIC int dev_open(dev_t dev, int mode) | |
| Vstup | Výstup |
| dev_t dev - device number
int mode |
OK nebo
error z errno.h |
| PUBLIC int dev_close(dev_t dev) | |
| Vstup | Výstup |
| dev_t dev - device number | OK nebo
error z errno.h |
| PUBLIC int dev_io(int rw_flag, dev_t dev, long pos, int count, int proc, char* buf) | |
| Vstup | Výstup |
| int rw_flag
dev_t dev - device number long pos - požadovaný blok První blok na zařízení je 0 slovy nultý int count - u blokových = 1 u znakových je počet bytů int proc - proces, požadující I/O char* buf - ukazatel kam/odkud mají data zapsat/číst |
kladné číslo - počet úspěšně r/w bloků/bytů (počet bloků = 1
nebo error)
SUSPEND - data nyní nejsou k dispozici EAGAIN - zařízení je již obsluhováno jiný error z errno.h |
| PUBLIC int do_ioctl() - tato funkce je vyvolána,
když na FS je poslana message |
|
| Vstupní message | Výstupní message |
| V message:
m_source (dosadí sendrec) m_type = C_IOCTL Položžky v mess_devio: int device - file deskriptor int proc_nr - nic unsigned int count - request tj, IOCTL požadavek unsigned long position - nic vir_bytes addres - adresa argumentů |
int m_type = TASK_REPLY
m_u typu mess_1 REP_STATUS může být :
|