Changeset be36ec3


Ignore:
Timestamp:
Aug 11, 2020, 2:09:08 PM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
7ed1d8f
Parents:
9f1c286
Message:

No longer hold the submit lock when doing the io_uring_enter system call

File:
1 edited

Legend:

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

    r9f1c286 rbe36ec3  
    359359
    360360                        // We got the lock
     361                        // Collect the submissions
    361362                        unsigned to_submit = __collect_submitions( ring );
     363
     364                        // Release the lock now so syscalls can overlap
     365                        unlock(ring.submit_q.lock);
     366
     367                        // Actually submit
    362368                        int ret = __io_uring_enter( ring, to_submit, false );
    363                         if( ret < 0 ) {
    364                                 unlock(ring.submit_q.lock);
    365                                 return;
    366                         }
    367 
    368                         /* paranoid */ verify( ret > 0 || to_submit == 0 || (ring.ring_flags & IORING_SETUP_SQPOLL) );
     369                        if( ret < 0 ) return;
    369370
    370371                        // Release the consumed SQEs
     
    372373
    373374                        // update statistics
    374                         __STATS__( true,
     375                        __STATS__( false,
    375376                                io.submit_q.submit_avg.rdy += to_submit;
    376377                                io.submit_q.submit_avg.csm += ret;
    377378                                io.submit_q.submit_avg.cnt += 1;
    378379                        )
    379 
    380                         unlock(ring.submit_q.lock);
    381380                }
    382381                else {
Note: See TracChangeset for help on using the changeset viewer.