Eşzamansız G/Ç İşlemlerinin Durumu
Önceki Eşzamansız G/Ç Sonraki
Eşzamansız G/Ç İşlemlerinin Durumu
Geçtiğimiz bölümde değinilen işlevlerin açıklamalarında da belirtildiği gibi, bir G/Ç isteğinin durumu hakkında bilgi edinilmesi mümkün olmalıdır. İşlem gerçekten eşzamansız olarak gerçekleştirildiğinde (aio_read ve aio_write ile ilgili olarak lio_listio işlevinde kip olarak LIO_NOWAIT belirtilmesi durumu), kimi zaman bir isteğin sonlanmış olup olmadığı, sonlanmışsa sonucun ne olduğunu bilmek gerekir. Aşağıdaki iki işlev bu çeşit bilgileri almak için tasarlanmıştır.
int aio_error
(const struct aiocb *aiocbp)
işlev
Bu işlev aiocbp ile gösterilen struct aiocb yapısında açıklanan isteğin hata durumunu saptar. İstek henüz sonlanmamışsa daima EINPROGRESS döner. İstek sonlandıktan sonra aio_error işlevi istek başarıyla tamamlanmışsa sıfır ile döner, aksi takdirde isteğin read, write ya da fsync işlevlerinin sonucu olarak errno hata durumlarının karşılığı olan bir değer döner.
İşlev gerçeklenmemişse ENOSYS dönebilir. Eğer aiocbp parametresi dönüş durumu bilinmeyen bir eşzamansız işlemi belirtiyorsa işlev EINVAL değeriyle de dönebilir.
Kaynak dosyası _FILE_OFFSET_BITS == 64 ile derlenmişse 32 bitlik sistemlerde bu işlev aslında aio_error64 işlevine karşılıktır. Yani 32 bitlik arayüz 64 bitlik olanıyla değiştirilir.
int aio_error64
(const struct aiocb64 *aiocbp)
işlev
Bu işlev, argümanının struct aiocb64 türünde bir değişken olması dışında aio_error işlevine benzer.
Kaynak dosyası _FILE_OFFSET_BITS == 64 ile derlenmişse 32 bitlik sistemlerde bu işleve aio_error ismiyle erişilir. Yani 32 bitlik arayüz 64 bitlik olanıyla değiştirilir.
ssize_t aio_return
(const struct aiocb *aiocbp)
işlev
Bu işlev aiocbp ile gösterilen struct aiocb yapısında açıklanan isteğin dönüş durumunu saptar. aio_error işlevinin bu istek için EINPROGRESS döndürdüğü durumda bu işlevin dönüş değeri tanımsızdır.
İstek bittikten hemen sonra bu işlev dönüş durumunu saptamak için kullanılır. Aşağıdaki çağrılar tanımlanmamış bir davranışla sonuçlanabilir. Dönüş değeri yapılan işleme göre read, write ya da fsync çağrılarının döndürdüğü değerdir.
İşlev gerçeklenmemişse ENOSYS dönebilir. Eğer aiocbp parametresi dönüş durumu bilinmeyen bir eşzamansız işlemi belirtiyorsa işlev EINVAL değeriyle de dönebilir.
Kaynak dosyası _FILE_OFFSET_BITS == 64 ile derlenmişse 32 bitlik sistemlerde bu işlev aslında aio_return64 işlevine karşılıktır. Yani 32 bitlik arayüz 64 bitlik olanıyla değiştirilir.
ssize_t aio_return64
(const struct aiocb64 *aiocbp)
işlev
Bu işlev, argümanının struct aiocb64 türünde bir değişken olması dışında aio_return işlevine benzer.
Kaynak dosyası _FILE_OFFSET_BITS == 64 ile derlenmişse 32 bitlik sistemlerde bu işleve aio_return ismiyle erişilir. Yani 32 bitlik arayüz 64 bitlik olanıyla değiştirilir.
Önceki Üst Ana Başlık Sonraki
Eşzamansız Okuma ve Yazma İşlemleri Başlangıç Eşzamansız G/Ç İşlemlerinin Eşzamanlanması
Bir Linux Kitaplığı Sayfası