안녕하세요.

인터럽트가 발생했을때 해당정보를 가져오는 프로그램을 만들려고 하는데요...


별로 아는 것이 없어서, 일단 보고 이해라도 해보려고

인터넷에서 인터럽트 처리 관련 소스

커널 2.4버젼을 구했습니다.

 

근데 계속 막히네요...

일단  #include </linux/interrupt.h>

이거만 인클루드해도...

 

#include </linux/interrupt.h>

int main()
{
    printf("asdf");
    return 0;
}

이렇게만 작성해도 컴파일오류가 산더미처럼 나옵니다.

도대체 뭐가 문제길래 interrupt.h만 인클루드하고 컴파일해도 에러가 나는걸까요...

 


에러를 찾아봤습니다.

*************************************************

interrupt.h 에서는

syntax 에러와 parse error가 나오는데요.


asmlinkage void do_softirq(void);

여기서 syntax에러가 납니다. void 앞이 잘못되었다면서..
asmlinkage때문에 그런거같은데...왜그런지 모르겠네요.


그리고 parse error...

extern void FASTCALL(raise_softirq(unsigned int nr));


이부분에서 나는데요.
이거말고도 FASTCALL 함수 3개 더있는데 다 parse에러 납니다.

( 토큰 전이 잘못되었다는데

FASTCALL <-이게 도대체 무슨 문제가있는건지..-_-;;;


*************************************************

interrupt.h에서 인클루드 된,
hard_irq.h 에서도 에러가 나는데요...

여기서도 FASTCALL은 에러나구요...parse error

그리고 prof_buffer, prof_shift, prof_len, ENOSYS가 선언되지 않았다고 뜹니다.


그래서 찾아보니 hard_irq.h에서 인클루드하는
profile.h가 있는데

profile.h가서 보면 또 extern 으로 prof_buffer 다 설정되어있는데

왜 읽어오질 못하는건지............

 

답답합니다. 왜 컴파일이 안될까요?


*************************************************

아 그리고 sched.h 랑 workqueue.h 도 인클루드해서 컴파일하는데

죄다 FASTCALL에서 parse error가 납니다.

 


아 그냥 제가 아예 길을 잘못 타고 있는건가요???

인터럽트가 들어왔을때 그 인터럽트에 대한 간략한 정보를 가져와서 txt로 저장하면되는건데


굳이 이렇게 하지않아도 되는건가요???


제발 해결법좀 주세요!!!