[완료] 프린터포트에서 발생하는 인터럽트 핸들링하려고 request_irq함수를 사용하는데 EBUSY를 리턴하는 경우는 어떤경우가 있나요?

고양이를부탁해의 이미지

안녕하세요 ^^

유영창님 디바이스드라이버책으로 공부하고 있는 학생입니다.

프린터포트에서 인터럽트 발생시켜서 핸들링하는 예제를 돌려보고 있는데

request_irq 함수가 계속 실패하면서 -16(EBUSY)를 리턴하는데

어떤 경우에 EBUSY를 리턴하는지 모르겠네요.

프린터포트가 바쁠 일이 머가 있다고..하하;;

도움 부탁드립니다!

drinkme의 이미지

다른 놈(다른 driver?)이 이미 그 irq를 handling하고 있다는 겁니다.

고양이를부탁해의 이미지

그런데 제가 실행하는 예제는

디바이스파일을 닫으면 free_irq함수를 호출하게 되는데

Trying to free already-free IRQ 7

라는 메시지가 뜨는 것을 dmesg로 확인했습니다.

저 메시지는 해당 인터럽트가 누구에게도 핸들링되고 있지 않다(free)는 의미아닌가요??
------------
힘들면 즐겁다.


------------
힘들면 즐겁다.

고양이를부탁해의 이미지

윗분 말씀대로

parport라는 디바이스드라이버가 이미 잡고 있었네요

rmmod lp
rmmod parport_pc
rmmod ppdev
rmmod parport

해주고 다시 예제 실행하니 드디어 함수 호출 성공했네요 흑흑

정말 많이 감사드려요 ㅡ_ㅜ

다들 좋은 하루 보내세요!!

------------
힘들면 즐겁다.


------------
힘들면 즐겁다.