map_driver - mathfur/minix GitHub Wiki

呼出元

概要

  • servers/fs/dmap.cにて定義
  • majorで指定するデバイスのdmapを更新する
    • 引数proc_nr,styleの値を反映させる

引数

int major;   // 更新対象のメジャーデバイス番号
int proc_nr; // デバイスドライバのプロセス番号((DRVR|PROC|MEM|LOG)_PROC_NRなど)
int style;   // ドライバの形式(STYLE_DEV | STYLE_TTY | STYLE_CLONE)

実装

  • エラー処理
    • DMAP_MUTABLEがOFF => EPERM (== (_SIGN 1) /* operation not permitted */)
    • DMAP_BUSYがON => EBUSY
  • 正常系
    • 引数に応じてmajorで指定するデバイスのdmapを更新する
      • dmap_oiにはgen_io設定
      • dmap_driverにはproc_nr設定
      • dmap_flagsは変更されない
      • dmap_opcl更新(STYLE_DEV => gen_opcl, STYLE_TTY => tty_opcl, STYLE_CLONE => clone_opcl)

コメント