xmemdma 커널 서비스

용도

DMA(직접 메모리 액세스) I/O를 위한 페이지를 준비하거나 DMA I/O가 완료된 후 페이지를 처리합니다.

구문

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/xmem.h>
int xmemdma ( xp,  xaddr,  flag)
struct xmem *xp;
caddr_t xaddr;
int flag;

매개변수

항목 설명
XP 교차 메모리 설명자를 지정합니다.
xaddr 전송할 페이지를 지정하는 주소를 식별합니다.
flag DMA I/O를 위한 페이지를 준비할지 또는 DMA I/O가 완료된 후 처리할지 여부를 지정합니다. 가능한 값은 다음과 같습니다.
XMEM_ACC_CHK
페이지에 대한 액세스 확인을 수행합니다. 이 플래그가 설정되면 페이지 보호 속성이 확인됩니다.
XMEM_DR_SAFE
실제 메모리 주소의 사용이 DLPAR 안전함을 나타냅니다.
XMEM_HIDE
DMA I/O를 위한 페이지를 준비합니다. 캐시 불일치 플랫폼의 경우 이 준비에는 페이지에 액세스할 수 없도록 만들어 페이지를 숨기는 작업이 포함됩니다.
XMEM_UNHIDE
DMA I/O 이후 페이지를 처리합니다. 또한 이 플래그는 페이지를 공개하고 캐시가 일치하지 않는 플랫폼에서 페이지에 액세스할 수 있도록 합니다.
XMEM_WRITE_ONLY
의도한 전송을 아웃바운드 전용으로 표시합니다. 이 플래그는 다음과 함께 사용됩니다. XMEM_ACC_CHK 페이지에 대한 읽기 전용 액세스가 충분함을 나타냅니다.

설명

그만큼 xmemdma 커널 서비스는 다음에서 지정한 페이지에서 작동합니다. xaddr 교차 메모리 설명자에 의해 지정된 영역의 매개변수입니다. 교차 메모리 설명자가 커널용인 경우 xaddr 매개변수는 커널 주소를 지정합니다. 그렇지 않으면, xaddr 매개변수는 교차 메모리 설명자에 설명된 영역의 오프셋을 지정합니다.

그만큼 xmemdma 커널 서비스는 프로세서 메모리 캐시가 있지만 캐시를 통해 DMA I/O를 수행하지 않는 시스템에 제공됩니다. 다음에 대한 장치 핸들러 마이크로 채널 DMA 장치는 d_master 서비스와 d_완전 대신 커널 서비스 xmemdma 커널 서비스.

만약 깃발 매개변수는 다음을 나타냅니다. XMEM_HIDE (그건, XMEM_UNHIDE 설정되지 않음) 이는 페이지의 첫 번째 숨기기입니다. xmemdma 커널 서비스는 캐시를 플러시하고 페이지를 유효하지 않게 만들어 DMA I/O를 위한 페이지를 준비합니다. 때 XMEM_UNHIDE 비트가 설정되고 이것이 페이지의 마지막 숨기기 해제가 되면 다음 이벤트가 발생합니다.

  1. 페이지가 유효해졌습니다.

    페이지가 호출기 I/O 상태가 아닌 경우:

  2. 페이지에서 대기 중인 모든 프로세스가 준비되었습니다.
  3. 페이지에 읽기 전용 저장소 키가 없으면 페이지의 수정된 비트가 설정됩니다.

페이지는 DMA 작업 중에 유효하지 않으므로 가상 주소로 주소를 지정할 수 없습니다. 이렇게 하면 DMA 작업 중에 프로세스가 페이지의 일부를 캐시로 읽거나 로드하는 것을 방지할 수 있습니다.

지정된 페이지는 메모리에 있어야 하며 고정되어 있어야 합니다.

만약 XMEM_ACC_CHK 비트가 설정된 다음 xmemdma 커널 서비스는 페이지에 대한 액세스 권한도 확인합니다. 페이지 액세스가 읽기 전용인 경우 XMEM_WRITE_ONLY 비트는 깃발 매개변수.

참고:
  1. 그만큼 xmemdma 커널 서비스는 페이지를 숨기거나 공개하지 않으며 캐시 플러시를 수행하지도 않습니다. 서비스의 주요 기능은 실제 주소 변환입니다.
  2. 이 서비스는 다음 이상의 대용량 메모리 시스템에서는 지원되지 않습니다.4GB 물리적 메모리 주소. 그러한 시스템의 경우,xmemdma64 사용되어야한다.

실행 환경

그만큼 xmemdma 커널 서비스는 다음 중 하나에서 호출될 수 있습니다. 프로세스 또는 방해하다 환경.

리턴 값

성공적으로 완료되면, xmemdma 서비스는 다음에 해당하는 실제 주소를 반환합니다. xaddr 그리고 경험치 매개변수.

오류 코드

그만큼 xmemdma 커널 서비스는 다음 값을 반환합니다. XMEM_FAIL 다음 중 하나에 해당하는 경우:

  • 설명자가 잘못되었습니다.
  • 에서 지정한 페이지 xaddr 또는 경험치 매개변수가 잘못되었습니다.
  • 해당 페이지에 대한 접근이 허용되지 않습니다.