Changeset 4d8fbf4 for libcfa


Ignore:
Timestamp:
Sep 16, 2021, 2:22:01 PM (3 years ago)
Author:
caparsons <caparson@…>
Branches:
ADT, ast-experimental, enum, forall-pointer-decay, master, pthread-emulation, qualifiedEnum
Children:
432bffe, 7e7a076
Parents:
a8367eb (diff), 140eb16 (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

Location:
libcfa/src
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/Makefile.am

    ra8367eb r4d8fbf4  
    8787        containers/pair.hfa \
    8888        containers/result.hfa \
     89        containers/string.hfa \
     90        containers/string_res.hfa \
    8991        containers/vector.hfa \
    9092        device/cpu.hfa
     
    194196        $(CFACOMPILE) -quiet -XCFA,-l ${<} -c -o ${@}
    195197
     198concurrency/io/call.cfa: $(srcdir)/concurrency/io/call.cfa.in
     199        ${AM_V_GEN}python3 $< > $@
     200
    196201#----------------------------------------------------------------------------------------------------------------
    197202libcfa_la_SOURCES = ${libsrc}
  • libcfa/src/concurrency/kernel.cfa

    ra8367eb r4d8fbf4  
    2222#include <errno.h>
    2323#include <stdio.h>
     24#include <string.h>
    2425#include <signal.h>
    2526#include <unistd.h>
     
    3132#include "kernel_private.hfa"
    3233#include "preemption.hfa"
     34#include "strstream.hfa"
     35#include "device/cpu.hfa"
    3336
    3437//Private includes
     
    231234                                __cfadbg_print_safe(runtime_core, "Kernel : core %p waiting on eventfd %d\n", this, this->idle);
    232235
    233                                 __disable_interrupts_hard();
    234                                 eventfd_t val;
    235                                 eventfd_read( this->idle, &val );
    236                                 __enable_interrupts_hard();
     236                                {
     237                                        eventfd_t val;
     238                                        ssize_t ret = read( this->idle, &val, sizeof(val) );
     239                                        if(ret < 0) {
     240                                                switch((int)errno) {
     241                                                case EAGAIN:
     242                                                #if EAGAIN != EWOULDBLOCK
     243                                                        case EWOULDBLOCK:
     244                                                #endif
     245                                                case EINTR:
     246                                                        // No need to do anything special here, just assume it's a legitimate wake-up
     247                                                        break;
     248                                                default:
     249                                                        abort( "KERNEL : internal error, read failure on idle eventfd, error(%d) %s.", (int)errno, strerror( (int)errno ) );
     250                                                }
     251                                        }
     252                                }
    237253
    238254                                #if !defined(__CFA_NO_STATISTICS__)
  • libcfa/src/device/cpu.cfa

    ra8367eb r4d8fbf4  
    422422        }
    423423}
     424
     425cpu_info_t cpu_info;
  • libcfa/src/device/cpu.hfa

    ra8367eb r4d8fbf4  
    3030};
    3131
    32 cpu_info_t cpu_info;
     32extern cpu_info_t cpu_info;
  • libcfa/src/fstream.cfa

    ra8367eb r4d8fbf4  
    124124void open( ofstream & os, const char name[], const char mode[] ) {
    125125        FILE * file = fopen( name, mode );
    126         #ifdef __CFA_DEBUG__
     126        // #ifdef __CFA_DEBUG__
    127127        if ( file == 0p ) {
    128128                throw (Open_Failure){ os };
    129129                // abort | IO_MSG "open output file \"" | name | "\"" | nl | strerror( errno );
    130130        } // if
    131         #endif // __CFA_DEBUG__
     131        // #endif // __CFA_DEBUG__
    132132        (os){ file };
    133133} // open
     
    262262void open( ifstream & is, const char name[], const char mode[] ) {
    263263        FILE * file = fopen( name, mode );
    264         #ifdef __CFA_DEBUG__
     264        // #ifdef __CFA_DEBUG__
    265265        if ( file == 0p ) {
    266266                throw (Open_Failure){ is };
    267267                // abort | IO_MSG "open input file \"" | name | "\"" | nl | strerror( errno );
    268268        } // if
    269         #endif // __CFA_DEBUG__
     269        // #endif // __CFA_DEBUG__
    270270        is.file$ = file;
    271271} // open
  • libcfa/src/memory.cfa

    ra8367eb r4d8fbf4  
    155155
    156156forall(T &)
     157T * release(unique_ptr(T) & this) {
     158        T * data = this.data;
     159        this.data = 0p;
     160        return data;
     161}
     162
     163forall(T &)
    157164int ?==?(unique_ptr(T) const & this, unique_ptr(T) const & that) {
    158165        return this.data == that.data;
  • libcfa/src/memory.hfa

    ra8367eb r4d8fbf4  
    9494
    9595forall(T &)
     96T * release(unique_ptr(T) & this);
     97
     98forall(T &)
    9699int ?==?(unique_ptr(T) const & this, unique_ptr(T) const & that);
    97100forall(T &)
Note: See TracChangeset for help on using the changeset viewer.