omd 특수 파일

용도

읽기/쓰기 광학 장치 드라이버에 대한 액세스를 제공합니다.

설명

omd 특수 파일은 읽기/쓰기 광 드라이브의 디스크에 대한 블록 및 문자 (원시) 액세스를 제공합니다.

특수 파일 이름의 r 접두어는 드라이브가 블록 디바이스가 아닌 원시 디바이스로 액세스됨을 의미합니다. 광 디스크를 사용하여 원시 I/O를 수행하려면 모든 데이터 전송이 광 디스크 논리 블록 길이의 배수가 되어야 합니다. 또한 원시 읽기/쓰기 광학 장치 드라이버에 대해 작성된 모든 lseek 서브루틴은 파일 오프셋 포인터를 지정된 논리 블록 크기의 배수인 값으로 설정해야 합니다.

scdisk SCSI 디바이스 드라이버는 구현 특성에 대한 자세한 정보를 제공합니다.

읽기/쓰기 광 장치 드라이버

읽기/쓰기 광 드라이브에서 사용되는 읽기/쓰기 광 디스크는 대량의 데이터에 대한 스토리지를 제공하는 매체입니다. 광 디스크에 대한 블록 액세스는 특수 파일 /dev/omd0, /dev/omd1, ... /dev/omdn을 통해 수행됩니다. 문자 액세스는 특수 파일 /dev/romd0, /dev/romd1, ... /dev/romdn을 통해 제공됩니다.

마운트된 읽기/쓰기 광 파일 시스템의 드라이브에서 읽기/쓰기 광 디스크를 꺼내면 광 디스크의 파일에 더 이상 액세스할 수 없습니다. 이러한 파일에 다시 액세스하기 전에 읽기/쓰기 광 디스크에서 마운트된 파일 시스템에 대해 다음 단계를 수행하십시오.

  1. 파일 시스템에서 파일이 열려 있는 프로세스를 중지합니다.
  2. 파일 시스템에 현재 디렉토리가 있는 프로세스를 이동합니다.
  3. 파일 시스템을 마운트 해제하십시오.
  4. 매체를 다시 삽입한 후 파일 시스템을 다시 마운트하십시오.

이러한 조치가 작동하지 않으면 파일 시스템의 강제 마운트 해제를 수행한 후 파일 시스템을 다시 마운트하십시오.

주: 읽기/쓰기 광 디스크를 다시 삽입해도 문제점이 수정되지 않습니다. 모든 프로세스 (그래픽 및 ASCII) 를 중지한 후 파일 시스템을 강제로 마운트 해제하십시오. 그런 다음 파일 시스템을 다시 마운트하십시오. 이 프로시저를 수행한 후 man 명령을 다시 시작할 수 있습니다.

디바이스 종속 서브루틴

대부분의 읽기/쓰기 광학 조작은 open, read, writeclose 서브루틴을 사용하여 구현됩니다. 그러나 일부의 경우에는 openx (확장) 서브루틴을 사용해야 합니다.

openx 서브루틴

openx 서브루틴은 open 시퀀스에 추가 함수를 제공하기 위해 지원됩니다. 실행하려면 적절한 권한이 필요합니다. 적절한 권한 없이 openx 서브루틴을 실행하려는 시도가 발생하면, 해당 서브루틴은 값을 -1 반환하고 errno 전역 변수를 EPERM 값으로 설정합니다.

ioctl 서브루틴

ioctl 서브루틴 IOCINFO 조작은 /usr/include/sys/devinfo.h 파일에 정의된 devinfo 구조를 리턴합니다. IOCINFO 조작은 ioctl 서브루틴을 사용하는 모든 장치 드라이버에 대해 정의된 유일한 조작입니다. 기타 ioctl 조작은 장치 드라이버의 유형에 특정합니다. IOCINFO 조작에는 진단 모드가 필요하지 않습니다.

오류 조건

omd 특수 파일을 사용할 때 ioctl, open, readwrite 서브루틴에 대해 가능한 errno 값은 다음과 같습니다.

항목 설명
EACCES 다음 상황 중 하나를 표시합니다.
  • 진단 또는 독점 액세스 모드에서 현재 열려 있는 디바이스를 열려고 시도했습니다.
  • 이미 열려 있는 디바이스에서 진단 모드 세션을 열려고 시도했습니다.
  • 사용자가 진단 모드에 있는 동안 ioctl 또는 close 서브루틴 이외의 서브루틴을 시도했습니다.
  • 진단 모드가 아닌 디바이스에서 DKIOCMD 조작을 시도했습니다.
  • 독점 액세스 모드가 아닌 디바이스에서 DKFORMAT 조작을 시도했습니다.
EBUSY 다음 상황 중 하나를 표시합니다.
  • 대상 장치가 다른 개시자에 의해 예약되었습니다.
  • 이미 열려 있는 디바이스에서 독점 액세스 모드로 세션을 열려고 시도했습니다.
EFAULT 잘못된 사용자 주소를 표시합니다.
eformat 대상 장치에 포맷되지 않은 매체 또는 호환되지 않는 형식의 매체가 있음을 표시합니다.
EINVAL 다음 상황 중 하나를 표시합니다.
  • read 또는 write 서브루틴이 블록 크기의 배수가 아닌 nbyte 매개변수를 제공했습니다.
  • 255바이트보다 큰 감지 데이터 버퍼 길이는 DKIOWRSE 또는 DKIORDSE ioctl 서브루틴 조작에 대해 유효하지 않습니다.
  • 데이터 버퍼 길이가 DKIORDSE, DKIOWRSE또는 DKIOCMD ioctl 서브루틴 조작에 대해 devinfo 구조에 정의된 최대값을 초과했습니다.
  • 지원되지 않는 ioctl 서브루틴 조작을 시도했습니다.
  • 아직 열려 있는 디바이스를 구성하려고 했습니다.
  • 잘못된 구성 명령이 제공되었습니다.
  • DKPMR (매체 제거 방지), Dkor (매체 제거 허용) 또는 DKEJECT (매체 제거) 명령이 이동식 매체를 지원하지 않는 장치로 전송되었습니다.
  • DKEJECT (매체 방출) 명령이 현재 드라이브에서 해당 매체가 잠겨 있는 장치로 전송되었습니다.
EIO 다음 상황 중 하나를 표시합니다.
  • 대상 장치를 찾을 수 없거나 응답하지 않습니다.
  • 대상 장치가 복구되지 않은 하드웨어 오류를 표시했습니다.
이미디어 다음 상황 중 하나를 표시합니다.
  • 대상 장치가 복구되지 않은 매체 오류를 표시했습니다.
  • 매체가 변경되었습니다.
EMFILE 이미 허용 가능한 최대 수의 열린 장치가 있는 어댑터에 대해 열기 조작이 시도되었음을 표시합니다.
ENODEV 다음 상황 중 하나를 표시합니다.
  • 정의되지 않은 디바이스에 액세스하려고 시도했습니다.
  • 정의되지 않은 디바이스를 닫으려고 했습니다.
ENOTREADY 드라이브에 읽기/쓰기 광 디스크가 없음을 표시합니다.
엔시오 다음 상황 중 하나를 표시합니다.
  • ioctl 서브루틴이 유효하지 않은 매개변수를 제공했습니다.
  • read 또는 write 조작이 물리적 볼륨의 끝을 넘어 시도되었습니다.
EPERM 시도된 서브루틴에 적절한 권한이 필요함을 표시합니다.
ESTALE (ESTALE) 읽기 전용 광 디스크가 방출된 후 (사용자가 먼저 닫지 않고) 다시 삽입되거나 두 번째 디스크로 대체되었음을 표시합니다.
시간이 다 됐어 I/O 조작이 지정된 타이머 값을 초과했음을 표시합니다.
보호 다음 상황 중 하나를 표시합니다.
  • 읽기 전용 매체에서 읽기/쓰기 모드를 요청하는 열기 조작을 시도했습니다.
  • write 조작이 읽기 전용 매체에 대해 시도되었습니다.

파일

항목 설명
/dev/romd0, /dev/romd1,..., /d ev/romdn 읽기/쓰기 광학 장치 드라이버에 대한 문자 액세스를 제공합니다.
/dev/omd0, /dev/omd1,..., /d ev/omdn 읽기/쓰기 광학 장치 드라이버에 대한 블록 액세스를 제공합니다.