aio_error o sottoroutine aio_error64

La sottoroutine aio_error o aio_error64 include informazioni per la sottoroutine POSIX AIO aio_error (come definito in IEEE std 1003.1-2001) e la sottoroutine Legacy AIO aio_error.

POSIX AIO aio_error Sottoroutine

Finalità

Richiama lo stato di errore per un'operazione I/O asincrona.

Libreria

Libreria C standard (libc.a)

Sintassi

#include <aio.h>

int aio_error (aiocbp)
const struct aiocb *aiocbp;

Descrizione

La sottoroutine aio_error restituisce lo stato di errore associato alla struttura aiocb . Questa struttura è indicata dal parametro aiocbp . Lo stato di errore per un'operazione I/O asincrona è il valore di I/O sincrono errno che viene impostato dalla sottoroutine read, writeo fsync corrispondente. Se la sottoroutine non è stata ancora completata, lo stato di errore è uguale a EINPROGRESS.

Parametri

Elemento Descrizione
aiocbp Punta alla struttura aiocb associata con l'operazione I/O.

Struttura aiocb

La struttura aiocb è definita nel file /usr/include/aio.h e contiene i seguenti membri:
int               aio_fildes
off_t             aio_offset
char             *aio_buf
size_t            aio_nbytes
int               aio_reqprio
struct sigevent   aio_sigevent
int               aio_lio_opcode

Ambiente di esecuzione

Le sottoroutine aio_error e aio_error64 possono essere chiamate solo dall'ambiente del processo.

Valori di ritorno

Se l'operazione I/O asincrona è stata completata correttamente, la sottoroutine aio_error restituisce uno 0. In caso di esito negativo, viene restituito lo stato di errore (come descritto per le sottoroutine read, writee fsync ). Se l'operazione I/E asincrona non è ancora stata completata, viene restituito EINPROGRESS .

Codici di errore

Elemento Descrizione
INVAL Il parametro aiocbp non fa riferimento ad un'operazione asincrona il cui stato di ritorno non è stato ancora richiamato.

Sottoroutine AIO aio_error legacy

Scopo: richiama lo stato di errore di una richiesta I/O asincrona.

Libreria (sottoroutine AIO aio_error legacy)

Libreria C standard (libc.a)

Sintassi (sottoroutine AIO aio_error legacy)

#include <aio.h>
int
aio_error(
handle)
aio_handle_t handle;
int aio_error64(handle)
aio_handle_t handle;

Descrizione (sottoroutine AIO aio_error legacy)

La sottoroutine aio_error richiama lo stato di errore della richiesta asincrona associata al parametro handle . Lo stato di errore è il valore errno che viene impostato dall'operazione I/O corrispondente. Lo stato di errore è EINPROG se l'operazione I/O è ancora in corso.

La sottoroutine aio_error64 è simile alla sottoroutine aio_error , ma richiama lo stato di errore associato ad un blocco di controllo aiocb64 .

Nota: la macro _AIO_AIX_SOURCE utilizzata in aio.h deve essere definita quando si utilizza aio.h per compilare un'applicazione aio con definizioni di funzione AIO legacy. La compilazione predefinita utilizzando il file aio.h è per un'applicazione con le definizioni AIO POSIX . Nel file di origine immettere:
#define _AIO_AIX_SOURCE
#include <sys/aio.h>
oppure, sulla riga comandi durante la compilazione, immettere:
->xlc ... -D_AIO_AIX_SOURCE ... legacy_aio_program.c 

Parametri (sottoroutine AIO aio_error legacy)

Elemento Descrizione
puntatore Il campo handle di una struttura blocco di controllo aio (aiocb o aiocb64) impostata da una precedente chiamata della sottoroutine aio_read, aio_read64, aio_write, aio_write64, lio_listio, aio_listio64 . Se viene inoltrata una posizione di memoria casuale, vengono restituiti risultati casuali.

Struttura aiocb

La struttura aiocb è definita nel file /usr/include/aio.h e contiene i seguenti membri:
struct aiocb
{
       int                 aio_whence;
       off_t               aio_offset;
       char                *aio_buf;
       ssize_t             aio_return;
       int                 aio_errno;
       size_t              aio_nbytes;
       union {
              int          reqprio;
              struct {
                     int   version:8;
                     int   priority:8;
                     int   cache_hint:16;
              } ext;
       } aio_u1;
       int                 aio_flag;
       int                 aio_iocpfd;
       aio_handle_t        aio_handle;
}

#define aio_reqprio        aio_u1.reqprio
#define aio_version        aio_u1.ext.version
#define aio_priority       aio_u1.ext.priority
#define aio_cache_hint     aio_u1.ext.cache_hint

Ambiente di esecuzione (sottoroutine AIO aio_error legacy)

Le sottoroutine aio_error e aio_error64 possono essere chiamate solo dall'ambiente del processo.

Valori di ritorno (sottoroutine AIO aio_error legacy)

Elemento Descrizione
0 Indica che l'operazione è terminata correttamente.
ANNULLATO Indica che la richiesta I/O è stata annullata a causa di una chiamata di sottoroutine aio_cancel .
EINPROG Indica che la richiesta I/O non è stata completata.

Un valore errno descritto nelle routine secondarie aio_read , aio_writee lio_listio : indica che l'operazione non è stata accodata correttamente. Ad esempio, se la subroutine aio_read viene chiamata con un descrittore di file inutilizzabile, essa(aio_read) restituisce il valore -1 e imposta la variabile globale errno su EBADF. Una chiamata successiva della sottoroutine aio_error con l'handle della struttura del blocco di controllo aio (aiocb) non riuscito restituisce EBADF.

Un valore errno dell'operazione I/O corrispondente: indica che l'operazione è stata avviata correttamente, ma l'operazione I/O effettiva ha avuto esito negativo. Ad esempio, richiamando la sottoroutine aio_write su un file ubicato in un file system completo viene restituito il valore 0, che indica che la richiesta è stata accodata correttamente. Tuttavia, quando l'operazione di I/O è completa (ossia, quando la sottoroutine aio_error non restituisce più EINPROG), la sottoroutine aio_error restituisce ENOSPC. Ciò indica che l'I/O ha avuto esito negativo.