시스템콜 등록 후 실행을 했는데요

morethanair의 이미지

매번 질문에 답해주셔서 감사합니다^^

311번으로 시스템 콜 번호를 할당하고

테이블에 등록까지 하고 실행을 했습니다.

사용자 프로그램에서는

int i;
i=mysyscall();
return i;

이 부분으로 시스템콜을 한번 호출 하는거 밖에 없고

커널에 시스템콜 프로그램에는

{
printk("Hello\n");
}

이렇게 printk를 한 번 호출하는 부분밖에 없습니다.

그런데 사용자 프로그램을 한 번 실행하고 나면

콘솔에 메시지가 출력이 되는 것까지는 정상인데

그 후에 ls를 칠때마다 메시지가 화면에 출력됩니다.

ls를 칠때나 커널 재컴파일 할때 심지어 재부팅 중간에도

메시지 중간 중간에 'Hello'가 찍힙니다...

mysyscall()을 호출하는 부분도 없을텐데

왜 자꾸 다른 상황에서 내가 만든 시스템콜이 작동하는걸까요?

이런 경험 있으신 분 도움 좀 주세요

kslee80의 이미지

sys_call_table 에 원래 존재하는 엔트리는 274 개일텐데....
311 번까지 중간에 비는 대략 30여개의 엔트리를 sys_call_table 에 다 만들어 준 건가요?

morethanair의 이미지

이 버전에서는 310번까지 기존의 시스템 콜이 잡혀있더군요...;

Toward him...
More Than Air