ddconfig 장치 드라이버 시작점

용도

장치 드라이버에 대한 구성 기능을 수행합니다.

구문

#include <sys/device.h>
#include <sys/types.h>
 
int ddconfig ( devno,  cmd,  uiop)
dev_t devno;
int cmd;
struct uio *uiop;

매개변수

항목 설명
데브노 주 및 부 장치 번호를 지정합니다.
CMD 수행할 기능을 지정합니다. ddconfig 루틴.
다음을 가리킨다 uio 구성 정보에 대한 관련 데이터 영역을 설명하는 구조입니다.

설명

그만큼 ddconfig 진입점은 장치 드라이버를 구성하는 데 사용됩니다. 다음 작업을 수행하기 위해 호출될 수 있습니다.

  • 장치 드라이버를 초기화합니다.
  • 장치 드라이버를 종료합니다.
  • 지원되는 장치에 대한 구성 데이터를 요청합니다.
  • 기타 장치별 구성 기능을 수행합니다.

그만큼 ddconfig 루틴은 장치의 구성, 구성 해제 또는 변경 메서드에 의해 호출됩니다. 일반적으로 지원되는 각 장치 번호(주 및 부)에 대해 한 번 호출됩니다. 그러나 이는 장치에 따라 다릅니다. 특정 장치 방법 및 ddconfig 루틴은 호출 횟수를 결정합니다.

그만큼 ddconfig 루틴은 또한 장치 필수 제품 데이터(VPD) 반환과 같은 구성과 관련된 추가 장치별 기능을 제공할 수도 있습니다. 그만큼 ddconfig 루틴은 일반적으로 다음을 통해 호출됩니다. 시스템 구성 장치별 구성 메소드를 사용하여 서브루틴을 수행합니다.

장치 드라이버와 해당 메서드는 일반적으로 다음 값을 지원합니다. cmd 매개변수:

설명
CFG_INIT 장치 드라이버 및 내부 데이터 영역을 초기화합니다. 여기에는 일반적으로 다음에 의해 지정된 부 번호가 포함됩니다. 데브노 유효성을 위한 매개변수입니다. 장치 드라이버의 ddconfig 또한 루틴은 (지정된 주요 번호에 대해) 처음 호출된 경우 장치 스위치 테이블에 장치 드라이버의 진입점을 설치합니다. 이는 다음을 사용하여 수행할 수 있습니다. 개발자 커널 서비스와 함께 개발자 제공된 주요 장치 번호에 대한 장치 스위치 테이블에 장치 드라이버의 진입점을 추가하는 구조입니다. 데브노 매개변수.

그만큼 CFG_INIT 또한 명령 매개변수는 장치 종속 정보(호출자가 제공한 장치 종속 구조에 있음)를 지정된 장치에 대한 정적 또는 동적으로 할당된 저장 영역에 복사해야 합니다. 이 정보는 다음과 같은 경우에 사용해야 합니다. ddopen 루틴은 나중에 호출됩니다.

장치 종속 구조의 주소와 길이는 uio 가 가리키는 구조 매개변수. 그만큼 uio이동 커널 서비스를 사용하여 장치 종속 구조를 장치 드라이버의 데이터 영역에 복사할 수 있습니다.

ddopen 루틴이 호출되면 장치 드라이버는 장치를 초기화하기 위해 장치 핸들러 역할을 제공하는 루틴이나 다른 장치 드라이버에 장치 종속 정보를 전달합니다. 기기 초기화가 지연될 때까지 ddopen 호출이 수신되면 장치가 실제로 필요할 때까지 중요한 시스템 리소스(DMA 채널 및 인터럽트 수준 등)의 사용을 지연시키는 데 유용합니다.

CFG_TERM 다음과 같이 지정된 장치 번호와 연관된 장치 드라이버를 종료합니다. 데브노 매개변수. 그만큼 ddconfig 루틴은 지정된 항목에서 미결된 열기가 있는지 확인합니다. 데브노 매개변수 . 아무것도 없다면, CFG_TERM 명령 처리는 장치를 종료된 것으로 표시하여 이후에 장치를 열 수 없도록 합니다. 지정된 장치 번호와 연관된 모든 동적으로 할당된 데이터 영역을 해제해야 합니다.

이 종료로 인해 장치 드라이버가 지원하는 마지막 부 번호가 사용되지 않는 경우 개발자 지정된 장치 스위치 테이블에서 장치 드라이버의 진입점을 제거하려면 커널 서비스를 호출해야 합니다. 데브노 매개변수.

지정된 장치에서 열기가 미해결 상태인 경우 적절한 오류 코드가 반환되면서 종료 작업이 거부됩니다. Unconfigure 메소드는 장치 드라이버의 모든 사용이 종료된 경우 이후에 장치 드라이버를 언로드할 수 있습니다.

장치 드라이버의 모든 사용이 종료되었는지 확인하기 위해 장치 메서드를 만들 수 있습니다. 시스템 구성 서브루틴 호출. 을 사용하여 시스템 구성 SYS_QDVSW 작업을 수행하면 장치 메소드는 장치 드라이버가 장치 스위치 테이블에서 자체적으로 제거되었는지 여부를 알 수 있습니다.

CFG_QVPD 장치별 필수 제품 데이터(VPD)를 쿼리합니다.

이 함수의 경우 호출 루틴은 다음을 설정합니다. uio 가 가리키는 구조 매개변수를 ddconfig 루틴. 이것 uio 구조는 호출자의 저장소에 있는 영역을 정의합니다. ddconfig 루틴은 VPD를 작성하는 것입니다. 그만큼 uio이동 커널 서비스를 사용하여 데이터 복사 작업을 제공할 수 있습니다.

가 가리키는 데이터 영역 매개변수에는 두 가지 다른 목적이 있습니다. cmd 기능. 만약 CFG_INIT 명령이 요청되었습니다. 구조는 정보를 읽을 장치 종속 데이터 구조(DDS)의 위치와 길이를 설명합니다. 만약 CFG_QVPD 명령이 요청되었습니다. 구조는 중요한 제품 데이터 정보를 기록하는 영역을 설명합니다. 이 정보의 내용과 형식은 장치 드라이버와 함께 특정 장치 방법에 의해 설정됩니다.

그만큼 uio이동 커널 서비스를 사용하면 이 데이터 영역 안팎으로 정보를 쉽게 복사할 수 있습니다. 형식 uio 구조는/usr/include/sys/uio.h 파일에 추가로 설명되어 있습니다. uio 구조.

실행 환경

그만큼 ddconfig 루틴과 해당 작업은 프로세스 환경에서만 호출됩니다.

리턴 값

그만큼 ddconfig 루틴은 지정된 작업에 대해 오류가 감지되지 않으면 반환 코드를 0으로 설정합니다. 오류가 호출자에게 반환되어야 하는 경우 0이 아닌 반환 코드가 제공되어야 합니다. 사용된 반환 코드는 다음에 정의된 값 중 하나여야 합니다./usr/include/sys/errno.h 파일.

이 루틴이 호출된 경우 시스템 구성 서브루틴을 호출하면 반환 코드가 호출자(일반적으로 장치 메서드)에게 전달됩니다. 오류 코드를 표시하여 전달됩니다. 오류 전역 변수를 제공하고-1 코드를 서브루틴으로 반환합니다.