omd File speciale

Finalità

Fornisce accesso al driver del dispositivo ottico di lettura / scrittura.

Descrizione

Il file speciale omd fornisce l'accesso a blocchi e carattere (raw) ai dischi nell'unità ottica di lettura / scrittura.

Il prefisso r su un nome di file speciale significa che all'unità si accede come dispositivo raw piuttosto che un dispositivo di blocco. L'esecuzione di raw I/O con un disco ottico richiede che tutti i trasferimenti dati siano in multipli della lunghezza del blocco logico del disco ottico. Inoltre, tutte le subroutine lseek che vengono effettuate al driver del dispositivo ottico di lettura / scrittura devono impostare il puntatore di offset del file su un valore che è un multiplo della dimensione del blocco logico specificato.

Lo scdisk SCSI Device Driver fornisce maggiori informazioni sulle specifiche di implementazione.

Driver di unità ottica di lettura / scrittura

I dischi ottici di lettura / scrittura, utilizzati nelle unità ottiche di lettura / scrittura, sono supporti che forniscono memoria per grandi quantità di dati. L'accesso di blocco ai dischi ottici si ottiene attraverso i file speciali /dev/omd0, /dev/omd1, ... /dev/omdn. L'accesso ai caratteri viene fornito tramite i file speciali, /dev/romd0, /dev/romd1, ... /dev/romdn.

Quando un disco ottico di lettura / scrittura viene espulso dall'unità per un sistema di file ottico di lettura / scrittura montato, non è più possibile accedere ai file presenti sul disco ottico. Prima di tentare nuovamente di accedere a questi file, effettuare le seguenti operazioni per un file system montato dal disco ottico di lettura / scrittura:

  1. Stop ai processi che hanno file aperti sul file system.
  2. Spostare i processi che hanno le directory correnti sul file system.
  3. Smontare il file system.
  4. Rimonta il file system dopo aver reinserto i supporti.

Se queste azioni non funzionano, eseguire un smontaggio forzato del file system; quindi, rimontare il file system.

Nota: Reinserire il disco ottico di lettura / scrittura non risolverà il problema. Arrestare tutti i processi (grafico e ASCII) e quindi smontare forzatamente il file system. Quindi rimontare il file system. Dopo aver eseguito questa procedura è possibile riavviare qualsiasi comando uomo .

Periferiche - Subroutine Dipendenti

La maggior parte delle operazioni ottiche di lettura / scrittura sono implementate utilizzando le subroutine aperto, leggi, scriveree chiudi . Tuttavia, per alcuni scopi, è necessario utilizzare la sottoroutine openx (estesa).

La sottoroutine openx

La sottoroutine openx è supportata per fornire funzioni aggiuntive alla sequenza aperto . L'autorizzazione appropriata è necessaria per l'esecuzione. Se si tenta di eseguire la subroutine openx senza l'autorizzazione appropriata, la subroutine restituisce un valore di -1 e imposta la variabile globale errno su un valore di EPERM.

La sottoroutine ioctl

L'operazione IOCINFO della sottoroutine ioctl restituisce la struttura devinfo definita nel file /usr/include/sys/devinfo.h . L'operazione IOCINFO è l'unica operazione definita per tutti i driver di periferica che utilizzano la sottoroutine ioctl . Altre operazioni ioctl sono specifiche per il tipo di driver di dispositivi. La modalità diagnostica non è richiesta per l'operazione IOCINFO .

Condizioni di errore

I possibili errno valori per le sottoroutine ioctl, aperto, leggie scrivere quando si utilizza il file speciale omd includono:

Elemento Descrizione
EACCES Indica una delle seguenti circostanze:
  • È stato effettuato un tentativo di aprire un dispositivo attualmente aperto in modalità Diagnostica o Exclusive Access.
  • È stato effettuato un tentativo di aprire una sessione di modalità Diagnostica su un dispositivo già aperto.
  • L'utente ha tentato una subroutine diversa da una sottoroutine ioctl o chiudi mentre in modalità Diagnostica.
  • Un'operazione DKIOCMD è stata tentata su un dispositivo non in modalità Diagnostica.
  • Un'operazione DKFORMAT è stata tentata su un dispositivo non in modalità Exclusive Access.
EBUSY Indica una delle seguenti circostanze:
  • Il dispositivo di destinazione è riservato da un altro iniziatore.
  • È stato effettuato un tentativo di aprire una sessione in modalità Exclusive Access su un dispositivo già aperto.
EFAULT Indica un indirizzo utente illegale.
EFORMAT Indica che il dispositivo di destinazione ha supporti o supporti non formattati in un formato incompatibile.
EINVAL Indica una delle seguenti circostanze:
  • La sottoroutine leggi o scrivere ha fornito un parametro nbyte che non è un multiplo anche della dimensione del blocco.
  • Una lunghezza buffer dei dati di senso superiore a 255 bytes non è valida per un'operazione di subroutine DKIOWRSE o DKIORDSE ioctl .
  • La lunghezza del buffer di dati ha superato il massimo definito nella struttura devinfo per un'operazione di subroutine DKIORDSE, DKIOWRSEo Ioctl DKIOCMD .
  • È stata tentata un'operazione di subroutine ioctl non supportata.
  • È stato effettuato un tentativo di configurare un dispositivo ancora aperto.
  • È stato dato un comando di configurazione illegale.
  • A DKPMR (Impedire La Rimozione Dei Supporti), DKAMR (Allow Media Rimozione), o DKEJECT (Eject Media) è stato inviato un comando su un dispositivo che non supporta supporti rimovibili.
  • Un comando DKEJECT (Eject Media) è stato inviato ad un dispositivo che attualmente ha il suo supporto bloccato nell'unità.
EIO Indica una delle seguenti circostanze:
  • Il dispositivo di destinazione non può essere localizzato o non risponde.
  • Il dispositivo di destinazione ha indicato un errore hardware non recuperato.
EMEDIA Indica una delle seguenti circostanze:
  • Il dispositivo di destinazione ha indicato un errore mediatico non recuperato.
  • I media sono stati cambiati.
EMFILE Indica un'operazione aperto è stata tentata per un adattatore che ha già il numero massimo consentito di dispositivi aperti.
ENODEV Indica una delle seguenti circostanze:
  • È stato effettuato un tentativo di accesso ad un dispositivo non definito.
  • È stato effettuato un tentativo di chiudere un dispositivo non definito.
ENOTREADY Indica che nessun disco ottico di lettura / scrittura è nell'unità.
ENXIO Indica una delle seguenti circostanze:
  • La sottoroutine ioctl ha fornito un parametro non valido.
  • Un'operazione leggi o scrivere è stata tentata oltre la fine del volume fisico.
EPERM Indica la subroutine tentata richiede un'autorizzazione appropriata.
ESTALE Indica un disco ottico di sola lettura è stato espulso (senza prima essere chiuso dall'utente) e poi reinserito o sostituito con un secondo disco.
ETIMEDOUT Indica un'operazione I/O ha superato il valore del timer indicato.
EWRPROTECT Indica una delle seguenti circostanze:
  • Un'operazione aperto che richiede la modalità leggi / scrittura è stata tentata su supporti di sola lettura.
  • Un'operazione scrivere è stata tentata su supporti di sola lettura.

File

Elemento Descrizione
/dev/romd0, /dev/romd1,..., /d ev/romdn Fornisce accesso di carattere al driver del dispositivo ottico di lettura / scrittura.
/dev/omd0, /dev/omd1,..., /d ev/omdn Fornisce l'accesso di blocco al driver del dispositivo ottico di lettura / scrittura.