Changes in / [1adab3e:7b91c0e]


Ignore:
Files:
4 added
4 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/http/main.cfa

    r1adab3e r7b91c0e  
    66#include <unistd.h>
    77extern "C" {
     8        #include <signal.h>
    89        #include <sys/socket.h>
    910        #include <netinet/in.h>
     
    7879//============================================================================================='
    7980int main( int argc, char * argv[] ) {
     81        __sighandler_t s = 1p;
     82        signal(SIGPIPE, s);
     83
    8084        //===================
    8185        // Parse args
  • benchmark/io/http/options.cfa

    r1adab3e r7b91c0e  
    99}
    1010
     11#include <bitmanip.hfa>
    1112#include <fstream.hfa>
    1213#include <kernel.hfa>
     
    5152        bool iokpoll = false;
    5253        unsigned sublen = 16;
     54        unsigned nentries = 16;
     55
    5356
    5457        static cfa_option opt[] = {
     
    6871                { 'i', "kpollcomplete",  "If set, cluster uses IORING_SETUP_IOPOLL", iokpoll, parse_settrue },
    6972                {'\0', "submitlength",   "Max number of submitions that can be submitted together", sublen },
     73                {'\0', "numentries",     "Number of I/O entries", nentries },
    7074
    7175        };
     
    7478        char **left;
    7579        parse_args( argc, argv, opt, opt_cnt, "[OPTIONS]... [PATH]\ncforall http server", left );
     80
     81        if( !is_pow2(nentries) ) {
     82                unsigned v = nentries;
     83                v--;
     84                v |= v >> 1;
     85                v |= v >> 2;
     86                v |= v >> 4;
     87                v |= v >> 8;
     88                v |= v >> 16;
     89                v++;
     90                serr | "Warning: num_entries not a power of 2" | '(' | nentries | ')' | "raising to " | v;
     91                nentries = v;
     92        }
     93        options.clopts.params.num_entries = nentries;
    7694
    7795        options.clopts.params.poller_submits = subthrd;
     
    94112        options.clopts.params.num_ready = sublen;
    95113
    96         if( left[0] == 0p ) { return "."; }
     114        if( left[0] == 0p ) { return; }
    97115
    98116        const char * path = left[0];
     
    100118
    101119        if( left[0] != 0p ) {
    102                 serr | "Too many trailing arguments!";
     120                serr | "Too many trailing arguments!" | '\'' | path | '\'';
     121                while(left[0] != 0p) {
     122                        serr | " - " | left[0];
     123                        left++;
     124                }
    103125                exit(EXIT_FAILURE);
    104126        }
  • libcfa/src/concurrency/io.cfa

    r1adab3e r7b91c0e  
    4141        #include "io/types.hfa"
    4242
    43         static const char * opcodes[] = {
     43        __attribute__((unused)) static const char * opcodes[] = {
    4444                "OP_NOP",
    4545                "OP_READV",
     
    173173                        __cfadbg_print_safe(io_core, "Kernel I/O : IO_URING enter %d %u %u\n", ring.fd, to_submit, flags);
    174174                        ret = syscall( __NR_io_uring_enter, ring.fd, to_submit, 0, flags, (sigset_t *)0p, _NSIG / 8);
     175                        __cfadbg_print_safe(io_core, "Kernel I/O : IO_URING %d returned %d\n", ring.fd, ret);
     176
    175177                        if( ret < 0 ) {
    176178                                switch((int)errno) {
    177179                                case EAGAIN:
    178180                                case EINTR:
     181                                case EBUSY:
    179182                                        ret = -1;
    180183                                        break;
     
    465468                                sqe->flags,
    466469                                sqe->ioprio,
    467                                 sqe->off,
    468                                 sqe->addr,
     470                                (void*)sqe->off,
     471                                (void*)sqe->addr,
    469472                                sqe->len,
    470473                                sqe->accept_flags,
     
    491494                }
    492495                else if( ring.eager_submits ) {
    493                         __u32 picked = __submit_to_ready_array( ring, idx, mask );
     496                        __attribute__((unused)) __u32 picked = __submit_to_ready_array( ring, idx, mask );
    494497
    495498                        #if defined(LEADER_LOCK)
     
    629632                                        sqe->flags,
    630633                                        sqe->ioprio,
    631                                         sqe->off,
    632                                         sqe->addr,
     634                                        (void*)sqe->off,
     635                                        (void*)sqe->addr,
    633636                                        sqe->len,
    634637                                        sqe->accept_flags,
     
    642645                        __atomic_thread_fence( __ATOMIC_SEQ_CST );
    643646                        // Release the consumed SQEs
     647
    644648                        __release_consumed_submission( ring );
    645649                        // ring.submit_q.sqes[idx].user_data = 3ul64;
  • libcfa/src/concurrency/io/setup.cfa

    r1adab3e r7b91c0e  
    549549                int ret = syscall( __NR_io_uring_register, ctx.thrd.ring->fd, IORING_REGISTER_FILES, files, count );
    550550                if( ret < 0 ) {
    551                         abort( "KERNEL ERROR: IO_URING SYSCALL - (%d) %s\n", (int)errno, strerror(errno) );
     551                        abort( "KERNEL ERROR: IO_URING REGISTER - (%d) %s\n", (int)errno, strerror(errno) );
    552552                }
    553553
Note: See TracChangeset for help on using the changeset viewer.