Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++

Téma 2: Rozhraní s uživatelem

Teoretická část

  • Syscally
  • Znaková zařízení
  • Kontrola a použití ukazatelů z uživatelského prostoru
  • Datové typy
    • 32-bit/64-bit kompatibilita

Praktický úkol pro cvičení

  • Implementovat ovladač znakového zařízení
    • Vytvořit znakové zařízení
    • Implementovat open, read/write, release
      • Read bude vracet retězec Ahoj
      • Výpis bufferu write do systémového logu

Domácí úkol

  • Doimplentujte ioctl se dvěma příkazy (dvě různé hodnoty cmd):
    1. Nastavení počtu vracených znaků z read (read bude vracet “A”, “Ah”, “Aho”, anebo “Ahoj”)
    2. Zjištění aktuálního počtu
  • long unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
    • pojmenování “unlocked” čistě z historických důvodů, odpovídá ioctl(fd, cmd, arg) (man ioctl)
      • Tj. předáme-li v userspace int * jako 3. parametr, musíme v jádře arg přetypovat na int *
    • cmd … hodnoty 100 a 200 (anebo správněji můžete definovat a používat čísla definovaná pomocí _IOR a _IOW)
      • detaily v Documentation/ioctl/ioctl-number.txt
    • arg … v prvním případě nastavovaný počet znaků, v druhém ukazatel na int (pozor na ukazatel z userspace)
  • Lze otestovat skriptem z GITu 02/ioctl_test.pl