Changeset a182ad5 for libcfa/src/concurrency/kernel
- Timestamp:
- Feb 22, 2022, 12:23:14 PM (2 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- f53afafb
- Parents:
- f69fac7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/kernel/startup.cfa
rf69fac7 ra182ad5 122 122 extern "C" { 123 123 struct { __dllist_t(cluster) list; __spinlock_t lock; } __cfa_dbg_global_clusters; 124 extern size_t __cfa_page_size; 125 extern int __map_prot; 126 } 124 } 125 126 extern size_t __page_size; 127 extern int __map_prot; 127 128 128 129 //----------------------------------------------------------------------------- … … 573 574 } 574 575 576 extern size_t __page_size; 575 577 void ^?{}(processor & this) with( this ){ 576 578 /* paranoid */ verify( !__atomic_load_n(&do_terminate, __ATOMIC_ACQUIRE) ); … … 738 740 void * stack; 739 741 #if CFA_PROCESSOR_USE_MMAP 740 stacksize = ceiling( stacksize, __ cfa_page_size ) + __cfa_page_size;742 stacksize = ceiling( stacksize, __page_size ) + __page_size; 741 743 stack = mmap(0p, stacksize, __map_prot, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); 742 744 if(stack == ((void*)-1)) { 743 745 abort( "pthread stack creation : internal error, mmap failure, error(%d) %s.", errno, strerror( errno ) ); 744 746 } 745 if ( mprotect( stack, __ cfa_page_size, PROT_NONE ) == -1 ) {747 if ( mprotect( stack, __page_size, PROT_NONE ) == -1 ) { 746 748 abort( "pthread stack creation : internal error, mprotect failure, error(%d) %s.", errno, strerror( errno ) ); 747 749 } // if 748 750 #else 749 751 __cfaabi_dbg_debug_do( 750 stack = memalign( __ cfa_page_size, stacksize + __cfa_page_size );752 stack = memalign( __page_size, stacksize + __page_size ); 751 753 // pthread has no mechanism to create the guard page in user supplied stack. 752 if ( mprotect( stack, __ cfa_page_size, PROT_NONE ) == -1 ) {754 if ( mprotect( stack, __page_size, PROT_NONE ) == -1 ) { 753 755 abort( "mprotect : internal error, mprotect failure, error(%d) %s.", errno, strerror( errno ) ); 754 756 } // if … … 777 779 check( pthread_attr_getstacksize( &attr, &stacksize ), "pthread_attr_getstacksize" ); 778 780 assert( stacksize >= PTHREAD_STACK_MIN ); 779 stacksize += __ cfa_page_size;781 stacksize += __page_size; 780 782 781 783 if(munmap(stack, stacksize) == -1) { … … 785 787 __cfaabi_dbg_debug_do( 786 788 // pthread has no mechanism to create the guard page in user supplied stack. 787 if ( mprotect( stack, __ cfa_page_size, __map_prot ) == -1 ) {789 if ( mprotect( stack, __page_size, __map_prot ) == -1 ) { 788 790 abort( "mprotect : internal error, mprotect failure, error(%d) %s.", errno, strerror( errno ) ); 789 791 } // if
Note: See TracChangeset
for help on using the changeset viewer.