input event drvier 개념 문의
글쓴이: chocokeki / 작성시간: 월, 2017/02/20 - 8:46오전
이게 봐도봐도 이해가 안가더라구요
이해한 부분
어플리케이션 영역
/dev/input/* 를 읽어 하드웨어 이벤트를 가져간다
/dev/input/* 장치
input core를 통해 input event driver로부터 데이터를 획득
input event driver
input core(drivers/input/input.c) 에서 제공하는
input_allocate_device와 input_register_device 등을 통해 만든 드라이버
/dev/input/*에 데이터를 주는 역할을 한다
궁금한 부분
그렇다면 input event driver 에게는 누가 하드웨어 이벤트를 전달하는가?
즉 윗 그림의 input device driver는 어떻게 만드는가??
정리
hw -> input core[input device driver -> input event driver] -> /dev/input/* -> application
맞나요?
linux input system이 생각보다 복잡하고 크고 어렵네요 이런저런 조언 많이 부탁드려요
줄 바꿈이 이상한점 죄송합니다 마크다운으로 작성해봤는데 줄바꿈이 자동으로 안 먹히네요
Forums:
결론적으로는 OS가 전달해 줍니다.
결론적으로는 OS가 전달해 줍니다.
유저가 input event driver를 만들고 나서 OS에게 특정 하드웨어 이벤트가 일어나면 내가 만든 input event driver를 호출해서 처리를 하라고 하면, OS는 그 다음부터는 그 하드웨어 이벤트가 일어나면 그 등록된 input event driver를 호출합니다. 그리고 그걸로 끝입니다. 더 이상 OS 단에서 지원해 주는 것은 없습니다. driver는 open, read, write, ioctl, close 등을 통상 가지는데 그것을 하드웨어 이벤트와 엮어주면 OS의 역할은 끝납니다.
나머지는 유저가 그 driver 로부터 데이터를 가져가거나(read) 아니면 보내는 (write) 거죠.
답변 감사드립니다
답변 감사드립니다
제가 이해한 것이 맞는지 보아주세요
input driver
spi, i2c, gpio등 통신 포트를 사용해서 hw와 r/w 수행 + api 제공
input event driver
input core api를 사용해서 evdev에 이벤트 전달 + input driver의 api를 사용해서 hw와 r/w 수행
커널 내에 interrupt 처리 모듈이 있습니다.
hw interrupt 를 수신하여 각 driver 에 dispatch 해주는 역할을 합니다. 각 driver 는 해당 event 를 받고 동작하면 되는 거고요.
댓글 달기