mem, kmem


Operacje udostępniane przez te urządzenia to:
  • zmiana pozycji w urządzeniu(llseek) realizowana funkcją memory_lseek. Funkcja ta zwiększa pozycje w pliku o podaną wartość.
  • czytanie z urządzenia(read) realizowana funkcją read_mem(read_kmem). Sprawdzana jest poprawność adresu. Następnie kopjowana jest pamięć makrem copy_to_user. Definicja tego makra uwzględnia konkretną architekturę. Funkcja read_kmem jest analogiczna do read_mem, z tą różnicą że jeśli sięgamy do pamięci wirtualnej to musimy użyć odpowiedni bufor pomocniczy i funkcję vread.
  • pisanie do urządzenia(write) realizowana funkcją write_mem(write_kmem). Podobnie jak wyżej tylko że używane jest makro copy_from_user.
  • mapowanie(mmap) realizowana funkcją mmap_mem. Funkcja ta wypełnia strukturę vm_area_struct, która służy do mapowania pamieci.
  • oraz otwieranie(open) realizowana funkcją open_port, która sprawdza czy dany proces może korzystać z portów.


Wstecz Tomasz Wadowski Dalej