Messages in this thread | | | Date | Mon, 10 Oct 2005 19:09:08 +0530 | From | Karthik Sarangan <> | Subject | AIO!! |
| |
I wrote a small program to do Async IO from a raw disk open has no problems. My program gets stuck up at aio_read(paio); !!WHY!!
----------------------------------------------- #define _GNU_SOURCE #include <aio.h> #include <unistd.h> #include <fcntl.h>
#define AIOLEN (256 * 1024)
int main(void) { /* Allocate resources / struct aiocb *paio = (struct aiocb *) malloc(sizeof(struct aiocb)); paio->aio_buf = malloc(AIOLEN); paio->aio_fildes = open("/dev/raw/raw1", O_DIRECT | O_RDWR);
paio->aio_nbytes = AIOLEN; paio->aio_reqprio = 0; paio->aio_sigevent.sigev_notify = SIGEV_NONE;
aio_read(paio);
/* My program gets stuck here in this loop. !!WHY!! */ while(aio_error(paio)) { sched_yield(); }
aio_return(paio);
/* Return all resources to Linux */ close(paio->aio_fildes); free(paio->aio_buf); free(paio);
return 0; } -----------------------------------------------
I also have tried inserting an 'aio_fsync' between 'aio_read' and the 'while' loop ... to no avail. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |