GNU/Linux >> Znalost Linux >  >> Linux

Lze k hardwaru přistupovat přímo z uživatelského prostoru?

Ano, ale málokdy je to užitečné. Na 32bitových systémech x86 můžete použít ioperm(2) systémové volání k nastavení aktuálního procesu tak, aby mohl přímo provádět port I/O. Věřím, že to nefunguje na 64bitových systémech. Můžete také udělat lseek/read/write kombinace proti /dev/port a myslím, že to také není příliš přenosné. Další podrobnosti najdete na http://tldp.org/HOWTO/IO-Port-Programming-2.html. Oba tyto přístupy jsou samozřejmě mnohem pomalejší a méně flexibilní než psaní ovladače zařízení (/dev/port nejpomalejší ze všech). Žádný z mechanismů uživatelského prostoru vám samozřejmě neumožňuje zpracovávat přerušení nebo něco podobného. Pokud je problém s výkonem, skončíte psaním ovladače zařízení.


Váš odhad je správný. Jádro je jediný software, který může odesílat hardwarové požadavky. To neplatí jen pro Linux. Prakticky žádný operační systém novější než DOS vám neumožňuje přímý přístup k hardwaru, protože, jak také tušíte, je to docela nebezpečné.

Není však problém napsat si vlastní ovladač a k dispozici je spousta dokumentace. Například tento tutoriál na xatlantis se zdá být aktuálním (to je důležité!) a dobrým zdrojem.


Linux
  1. Jak přistupovat (pokud je to možné) k prostoru jádra z uživatelského prostoru?

  2. Po instalaci Jenkins nelze odeslat uživateli jenkins

  3. Mohu zavést Linux z VHD?

  1. Jak mohu vytvořit nepřihlášeného uživatele?

  2. Nelze odemknout linuxový uživatelský účet

  3. Jak mohu vyhledat uživatelské jméno podle id v linuxu?

  1. Jak zabránit procesu v zápisu souborů

  2. Jak mohu zabránit tomu, aby můj ovladač wifi přešel katatonicky?

  3. Mohu zjistit informace o hardwarovém RAID zevnitř Linuxu?