Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel/startup.cfa

    r28c35e2 r97229d6  
    117117}
    118118
    119 extern size_t __page_size;
    120 extern int __map_prot;
     119size_t __page_size = 0;
    121120
    122121//-----------------------------------------------------------------------------
     
    162161        /* paranoid */ verify( ! __preemption_enabled() );
    163162        __cfadbg_print_safe(runtime_core, "Kernel : Starting\n");
     163
     164        __page_size = sysconf( _SC_PAGESIZE );
    164165
    165166        __cfa_dbg_global_clusters.list{ __get };
     
    680681        #if CFA_PROCESSOR_USE_MMAP
    681682                stacksize = ceiling( stacksize, __page_size ) + __page_size;
    682                 stack = mmap(0p, stacksize, __map_prot, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
     683                stack = mmap(0p, stacksize, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
    683684                if(stack == ((void*)-1)) {
    684685                        abort( "pthread stack creation : internal error, mmap failure, error(%d) %s.", errno, strerror( errno ) );
     
    726727                }
    727728        #else
    728                 __cfaabi_dbg_debug_do(
    729                         // pthread has no mechanism to create the guard page in user supplied stack.
    730                         if ( mprotect( stack, __page_size, __map_prot ) == -1 ) {
    731                                 abort( "mprotect : internal error, mprotect failure, error(%d) %s.", errno, strerror( errno ) );
    732                         } // if
    733                 );
    734729                free( stack );
    735730        #endif
Note: See TracChangeset for help on using the changeset viewer.