Changeset 2a01c9b


Ignore:
Timestamp:
Apr 23, 2020, 5:53:21 PM (4 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
9edf835, cefc59f
Parents:
40b5417 (diff), 8962722 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/readv.cfa

    r40b5417 r2a01c9b  
    1717#include <time.hfa>
    1818
     19extern bool traceHeapOn();
    1920extern ssize_t async_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
    2021
     
    3839}
    3940
    40 Time now(void);
    41 
    4241int main(int argc, char * argv[]) {
    4342        double duration   = 5.0;
     
    4544        unsigned long int nprocs   = 1;
    4645
     46        printf("Setting local\n");
    4747        setlocale(LC_NUMERIC, "");
     48
    4849
    4950        arg_loop:
     
    7677                        case 't':
    7778                                nthreads = strtoul(arg, &end, 10);
    78                                 if(*end != '\0') {
     79                                if(*end != '\0' || nthreads < 1) {
    7980                                        fprintf(stderr, "Number of threads must be a positive integer, was %s\n", arg);
    8081                                        goto usage;
     
    8384                        case 'p':
    8485                                nprocs = strtoul(arg, &end, 10);
    85                                 if(*end != '\0') {
     86                                if(*end != '\0' || nprocs < 1) {
    8687                                        fprintf(stderr, "Number of processors must be a positive integer, was %s\n", arg);
    8788                                        goto usage;
     
    119120        Time start, end;
    120121        {
    121                 processor procs[nprocs];
     122                processor procs[nprocs - 1];
    122123                {
    123124                        Reader threads[nthreads];
     
    134135                }
    135136        }
    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");
    142143}
  • libcfa/src/concurrency/io.cfa

    r40b5417 r2a01c9b  
    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
    3866
    3967//=============================================================================================
     
    188216
    189217                struct io_user_data * data = (struct io_user_data *)cqe.user_data;
    190                 __cfaabi_bits_print_safe( STDERR_FILENO, "Performed reading io cqe %p, result %d for %p\n", data, cqe.res, data->thrd );
     218                // __cfaabi_bits_print_safe( STDERR_FILENO, "Performed reading io cqe %p, result %d for %p\n", data, cqe.res, data->thrd );
    191219
    192220                data->result = cqe.res;
     
    296324        // Submit however, many entries need to be submitted
    297325        int ret = syscall( __NR_io_uring_enter, ring.fd, 1, 0, 0, 0p, 0);
    298         __cfaabi_bits_print_safe( STDERR_FILENO, "Performed io_submit, returned %d\n", ret );
     326        // __cfaabi_bits_print_safe( STDERR_FILENO, "Performed io_submit, returned %d\n", ret );
    299327        if( ret < 0 ) {
    300328                switch((int)errno) {
     
    352380        #define __submit_wait \
    353381                io_user_data data = { 0, active_thread() }; \
    354                 __cfaabi_bits_print_safe( STDERR_FILENO, "Preparing user data %p for %p\n", &data, data.thrd ); \
     382                /*__cfaabi_bits_print_safe( STDERR_FILENO, "Preparing user data %p for %p\n", &data, data.thrd );*/ \
    355383                sqe->user_data = (uint64_t)&data; \
    356384                __submit( ring, idx ); \
     
    575603        int async_statx(int dirfd, const char *pathname, int flags, unsigned int mask, struct statx *statxbuf) {
    576604                #if !defined(IORING_OP_STATX)
    577                         return statx( dirfd, pathname, flags, mask, statxbuf );
     605                        //return statx( dirfd, pathname, flags, mask, statxbuf );
     606                        return syscall( __NR_io_uring_setup, dirfd, pathname, flags, mask, statxbuf );
    578607                #else
    579608                        __submit_prelude
  • libcfa/src/concurrency/preemption.cfa

    r40b5417 r2a01c9b  
    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                }
    99103
    100104                // Check if this is a kernel
     
    107111
    108112                // Check if this is a periodic alarm
    109                 Duration period = node->period;
    110113                if( period > 0 ) {
    111114                        // __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv );
    112115                        node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
    113116                        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

    r40b5417 r2a01c9b  
    1414//
    1515
     16#include <vector.hfa>
    1617#include <fstream.hfa>
    17 #include <vector.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)) );
    3034
    3135        assert( empty( &iv ) );
Note: See TracChangeset for help on using the changeset viewer.