Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/io.cfa

    r21a5bfb7 rd3605f8  
    144144                __ioarbiter_flush( ctx );
    145145
    146                 if(ctx.sq.to_submit != 0 || min_comp > 0) {
    147 
    148                         __STATS__( true, io.calls.flush++; )
    149                         int ret = syscall( __NR_io_uring_enter, ctx.fd, ctx.sq.to_submit, min_comp, min_comp > 0 ? IORING_ENTER_GETEVENTS : 0, (sigset_t *)0p, _NSIG / 8);
    150                         if( ret < 0 ) {
    151                                 switch((int)errno) {
    152                                 case EAGAIN:
    153                                 case EINTR:
    154                                 case EBUSY:
    155                                         // Update statistics
    156                                         __STATS__( false, io.calls.errors.busy ++; )
    157                                         return false;
    158                                 default:
    159                                         abort( "KERNEL ERROR: IO_URING SYSCALL - (%d) %s\n", (int)errno, strerror(errno) );
    160                                 }
     146                __STATS__( true, io.calls.flush++; )
     147                int ret = syscall( __NR_io_uring_enter, ctx.fd, ctx.sq.to_submit, min_comp, min_comp > 0 ? IORING_ENTER_GETEVENTS : 0, (sigset_t *)0p, _NSIG / 8);
     148                if( ret < 0 ) {
     149                        switch((int)errno) {
     150                        case EAGAIN:
     151                        case EINTR:
     152                        case EBUSY:
     153                                // Update statistics
     154                                __STATS__( false, io.calls.errors.busy ++; )
     155                                return false;
     156                        default:
     157                                abort( "KERNEL ERROR: IO_URING SYSCALL - (%d) %s\n", (int)errno, strerror(errno) );
    161158                        }
    162 
    163                         __cfadbg_print_safe(io, "Kernel I/O : %u submitted to io_uring %d\n", ret, ctx.fd);
    164                         __STATS__( true, io.calls.submitted += ret; )
    165                         /* paranoid */ verify( ctx.sq.to_submit <= *ctx.sq.num );
    166                         /* paranoid */ verify( ctx.sq.to_submit >= ret );
    167 
    168                         ctx.sq.to_submit -= ret;
    169 
    170                         /* paranoid */ verify( ctx.sq.to_submit <= *ctx.sq.num );
    171 
    172                         // Release the consumed SQEs
    173                         __release_sqes( ctx );
    174 
    175                         /* paranoid */ verify( ! __preemption_enabled() );
    176 
    177                         ctx.proc->io.pending = false;
    178                 }
    179 
     159                }
     160
     161                __cfadbg_print_safe(io, "Kernel I/O : %u submitted to io_uring %d\n", ret, ctx.fd);
     162                __STATS__( true, io.calls.submitted += ret; )
     163                /* paranoid */ verify( ctx.sq.to_submit <= *ctx.sq.num );
     164                /* paranoid */ verify( ctx.sq.to_submit >= ret );
     165
     166                ctx.sq.to_submit -= ret;
     167
     168                /* paranoid */ verify( ctx.sq.to_submit <= *ctx.sq.num );
     169
     170                // Release the consumed SQEs
     171                __release_sqes( ctx );
     172
     173                /* paranoid */ verify( ! __preemption_enabled() );
     174
     175                ctx.proc->io.pending = false;
    180176                ready_schedule_lock();
    181177                bool ret = __cfa_io_drain( proc );
Note: See TracChangeset for help on using the changeset viewer.