Vrstva device Device Icon

 Programuje  Stav
 Karel Krečmer  Testování 
 
Tabulka zařízení (obsažena v device.h, ale nepoužívá se):
 
 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]
   
Bity v dev_t
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
device major number
device minor number
  Komunikace se zařízeními : Poskytované funkce :  
 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 : 
  1. Kladné číslo    - počet bloků/bytů (blokové/znakové zařízení) úspěšně přečtených/zapsaných
  2. SUSPEND         - data nyní nejsou k dispozici
  3. EAGAIN          - zařízení je již obsluhováno (např. pokus číst z terminálu, z kterého se už čte)
  4. OK              - do budoucna, návratová hodnota pro DEV_OPEN || DEV_CLOSE
  5. Nebo jiné error constanty z common/errno.h
 
Zdrojové kódy : device.c device.h  ioctl.h
  Staré zdrojové kódy : device.c device.h (naprogramoval J.Cahlík l92804)
Pseudokódy : device.c dev.h
 
Zpět na stránku filesystému

Last modified