약간 질문을 이해하기 어렵네요 ^^

우선 제가 이해하는 한도 내에서

보통 디바이스 드라이버를 이용하여 하드웨어를 제어하는 방법으로 으뜸은 ioctl 입니다.
즉 제어에 대한 의미를 정확하게 지정할수 있기 때문이죠

예를 들어

  키보드의 반복수를 조절한다고 한다면
  두가지 파라메터가 전달되어야 겠죠..

  최초에 눌린 후 반복이 시작되는 시간까지의 시간 간격과
  반복이 시작될때 초당 반복수

  이런 제어를 ioctl 함수로 넘긴다면 당연히
  키 제어 명령을 정의하고 구조체를 이용하여 초기 시간과 반복수를 전달하는 방식으로
  ioctl 명령을 만들 겁니다.

이를 디바이스 드라이버는 해석하고
이에 따른 하드웨어를 제어하고요..

보통 디바이스 드라이버를 만들때 해당 레지스터의 구성에 따라서 만드는 것보다는
이렇게 목적하는 형태의 기능 정의로 만드는 것이 일반적이죠

  read 와 write 는

제어용으로 보다는 한가지 목적의 데이터를 읽어 내거나 써 넣기 위해서 정의 합니다.
가끔 read 와 write 의 보조를 위해서 seek 를 정의 하고요

  질문에 대한 대답이 되었나 모르겠네요