386 보드에서 파일 오픈시 disable 해야 하나요?

puaxx의 이미지

386보드에 여러장비가 물려있고, 인터럽트로 데이터를 받고 있습니다.

가끔가다 file 포인터가 NULL이 나오는것 같은데요.. 메모리 용량은 넉넉한 편입니다.

한번 NULL이 나오면 계속 NULL이 나오는것 같고요...장비를 껏다가 켜면 다시 괜찮아 지는것 같습니다.

file open할때 인터럽트 영향을 받아서 file pointer가 null이 나올수도 있는지 궁금합니다.

Necromancer의 이미지

close를 안하는 것 같군요.
운영체제가 무엇인지 모르겠지만 한 프로그램이 열 수 있는 파일 갯수에는 제한이 있습니다.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

puaxx의 이미지

운영체제는 도스입니다.

fopen 다 찾아서 close빠진게 있는지 봤는데 없었습니다.

DOC(DISC ON CHIP)라고 flash memory 를 저장매체로 사용하고 있습니다. 혹시 그것 하고 관계가 있을까요?

예기가 나왔으니 다시한번 close빠진게 있는지 봐야겠네요.

Necromancer의 이미지

가능하시다면 어셈블리 코드를 인라인으로 삽입해서 문제가 발생하는 시점에서 INT 21h로 file open을 시도해 보세요.
그럼 에러코드가 리턴될겁니다. 에러코드 조사하면 단서가 나올 수도 있습니다.

** 인터럽트로 가져온다는 얘기는 IRQ를 이용해서 통신을 한다는 이야기이죠?
조작할려는 기기가 준비가 다되었으면 IRQ를 보내고, 그럼 그때 핸들러에서 장치 조작하고 그런 식으로...
IRQ 핸들러 내에서 file open은 비추입니다.
file open시 하드디스크 액세스하면 IRQ가 유발되는데 (보통 primary ide는 IRQ14, secondary ide는 IRQ15로 배정됨)
IRQ 핸들러 내에서 이걸 시도하면 이 IRQ가 막혀버립니다.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction