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 :
|