도와주세요!!
안녕하세요.
인터럽트가 발생했을때 해당정보를 가져오는 프로그램을 만들려고 하는데요...
별로 아는 것이 없어서, 일단 보고 이해라도 해보려고
인터넷에서 인터럽트 처리 관련 소스
커널 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로 저장하면되는건데
굳이 이렇게 하지않아도 되는건가요???
제발 해결법좀 주세요!!!