2010-03-27 3 views
1

내 팔 리눅스 커널의 machine_init 함수에서 동적으로 메모리를 할당하고 싶습니다. 그러나 필자의 테스트 결과에 따르면 kalloc을 호출하면 시스템이 완전히 부팅되지 않는 경우가 있습니다.팔 커널 커널에서 얼마나 빨리 kalloc을 호출 할 수 있습니까?

내 디버깅 도구가 매우 제한되어 있으므로 실패와 관련하여 더 많은 정보를 제공 할 수 없습니다.

간단히 말해서 ARM Linux의 machine_init 함수에서 kalloc을 호출 할 수 있습니까? 그렇지 않다면 대안이 있습니까?

대부분의 경우 부트 프로세스 초기에 메모리를 할당하는 것이 잘못되었습니다 (이 종류의 작업은 장치 드라이버에서 수행해야 함). 그러나, 나는 나의 특정한 프로젝트가 그것을 요구한다라고 확신하고있다.

답변

3

machine_init이 어디에서 호출 되었는가를 볼 수는 없지만 잘못된 것을하려는 것으로 생각할 수는 없습니다.

장치 드라이버와 다른 하위 시스템은 자체 init 시간을 가지므로 매우 일찍 작업을 시도하는 것은 보통 실수입니다 (필요한 것은 아직 시작되지 않았기 때문에). 장치 드라이버를 초기화하는 동안 kmalloc을 확실히 호출 할 수 있습니다 (적어도 콘솔 드라이버는 다를 수 있습니다).

어쨌든 ARM에서 임베디드 시스템이라고 제안했기 때문에 많은 하드웨어를 다룰 필요가 없습니다. 수 많은 요소를 가진 배열을 정적으로 할당 할 수는 없습니까? 초과되면 오류를 줄 수 있습니까?

0

Kmalloc은 상단 슬래브/slob/slub 메모리 프레임 작업의 커널 API입니다. 일단 이러한 프레임 워크 (커널에 의해 사용되는 프레임 워크)가 초기화되면 kmalloc은 잘 동작합니다. 슬래브/슬롭/클럽 초기화 후 통화 확인

건배

관련 문제