Changes in / [2a01c9b:40b5417]


Ignore:
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/readv.cfa

    r2a01c9b r40b5417  
    1717#include <time.hfa>
    1818
    19 extern bool traceHeapOn();
    2019extern ssize_t async_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
    2120
     
    3938}
    4039
     40Time now(void);
     41
    4142int main(int argc, char * argv[]) {
    4243        double duration   = 5.0;
     
    4445        unsigned long int nprocs   = 1;
    4546
    46         printf("Setting local\n");
    4747        setlocale(LC_NUMERIC, "");
    48 
    4948
    5049        arg_loop:
     
    7776                        case 't':
    7877                                nthreads = strtoul(arg, &end, 10);
    79                                 if(*end != '\0' || nthreads < 1) {
     78                                if(*end != '\0') {
    8079                                        fprintf(stderr, "Number of threads must be a positive integer, was %s\n", arg);
    8180                                        goto usage;
     
    8483                        case 'p':
    8584                                nprocs = strtoul(arg, &end, 10);
    86                                 if(*end != '\0' || nprocs < 1) {
     85                                if(*end != '\0') {
    8786                                        fprintf(stderr, "Number of processors must be a positive integer, was %s\n", arg);
    8887                                        goto usage;
     
    120119        Time start, end;
    121120        {
    122                 processor procs[nprocs - 1];
     121                processor procs[nprocs];
    123122                {
    124123                        Reader threads[nthreads];
     
    135134                }
    136135        }
     136        printf("Done\n");
    137137        printf("Took %ld ms\n", (end - start)`ms);
    138138        printf("Total reads:      %'zu\n", count);
     
    140140
    141141        close(fd);
    142         printf("Done\n");
    143142}
  • libcfa/src/concurrency/io.cfa

    r2a01c9b r40b5417  
    3636
    3737        static void * __io_poller( void * arg );
    38 
    39        // Weirdly, some systems that do support io_uring don't actually define these
    40        #ifdef __alpha__
    41        /*
    42        * alpha is the only exception, all other architectures
    43        * have common numbers for new system calls.
    44        */
    45        # ifndef __NR_io_uring_setup
    46        #  define __NR_io_uring_setup           535
    47        # endif
    48        # ifndef __NR_io_uring_enter
    49        #  define __NR_io_uring_enter           536
    50        # endif
    51        # ifndef __NR_io_uring_register
    52        #  define __NR_io_uring_register        537
    53        # endif
    54        #else /* !__alpha__ */
    55        # ifndef __NR_io_uring_setup
    56        #  define __NR_io_uring_setup           425
    57        # endif
    58        # ifndef __NR_io_uring_enter
    59        #  define __NR_io_uring_enter           426
    60        # endif
    61        # ifndef __NR_io_uring_register
    62        #  define __NR_io_uring_register        427
    63        # endif
    64        #endif
    65 
    6638
    6739//=============================================================================================
     
    216188
    217189                struct io_user_data * data = (struct io_user_data *)cqe.user_data;
    218                 // __cfaabi_bits_print_safe( STDERR_FILENO, "Performed reading io cqe %p, result %d for %p\n", data, cqe.res, data->thrd );
     190                __cfaabi_bits_print_safe( STDERR_FILENO, "Performed reading io cqe %p, result %d for %p\n", data, cqe.res, data->thrd );
    219191
    220192                data->result = cqe.res;
     
    324296        // Submit however, many entries need to be submitted
    325297        int ret = syscall( __NR_io_uring_enter, ring.fd, 1, 0, 0, 0p, 0);
    326         // __cfaabi_bits_print_safe( STDERR_FILENO, "Performed io_submit, returned %d\n", ret );
     298        __cfaabi_bits_print_safe( STDERR_FILENO, "Performed io_submit, returned %d\n", ret );
    327299        if( ret < 0 ) {
    328300                switch((int)errno) {
     
    380352        #define __submit_wait \
    381353                io_user_data data = { 0, active_thread() }; \
    382                 /*__cfaabi_bits_print_safe( STDERR_FILENO, "Preparing user data %p for %p\n", &data, data.thrd );*/ \
     354                __cfaabi_bits_print_safe( STDERR_FILENO, "Preparing user data %p for %p\n", &data, data.thrd ); \
    383355                sqe->user_data = (uint64_t)&data; \
    384356                __submit( ring, idx ); \
     
    603575        int async_statx(int dirfd, const char *pathname, int flags, unsigned int mask, struct statx *statxbuf) {
    604576                #if !defined(IORING_OP_STATX)
    605                         //return statx( dirfd, pathname, flags, mask, statxbuf );
    606                         return syscall( __NR_io_uring_setup, dirfd, pathname, flags, mask, statxbuf );
     577                        return statx( dirfd, pathname, flags, mask, statxbuf );
    607578                #else
    608579                        __submit_prelude
  • libcfa/src/concurrency/preemption.cfa

    r2a01c9b r40b5417  
    9797        while( node = get_expired( alarms, currtime ) ) {
    9898                // __cfaabi_dbg_print_buffer_decl( " KERNEL: preemption tick.\n" );
    99                 Duration period = node->period;
    100                 if( period == 0) {
    101                         node->set = false;                  // Node is one-shot, just mark it as not pending
    102                 }
    10399
    104100                // Check if this is a kernel
     
    111107
    112108                // Check if this is a periodic alarm
     109                Duration period = node->period;
    113110                if( period > 0 ) {
    114111                        // __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv );
    115112                        node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
    116113                        insert( alarms, node );             // Reinsert the node for the next time it triggers
     114                }
     115                else {
     116                        node->set = false;                  // Node is one-shot, just mark it as not pending
    117117                }
    118118        }
  • tests/vector.cfa

    r2a01c9b r40b5417  
    1414//
    1515
     16#include <fstream.hfa>
    1617#include <vector.hfa>
    17 #include <fstream.hfa>
    1818
    1919#undef assert
     
    2828int main() {
    2929        vector( int ) iv;
    30 
    31         assert( ((uintptr_t)&iv.storage.storage ) == (((uintptr_t)&iv)) );
    32         assert( ((uintptr_t)&iv.storage.capacity) == (((uintptr_t)&iv) + sizeof(void *)) );
    33         assert( ((uintptr_t)&iv.size            ) == (((uintptr_t)&iv) + sizeof(void *) + sizeof(size_t)) );
    3430
    3531        assert( empty( &iv ) );
Note: See TracChangeset for help on using the changeset viewer.