posix/aio: modified insertion of sync requests

now sync requests are appended at the end of the appropriate queue

Closes #5176
This commit is contained in:
alessandronardin
2024-12-11 09:49:07 +01:00
parent 1c9d74cfac
commit ab7f9193eb

View File

@@ -393,18 +393,24 @@ static void rtems_aio_insert_prio(
AIO_printf( "First in chain \n" );
rtems_chain_prepend( chain, &req->next_prio );
} else {
AIO_printf( "Add by priority \n" );
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (
req->aiocbp->aio_reqprio > prio &&
!rtems_chain_is_tail( chain, node )
) {
node = rtems_chain_next( node );
prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
if ( req->op_type == AIO_OP_SYNC ) {
AIO_printf( "Sync request. Append to end of chain \n" );
rtems_chain_append( chain, &req->next_prio );
} else {
AIO_printf( "Add by priority \n" );
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (
req->aiocbp->aio_reqprio > prio &&
!rtems_chain_is_tail( chain, node )
) {
node = rtems_chain_next( node );
prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
}
rtems_chain_insert( node->previous, &req->next_prio );
}
rtems_chain_insert( node->previous, &req->next_prio );
}
}