Ignore:
Timestamp:
Oct 30, 2017, 2:58:42 PM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
2c1830a6
Parents:
bd7f401
Message:

Added new sort function for monitors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/concurrency/monitor.c

    rbd7f401 rde737c8  
    2121#include "kernel_private.h"
    2222
     23#include "bits/algorithms.h"
     24
    2325//-----------------------------------------------------------------------------
    2426// Forward declarations
     
    291293
    292294        // Sort monitors based on address -> TODO use a sort specialized for small numbers
    293         qsort(this.m, count);
     295        __libcfa_small_sort(this.m, count);
    294296
    295297        // Save previous thread context
     
    492494        set_owner( monitors, count, signallee );
    493495
     496        LIB_DEBUG_PRINT_BUFFER_DECL( "Kernel : signal_block condition %p (s: %p)\n", this, signallee );
     497
    494498        //Everything is ready to go to sleep
    495499        BlockInternal( locks, count, &signallee, 1 );
     
    498502        // WE WOKE UP
    499503
     504
     505        LIB_DEBUG_PRINT_BUFFER_LOCAL( "Kernel :   signal_block returned\n" );
    500506
    501507        //We are back, restore the masks and recursions
     
    869875        short size = 0;
    870876        for( int i = 0; i < mask.size; i++ ) {
    871                 qsort( mask.clauses[i].list, mask.clauses[i].size );
     877                __libcfa_small_sort( mask.clauses[i].list, mask.clauses[i].size );
    872878                for( int j = 0; j < mask.clauses[i].size; j++) {
    873879                        insert_unique( storage, size, mask.clauses[i].list[j] );
     
    875881        }
    876882        // TODO insertion sort instead of this
    877         qsort( storage, size );
     883        __libcfa_small_sort( storage, size );
    878884        return size;
    879885}
Note: See TracChangeset for help on using the changeset viewer.