- Timestamp:
- Apr 3, 2017, 10:38:04 AM (8 years ago)
- 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:
- 1d29d46
- Parents:
- 814525c (diff), 36e05a2 (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. - Location:
- src
- Files:
-
- 4 added
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
r814525c rfc19129 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 09:06:01 201713 // Update Count : 48 112 // Last Modified On : Thu Mar 30 16:38:01 2017 13 // Update Count : 482 14 14 // 15 15 … … 674 674 675 675 void CodeGenerator::visit( CompoundLiteralExpr *compLitExpr ) { 676 assert( compLitExpr->get_ type() && dynamic_cast< ListInit * > ( compLitExpr->get_initializer() ) );677 output << "(" << genType( compLitExpr->get_ type(), "", pretty ) << ")";676 assert( compLitExpr->get_result() && dynamic_cast< ListInit * > ( compLitExpr->get_initializer() ) ); 677 output << "(" << genType( compLitExpr->get_result(), "", pretty ) << ")"; 678 678 compLitExpr->get_initializer()->accept( *this ); 679 679 } -
src/Parser/ExpressionNode.cc
r814525c rfc19129 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Mar 4 06:58:47201713 // Update Count : 5 0912 // Last Modified On : Thu Mar 30 17:02:46 2017 13 // Update Count : 515 14 14 // 15 15 … … 356 356 // these types do not have associated type information 357 357 } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) { 358 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 358 if ( newDeclStructDecl->has_body() ) { 359 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl ), maybeMoveBuild< Initializer >(kids) ); 360 } else { 361 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 362 } // if 359 363 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) { 360 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 364 if ( newDeclUnionDecl->has_body() ) { 365 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl ), maybeMoveBuild< Initializer >(kids) ); 366 } else { 367 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 368 } // if 361 369 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) { 362 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 370 if ( newDeclEnumDecl->has_body() ) { 371 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl ), maybeMoveBuild< Initializer >(kids) ); 372 } else { 373 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 374 } // if 363 375 } else { 364 376 assert( false ); -
src/Parser/parser.yy
r814525c rfc19129 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 15:42:22 201713 // Update Count : 231 712 // Last Modified On : Thu Mar 30 15:42:32 2017 13 // Update Count : 2318 14 14 // 15 15 … … 423 423 | postfix_expression DECR 424 424 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); } 425 | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99 425 | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99, compound-literal 426 426 { $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); } 427 427 | postfix_expression '{' argument_expression_list '}' // CFA -
src/SymTab/Indexer.cc
r814525c rfc19129 10 10 // Created On : Sun May 17 21:37:33 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Mar 14 08:07:34201713 // Update Count : 1 712 // Last Modified On : Thu Mar 30 16:38:47 2017 13 // Update Count : 19 14 14 // 15 15 … … 483 483 void Indexer::visit( CompoundLiteralExpr *compLitExpr ) { 484 484 acceptNewScope( compLitExpr->get_result(), *this ); 485 maybeAccept( compLitExpr->get_type(), *this );486 485 maybeAccept( compLitExpr->get_initializer(), *this ); 487 486 } -
src/SymTab/Validate.cc
r814525c rfc19129 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 16 16:39:15201713 // Update Count : 35 312 // Last Modified On : Thu Mar 30 16:50:13 2017 13 // Update Count : 357 14 14 // 15 15 … … 222 222 CompoundLiteral compoundliteral; 223 223 224 HoistStruct::hoistStruct( translationUnit ); 224 225 EliminateTypedef::eliminateTypedef( translationUnit ); 225 HoistStruct::hoistStruct( translationUnit );226 226 ReturnTypeFixer::fix( translationUnit ); // must happen before autogen 227 227 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions … … 824 824 static UniqueName indexName( "_compLit" ); 825 825 826 ObjectDecl *tempvar = new ObjectDecl( indexName.newName(), storageClasses, LinkageSpec::C, 0, compLitExpr->get_ type(), compLitExpr->get_initializer() );827 compLitExpr->set_ type( 0 );826 ObjectDecl *tempvar = new ObjectDecl( indexName.newName(), storageClasses, LinkageSpec::C, 0, compLitExpr->get_result(), compLitExpr->get_initializer() ); 827 compLitExpr->set_result( 0 ); 828 828 compLitExpr->set_initializer( 0 ); 829 829 delete compLitExpr; -
src/SynTree/Expression.cc
r814525c rfc19129 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 09:42:04201713 // Update Count : 5 112 // Last Modified On : Thu Mar 30 16:41:13 2017 13 // Update Count : 52 14 14 // 15 15 … … 571 571 572 572 573 CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ),initializer( initializer ) {573 CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : initializer( initializer ) { 574 574 assert( type && initializer ); 575 set_result( type ->clone());576 } 577 578 CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( other.type->clone() ),initializer( other.initializer->clone() ) {}575 set_result( type ); 576 } 577 578 CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), initializer( other.initializer->clone() ) {} 579 579 580 580 CompoundLiteralExpr::~CompoundLiteralExpr() { 581 581 delete initializer; 582 delete type;583 582 } 584 583 … … 586 585 os << "Compound Literal Expression: " << std::endl; 587 586 os << std::string( indent+2, ' ' ); 588 type->print( os, indent + 2 );587 get_result()->print( os, indent + 2 ); 589 588 os << std::string( indent+2, ' ' ); 590 589 initializer->print( os, indent + 2 ); -
src/SynTree/Expression.h
r814525c rfc19129 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jan 14 14:37:54201713 // Update Count : 3712 // Last Modified On : Thu Mar 30 16:44:00 2017 13 // Update Count : 41 14 14 // 15 15 … … 35 35 36 36 Type *& get_result() { return result; } 37 const Type * get_result() const { return result; } 37 38 void set_result( Type * newValue ) { result = newValue; } 38 39 bool has_result() const { return result != nullptr; } … … 586 587 virtual ~CompoundLiteralExpr(); 587 588 588 Type * get_type() const { return type; }589 void set_type( Type * t ) { type = t; }590 591 589 Initializer * get_initializer() const { return initializer; } 592 590 void set_initializer( Initializer * i ) { initializer = i; } … … 597 595 virtual void print( std::ostream & os, int indent = 0 ) const; 598 596 private: 599 Type * type;600 597 Initializer * initializer; 601 598 }; -
src/SynTree/Mutator.cc
r814525c rfc19129 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 16 15:02:23201713 // Update Count : 2 112 // Last Modified On : Thu Mar 30 16:45:19 2017 13 // Update Count : 22 14 14 // 15 15 … … 369 369 compLitExpr->set_env( maybeMutate( compLitExpr->get_env(), *this ) ); 370 370 compLitExpr->set_result( maybeMutate( compLitExpr->get_result(), *this ) ); 371 compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) );372 371 compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) ); 373 372 return compLitExpr; -
src/SynTree/Visitor.cc
r814525c rfc19129 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 16 15:01:25 201713 // Update Count : 2 312 // Last Modified On : Thu Mar 30 16:45:25 2017 13 // Update Count : 24 14 14 // 15 15 … … 292 292 void Visitor::visit( CompoundLiteralExpr *compLitExpr ) { 293 293 maybeAccept( compLitExpr->get_result(), *this ); 294 maybeAccept( compLitExpr->get_type(), *this );295 294 maybeAccept( compLitExpr->get_initializer(), *this ); 296 295 } -
src/driver/cfa.cc
r814525c rfc19129 269 269 args[nargs] = "-lpthread"; 270 270 nargs += 1; 271 args[nargs] = "-ldl"; 272 nargs += 1; 273 args[nargs] = "-Xlinker"; 274 nargs += 1; 275 args[nargs] = "--undefined=__lib_debug_write"; 276 nargs += 1; 277 271 278 } // if 272 279 #endif //HAVE_LIBCFA -
src/libcfa/Makefile.am
r814525c rfc19129 49 49 50 50 libobjs = ${headers:=.o} 51 libsrc = libcfa-prelude.c ${headers:=.c}51 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} 52 52 53 53 # not all platforms support concurrency, add option do disable it -
src/libcfa/Makefile.in
r814525c rfc19129 43 43 44 44 # not all platforms support concurrency, add option do disable it 45 @BUILD_CONCURRENCY_TRUE@am__append_3 = con tainers/vector concurrency/coroutine concurrency/thread concurrency/kernel concurrency/monitor45 @BUILD_CONCURRENCY_TRUE@am__append_3 = concurrency/coroutine concurrency/thread concurrency/kernel concurrency/monitor 46 46 47 47 # not all platforms support concurrency, add option do disable it … … 97 97 libcfa_d_a_AR = $(AR) $(ARFLAGS) 98 98 libcfa_d_a_LIBADD = 99 am__libcfa_d_a_SOURCES_DIST = libcfa-prelude.c limits.c stdlib.c \100 math.c iostream.c fstream.c iterator.c rational.c assert.c \101 containers/vector.c concurrency/coroutine.c \102 concurrency/ thread.c concurrency/kernel.c \103 concurrency/ monitor.c concurrency/CtxSwitch-@MACHINE_TYPE@.S\104 concurrency/ invoke.c99 am__libcfa_d_a_SOURCES_DIST = libcfa-prelude.c interpose.c \ 100 libhdr/libdebug.c limits.c stdlib.c math.c iostream.c \ 101 fstream.c iterator.c rational.c assert.c containers/vector.c \ 102 concurrency/coroutine.c concurrency/thread.c \ 103 concurrency/kernel.c concurrency/monitor.c \ 104 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c 105 105 am__dirstamp = $(am__leading_dot)dirstamp 106 @BUILD_CONCURRENCY_TRUE@am__objects_1 = containers/libcfa_d_a-vector.$(OBJEXT) \ 107 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_d_a-coroutine.$(OBJEXT) \ 106 @BUILD_CONCURRENCY_TRUE@am__objects_1 = concurrency/libcfa_d_a-coroutine.$(OBJEXT) \ 108 107 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_d_a-thread.$(OBJEXT) \ 109 108 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_d_a-kernel.$(OBJEXT) \ … … 113 112 libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-fstream.$(OBJEXT) \ 114 113 libcfa_d_a-iterator.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \ 115 libcfa_d_a-assert.$(OBJEXT) $(am__objects_1) 114 libcfa_d_a-assert.$(OBJEXT) \ 115 containers/libcfa_d_a-vector.$(OBJEXT) $(am__objects_1) 116 116 @BUILD_CONCURRENCY_TRUE@am__objects_3 = concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \ 117 117 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_d_a-invoke.$(OBJEXT) 118 am__objects_4 = libcfa_d_a-libcfa-prelude.$(OBJEXT) $(am__objects_2) \ 118 am__objects_4 = libcfa_d_a-libcfa-prelude.$(OBJEXT) \ 119 libcfa_d_a-interpose.$(OBJEXT) \ 120 libhdr/libcfa_d_a-libdebug.$(OBJEXT) $(am__objects_2) \ 119 121 $(am__objects_3) 120 122 am_libcfa_d_a_OBJECTS = $(am__objects_4) … … 122 124 libcfa_a_AR = $(AR) $(ARFLAGS) 123 125 libcfa_a_LIBADD = 124 am__libcfa_a_SOURCES_DIST = libcfa-prelude.c limits.c stdlib.c math.c \ 125 iostream.c fstream.c iterator.c rational.c assert.c \ 126 containers/vector.c concurrency/coroutine.c \ 127 concurrency/thread.c concurrency/kernel.c \ 128 concurrency/monitor.c concurrency/CtxSwitch-@MACHINE_TYPE@.S \ 129 concurrency/invoke.c 130 @BUILD_CONCURRENCY_TRUE@am__objects_5 = \ 131 @BUILD_CONCURRENCY_TRUE@ containers/libcfa_a-vector.$(OBJEXT) \ 132 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-coroutine.$(OBJEXT) \ 126 am__libcfa_a_SOURCES_DIST = libcfa-prelude.c interpose.c \ 127 libhdr/libdebug.c limits.c stdlib.c math.c iostream.c \ 128 fstream.c iterator.c rational.c assert.c containers/vector.c \ 129 concurrency/coroutine.c concurrency/thread.c \ 130 concurrency/kernel.c concurrency/monitor.c \ 131 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c 132 @BUILD_CONCURRENCY_TRUE@am__objects_5 = concurrency/libcfa_a-coroutine.$(OBJEXT) \ 133 133 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-thread.$(OBJEXT) \ 134 134 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-kernel.$(OBJEXT) \ … … 138 138 libcfa_a-fstream.$(OBJEXT) libcfa_a-iterator.$(OBJEXT) \ 139 139 libcfa_a-rational.$(OBJEXT) libcfa_a-assert.$(OBJEXT) \ 140 $(am__objects_5)140 containers/libcfa_a-vector.$(OBJEXT) $(am__objects_5) 141 141 @BUILD_CONCURRENCY_TRUE@am__objects_7 = concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \ 142 142 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-invoke.$(OBJEXT) 143 am__objects_8 = libcfa_a-libcfa-prelude.$(OBJEXT) $(am__objects_6) \ 143 am__objects_8 = libcfa_a-libcfa-prelude.$(OBJEXT) \ 144 libcfa_a-interpose.$(OBJEXT) \ 145 libhdr/libcfa_a-libdebug.$(OBJEXT) $(am__objects_6) \ 144 146 $(am__objects_7) 145 147 am_libcfa_a_OBJECTS = $(am__objects_8) … … 308 310 AM_CCASFLAGS = @CFA_FLAGS@ 309 311 headers = limits stdlib math iostream fstream iterator rational assert \ 310 $(am__append_3)312 containers/vector $(am__append_3) 311 313 libobjs = ${headers:=.o} 312 libsrc = libcfa-prelude.c ${headers:=.c} $(am__append_4) 314 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \ 315 $(am__append_4) 313 316 libcfa_a_SOURCES = ${libsrc} 314 317 libcfa_a_CFLAGS = -nodebug -O2 … … 383 386 clean-libLIBRARIES: 384 387 -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) 388 libhdr/$(am__dirstamp): 389 @$(MKDIR_P) libhdr 390 @: > libhdr/$(am__dirstamp) 391 libhdr/$(DEPDIR)/$(am__dirstamp): 392 @$(MKDIR_P) libhdr/$(DEPDIR) 393 @: > libhdr/$(DEPDIR)/$(am__dirstamp) 394 libhdr/libcfa_d_a-libdebug.$(OBJEXT): libhdr/$(am__dirstamp) \ 395 libhdr/$(DEPDIR)/$(am__dirstamp) 385 396 containers/$(am__dirstamp): 386 397 @$(MKDIR_P) containers … … 415 426 $(AM_V_AR)$(libcfa_d_a_AR) libcfa-d.a $(libcfa_d_a_OBJECTS) $(libcfa_d_a_LIBADD) 416 427 $(AM_V_at)$(RANLIB) libcfa-d.a 428 libhdr/libcfa_a-libdebug.$(OBJEXT): libhdr/$(am__dirstamp) \ 429 libhdr/$(DEPDIR)/$(am__dirstamp) 417 430 containers/libcfa_a-vector.$(OBJEXT): containers/$(am__dirstamp) \ 418 431 containers/$(DEPDIR)/$(am__dirstamp) … … 447 460 -rm -f containers/libcfa_a-vector.$(OBJEXT) 448 461 -rm -f containers/libcfa_d_a-vector.$(OBJEXT) 462 -rm -f libhdr/libcfa_a-libdebug.$(OBJEXT) 463 -rm -f libhdr/libcfa_d_a-libdebug.$(OBJEXT) 449 464 450 465 distclean-compile: … … 453 468 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@ 454 469 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@ 470 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-interpose.Po@am__quote@ 455 471 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iostream.Po@am__quote@ 456 472 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iterator.Po@am__quote@ … … 462 478 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@ 463 479 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@ 480 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-interpose.Po@am__quote@ 464 481 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iostream.Po@am__quote@ 465 482 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iterator.Po@am__quote@ … … 482 499 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-vector.Po@am__quote@ 483 500 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-vector.Po@am__quote@ 501 @AMDEP_TRUE@@am__include@ @am__quote@libhdr/$(DEPDIR)/libcfa_a-libdebug.Po@am__quote@ 502 @AMDEP_TRUE@@am__include@ @am__quote@libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Po@am__quote@ 484 503 485 504 .S.o: … … 522 541 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi` 523 542 543 libcfa_d_a-interpose.o: interpose.c 544 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-interpose.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-interpose.Tpo -c -o libcfa_d_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c 545 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-interpose.Tpo $(DEPDIR)/libcfa_d_a-interpose.Po 546 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='interpose.c' object='libcfa_d_a-interpose.o' libtool=no @AMDEPBACKSLASH@ 547 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 548 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c 549 550 libcfa_d_a-interpose.obj: interpose.c 551 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-interpose.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-interpose.Tpo -c -o libcfa_d_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi` 552 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-interpose.Tpo $(DEPDIR)/libcfa_d_a-interpose.Po 553 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='interpose.c' object='libcfa_d_a-interpose.obj' libtool=no @AMDEPBACKSLASH@ 554 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 555 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi` 556 557 libhdr/libcfa_d_a-libdebug.o: libhdr/libdebug.c 558 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libhdr/libcfa_d_a-libdebug.o -MD -MP -MF libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Tpo -c -o libhdr/libcfa_d_a-libdebug.o `test -f 'libhdr/libdebug.c' || echo '$(srcdir)/'`libhdr/libdebug.c 559 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Tpo libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Po 560 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libhdr/libdebug.c' object='libhdr/libcfa_d_a-libdebug.o' libtool=no @AMDEPBACKSLASH@ 561 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 562 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libhdr/libcfa_d_a-libdebug.o `test -f 'libhdr/libdebug.c' || echo '$(srcdir)/'`libhdr/libdebug.c 563 564 libhdr/libcfa_d_a-libdebug.obj: libhdr/libdebug.c 565 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libhdr/libcfa_d_a-libdebug.obj -MD -MP -MF libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Tpo -c -o libhdr/libcfa_d_a-libdebug.obj `if test -f 'libhdr/libdebug.c'; then $(CYGPATH_W) 'libhdr/libdebug.c'; else $(CYGPATH_W) '$(srcdir)/libhdr/libdebug.c'; fi` 566 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Tpo libhdr/$(DEPDIR)/libcfa_d_a-libdebug.Po 567 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libhdr/libdebug.c' object='libhdr/libcfa_d_a-libdebug.obj' libtool=no @AMDEPBACKSLASH@ 568 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 569 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libhdr/libcfa_d_a-libdebug.obj `if test -f 'libhdr/libdebug.c'; then $(CYGPATH_W) 'libhdr/libdebug.c'; else $(CYGPATH_W) '$(srcdir)/libhdr/libdebug.c'; fi` 570 524 571 libcfa_d_a-limits.o: limits.c 525 572 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c … … 717 764 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 718 765 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi` 766 767 libcfa_a-interpose.o: interpose.c 768 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-interpose.o -MD -MP -MF $(DEPDIR)/libcfa_a-interpose.Tpo -c -o libcfa_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c 769 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-interpose.Tpo $(DEPDIR)/libcfa_a-interpose.Po 770 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='interpose.c' object='libcfa_a-interpose.o' libtool=no @AMDEPBACKSLASH@ 771 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 772 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c 773 774 libcfa_a-interpose.obj: interpose.c 775 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-interpose.obj -MD -MP -MF $(DEPDIR)/libcfa_a-interpose.Tpo -c -o libcfa_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi` 776 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-interpose.Tpo $(DEPDIR)/libcfa_a-interpose.Po 777 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='interpose.c' object='libcfa_a-interpose.obj' libtool=no @AMDEPBACKSLASH@ 778 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 779 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi` 780 781 libhdr/libcfa_a-libdebug.o: libhdr/libdebug.c 782 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libhdr/libcfa_a-libdebug.o -MD -MP -MF libhdr/$(DEPDIR)/libcfa_a-libdebug.Tpo -c -o libhdr/libcfa_a-libdebug.o `test -f 'libhdr/libdebug.c' || echo '$(srcdir)/'`libhdr/libdebug.c 783 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libhdr/$(DEPDIR)/libcfa_a-libdebug.Tpo libhdr/$(DEPDIR)/libcfa_a-libdebug.Po 784 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libhdr/libdebug.c' object='libhdr/libcfa_a-libdebug.o' libtool=no @AMDEPBACKSLASH@ 785 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 786 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libhdr/libcfa_a-libdebug.o `test -f 'libhdr/libdebug.c' || echo '$(srcdir)/'`libhdr/libdebug.c 787 788 libhdr/libcfa_a-libdebug.obj: libhdr/libdebug.c 789 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libhdr/libcfa_a-libdebug.obj -MD -MP -MF libhdr/$(DEPDIR)/libcfa_a-libdebug.Tpo -c -o libhdr/libcfa_a-libdebug.obj `if test -f 'libhdr/libdebug.c'; then $(CYGPATH_W) 'libhdr/libdebug.c'; else $(CYGPATH_W) '$(srcdir)/libhdr/libdebug.c'; fi` 790 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libhdr/$(DEPDIR)/libcfa_a-libdebug.Tpo libhdr/$(DEPDIR)/libcfa_a-libdebug.Po 791 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libhdr/libdebug.c' object='libhdr/libcfa_a-libdebug.obj' libtool=no @AMDEPBACKSLASH@ 792 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 793 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libhdr/libcfa_a-libdebug.obj `if test -f 'libhdr/libdebug.c'; then $(CYGPATH_W) 'libhdr/libdebug.c'; else $(CYGPATH_W) '$(srcdir)/libhdr/libdebug.c'; fi` 719 794 720 795 libcfa_a-limits.o: limits.c … … 1048 1123 -rm -f containers/$(DEPDIR)/$(am__dirstamp) 1049 1124 -rm -f containers/$(am__dirstamp) 1125 -rm -f libhdr/$(DEPDIR)/$(am__dirstamp) 1126 -rm -f libhdr/$(am__dirstamp) 1050 1127 1051 1128 maintainer-clean-generic: … … 1057 1134 1058 1135 distclean: distclean-am 1059 -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR) 1136 -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR) libhdr/$(DEPDIR) 1060 1137 -rm -f Makefile 1061 1138 distclean-am: clean-am distclean-compile distclean-generic \ … … 1103 1180 1104 1181 maintainer-clean: maintainer-clean-am 1105 -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR) 1182 -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR) libhdr/$(DEPDIR) 1106 1183 -rm -f Makefile 1107 1184 maintainer-clean-am: distclean-am maintainer-clean-generic \ -
src/libcfa/assert.c
r814525c rfc19129 17 17 #include "stdlib" // abort 18 18 19 #include "libhdr/libdebug.h" 20 19 21 extern "C" { 20 22 #include <stdarg.h> // varargs … … 23 25 extern const char * __progname; // global name of running executable (argv[0]) 24 26 25 #define CFA_ASSERT_FMT " *CFA assertion error*from program \"%s\" in \"%s\" at line %d in file \"%s\""27 #define CFA_ASSERT_FMT "Cforall Assertion error from program \"%s\" in \"%s\" at line %d in file \"%s\"" 26 28 27 29 // called by macro assert in assert.h 28 30 void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) { 29 fprintf( stderr,CFA_ASSERT_FMT ".\n", __progname, function, line, file );31 __lib_debug_print_safe( CFA_ASSERT_FMT ".\n", __progname, function, line, file ); 30 32 abort(); 31 33 } … … 33 35 // called by macro assertf 34 36 void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) { 35 fprintf( stderr, CFA_ASSERT_FMT ": ", __progname, function, line, file ); 37 __lib_debug_acquire(); 38 __lib_debug_print_nolock( CFA_ASSERT_FMT ": ", __progname, function, line, file ); 39 36 40 va_list args; 37 41 va_start( args, fmt ); 38 vfprintf( stderr,fmt, args );42 __lib_debug_print_vararg( fmt, args ); 39 43 va_end( args ); 40 fprintf( stderr, "\n" ); 44 45 __lib_debug_print_nolock( "\n" ); 46 __lib_debug_release(); 41 47 abort(); 42 48 } -
src/libcfa/concurrency/kernel.c
r814525c rfc19129 15 15 // 16 16 17 #include "startup.h" 18 17 19 //Start and stop routine for the kernel, declared first to make sure they run first 18 void kernel_startup(void) __attribute__(( constructor(101)));19 void kernel_shutdown(void) __attribute__(( destructor(101)));20 void kernel_startup(void) __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) )); 21 void kernel_shutdown(void) __attribute__(( destructor ( STARTUP_PRIORITY_KERNEL ) )); 20 22 21 23 //Header … … 25 27 #include <stddef.h> 26 28 extern "C" { 29 #include <stdio.h> 27 30 #include <fenv.h> 28 31 #include <sys/resource.h> 32 #include <signal.h> 33 #include <unistd.h> 29 34 } 30 35 … … 146 151 147 152 this->runner = runner; 148 LIB_DEBUG_PRINT F("Kernel : constructing processor context %p\n", runner);153 LIB_DEBUG_PRINT_SAFE("Kernel : constructing processor context %p\n", runner); 149 154 runner{ this }; 150 155 } … … 152 157 void ^?{}(processor * this) { 153 158 if( ! this->is_terminated ) { 154 LIB_DEBUG_PRINT F("Kernel : core %p signaling termination\n", this);159 LIB_DEBUG_PRINT_SAFE("Kernel : core %p signaling termination\n", this); 155 160 this->is_terminated = true; 156 161 wait( &this->terminated ); … … 173 178 void main(processorCtx_t * runner) { 174 179 processor * this = runner->proc; 175 LIB_DEBUG_PRINT F("Kernel : core %p starting\n", this);180 LIB_DEBUG_PRINT_SAFE("Kernel : core %p starting\n", this); 176 181 177 182 thread_desc * readyThread = NULL; … … 195 200 } 196 201 197 LIB_DEBUG_PRINT F("Kernel : core %p unlocking thread\n", this);202 LIB_DEBUG_PRINT_SAFE("Kernel : core %p unlocking thread\n", this); 198 203 signal( &this->terminated ); 199 LIB_DEBUG_PRINT F("Kernel : core %p terminated\n", this);204 LIB_DEBUG_PRINT_SAFE("Kernel : core %p terminated\n", this); 200 205 } 201 206 … … 255 260 processorCtx_t proc_cor_storage = { proc, &info }; 256 261 257 LIB_DEBUG_PRINT F("Coroutine : created stack %p\n", proc_cor_storage.__cor.stack.base);262 LIB_DEBUG_PRINT_SAFE("Coroutine : created stack %p\n", proc_cor_storage.__cor.stack.base); 258 263 259 264 //Set global state … … 262 267 263 268 //We now have a proper context from which to schedule threads 264 LIB_DEBUG_PRINT F("Kernel : core %p created (%p, %p)\n", proc, proc->runner, &ctx);269 LIB_DEBUG_PRINT_SAFE("Kernel : core %p created (%p, %p)\n", proc, proc->runner, &ctx); 265 270 266 271 // SKULLDUGGERY: Since the coroutine doesn't have its own stack, we can't … … 273 278 274 279 // Main routine of the core returned, the core is now fully terminated 275 LIB_DEBUG_PRINT F("Kernel : core %p main ended (%p)\n", proc, proc->runner);280 LIB_DEBUG_PRINT_SAFE("Kernel : core %p main ended (%p)\n", proc, proc->runner); 276 281 277 282 return NULL; … … 279 284 280 285 void start(processor * this) { 281 LIB_DEBUG_PRINT F("Kernel : Starting core %p\n", this);286 LIB_DEBUG_PRINT_SAFE("Kernel : Starting core %p\n", this); 282 287 283 288 // pthread_attr_t attributes; … … 288 293 // pthread_attr_destroy( &attributes ); 289 294 290 LIB_DEBUG_PRINT F("Kernel : core %p started\n", this);295 LIB_DEBUG_PRINT_SAFE("Kernel : core %p started\n", this); 291 296 } 292 297 … … 334 339 // Kernel boot procedures 335 340 void kernel_startup(void) { 336 LIB_DEBUG_PRINT F("Kernel : Starting\n");341 LIB_DEBUG_PRINT_SAFE("Kernel : Starting\n"); 337 342 338 343 // Start by initializing the main thread … … 369 374 370 375 // THE SYSTEM IS NOW COMPLETELY RUNNING 371 LIB_DEBUG_PRINT F("Kernel : Started\n--------------------------------------------------\n\n");376 LIB_DEBUG_PRINT_SAFE("Kernel : Started\n--------------------------------------------------\n\n"); 372 377 } 373 378 374 379 void kernel_shutdown(void) { 375 LIB_DEBUG_PRINT F("\n--------------------------------------------------\nKernel : Shutting down\n");380 LIB_DEBUG_PRINT_SAFE("\n--------------------------------------------------\nKernel : Shutting down\n"); 376 381 377 382 // SKULLDUGGERY: Notify the systemProcessor it needs to terminates. … … 392 397 ^(mainThread){}; 393 398 394 LIB_DEBUG_PRINTF("Kernel : Shutdown complete\n"); 399 LIB_DEBUG_PRINT_SAFE("Kernel : Shutdown complete\n"); 400 } 401 402 static spinlock kernel_abort_lock; 403 static spinlock kernel_debug_lock; 404 static bool kernel_abort_called = false; 405 406 void * kernel_abort (void) __attribute__ ((__nothrow__)) { 407 // abort cannot be recursively entered by the same or different processors because all signal handlers return when 408 // the globalAbort flag is true. 409 lock( &kernel_abort_lock ); 410 411 // first task to abort ? 412 if ( !kernel_abort_called ) { // not first task to abort ? 413 kernel_abort_called = true; 414 unlock( &kernel_abort_lock ); 415 } 416 else { 417 unlock( &kernel_abort_lock ); 418 419 sigset_t mask; 420 sigemptyset( &mask ); 421 sigaddset( &mask, SIGALRM ); // block SIGALRM signals 422 sigaddset( &mask, SIGUSR1 ); // block SIGUSR1 signals 423 sigsuspend( &mask ); // block the processor to prevent further damage during abort 424 _exit( EXIT_FAILURE ); // if processor unblocks before it is killed, terminate it 425 } 426 427 return this_thread(); 428 } 429 430 void kernel_abort_msg( void * kernel_data, char * abort_text, int abort_text_size ) { 431 thread_desc * thrd = kernel_data; 432 433 int len = snprintf( abort_text, abort_text_size, "Error occurred while executing task %.256s (%p)", thrd->cor.name, thrd ); 434 __lib_debug_write( STDERR_FILENO, abort_text, len ); 435 436 if ( thrd != this_coroutine() ) { 437 len = snprintf( abort_text, abort_text_size, " in coroutine %.256s (%p).\n", this_coroutine()->name, this_coroutine() ); 438 __lib_debug_write( STDERR_FILENO, abort_text, len ); 439 } 440 else { 441 __lib_debug_write( STDERR_FILENO, ".\n", 2 ); 442 } 443 } 444 445 extern "C" { 446 void __lib_debug_acquire() { 447 lock(&kernel_debug_lock); 448 } 449 450 void __lib_debug_release() { 451 unlock(&kernel_debug_lock); 452 } 395 453 } 396 454 -
src/libcfa/concurrency/thread.c
r814525c rfc19129 71 71 this_processor->current_coroutine = thrd_c; 72 72 73 LIB_DEBUG_PRINT F("Thread start : %p (t %p, c %p)\n", this, thrd_c, thrd_h);73 LIB_DEBUG_PRINT_SAFE("Thread start : %p (t %p, c %p)\n", this, thrd_c, thrd_h); 74 74 75 75 create_stack(&thrd_c->stack, thrd_c->stack.size); -
src/libcfa/libhdr/libdebug.h
r814525c rfc19129 25 25 #endif 26 26 27 #ifdef __cforall 28 extern "C" { 29 #endif 30 #include <stdarg.h> 31 32 extern void __lib_debug_write( int fd, const char *buffer, int len ); 33 extern void __lib_debug_acquire(); 34 extern void __lib_debug_release(); 35 extern void __lib_debug_print_safe ( const char fmt[], ... ) __attribute__(( format (printf, 1, 2) )); 36 extern void __lib_debug_print_nolock( const char fmt[], ... ) __attribute__(( format (printf, 1, 2) )); 37 extern void __lib_debug_print_vararg( const char fmt[], va_list arg ); 38 extern void __lib_debug_print_buffer( char buffer[], int buffer_size, const char fmt[], ... ) __attribute__(( format (printf, 3, 4) )); 39 #ifdef __cforall 40 } 41 #endif 42 27 43 #ifdef __CFA_DEBUG_PRINT__ 28 #define LIB_DEBUG_PRINTF(...) printf (__VA_ARGS__) 29 #define LIB_DEBUG_FPRINTF(...) fprintf (stderr, __VA_ARGS__) 44 #define LIB_DEBUG_WRITE( fd, buffer, len ) __lib_debug_write( fd, buffer, len ) 45 #define LIB_DEBUG_ACQUIRE() __lib_debug_acquire() 46 #define LIB_DEBUG_RELEASE() __lib_debug_release() 47 #define LIB_DEBUG_PRINT_SAFE(...) __lib_debug_print_safe (__VA_ARGS__) 48 #define LIB_DEBUG_PRINT_NOLOCK(...) __lib_debug_print_nolock (__VA_ARGS__) 49 #define LIB_DEBUG_PRINT_BUFFER(...) __lib_debug_print_buffer (__VA_ARGS__) 30 50 #else 31 #define LIB_DEBUG_PRINTF(...) ((void)0) 32 #define LIB_DEBUG_FPRINTF(...) ((void)0) 51 #define LIB_DEBUG_WRITE(...) ((void)0) 52 #define LIB_DEBUG_ACQUIRE() ((void)0) 53 #define LIB_DEBUG_RELEASE() ((void)0) 54 #define LIB_DEBUG_PRINT_SAFE(...) ((void)0) 55 #define LIB_DEBUG_PRINT_NOLOCK(...) ((void)0) 56 #define LIB_DEBUG_PRINT_BUFFER(...) ((void)0) 33 57 #endif 34 58 -
src/libcfa/stdlib
r814525c rfc19129 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Mar 4 22:03:54 201713 // Update Count : 10 212 // Last Modified On : Sat Apr 1 17:35:24 2017 13 // Update Count : 104 14 14 // 15 15 … … 84 84 forall( otype T | { int ?<?( T, T ); } ) 85 85 T * bsearch( T key, const T * arr, size_t dimension ); 86 forall( otype T | { int ?<?( T, T ); } ) 87 unsigned int bsearch( T key, const T * arr, size_t dimension ); 86 88 87 89 forall( otype T | { int ?<?( T, T ); } ) -
src/libcfa/stdlib.c
r814525c rfc19129 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Mar 4 22:02:22201713 // Update Count : 1 7212 // Last Modified On : Sat Apr 1 18:31:26 2017 13 // Update Count : 181 14 14 // 15 15 … … 228 228 229 229 forall( otype T | { int ?<?( T, T ); } ) 230 unsigned int bsearch( T key, const T * arr, size_t dimension ) { 231 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } 232 T *result = (T *)bsearch( &key, arr, dimension, sizeof(T), comp ); 233 return result ? result - arr : dimension; // pointer subtraction includes sizeof(T) 234 } // bsearch 235 236 forall( otype T | { int ?<?( T, T ); } ) 230 237 void qsort( const T * arr, size_t dimension ) { 231 238 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } -
src/tests/.expect/searchsort.txt
r814525c rfc19129 1 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,2 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,3 1 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 4 2 5 3 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 4 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 5 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 6 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7 8 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 6 10 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 7 11 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, … … 10 14 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11 15 10.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5, 16 10.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5, 12 17 13 18 10 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2, 14 19 1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11, 15 20 10 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2, 21 10 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2, 16 22 -
src/tests/searchsort.c
r814525c rfc19129 10 10 // Created On : Thu Feb 4 18:17:50 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 5 18:06:07 201613 // Update Count : 5612 // Last Modified On : Sun Apr 2 11:29:30 2017 13 // Update Count : 76 14 14 // 15 15 16 16 #include <fstream> 17 17 #include <stdlib> // bsearch, qsort 18 #include <stdlib.h> // C version of bsearch 19 20 int comp( const void * t1, const void * t2 ) { return *(int *)t1 < *(int *)t2 ? -1 : *(int *)t2 < *(int *)t1 ? 1 : 0; } 18 21 19 22 int main( void ) { … … 25 28 sout | iarr[i] | ", "; 26 29 } // for 27 sout | endl; 30 sout | endl | endl; 31 32 // ascending sort/search by changing < to > 28 33 qsort( iarr, size ); 29 34 for ( unsigned int i = 0; i < size; i += 1 ) { … … 31 36 } // for 32 37 sout | endl; 38 for ( unsigned int i = 0; i < size; i += 1 ) { // C version 39 int key = size - i; 40 int *v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp ); 41 sout | *v | ", "; 42 } // for 43 sout | endl; 33 44 for ( unsigned int i = 0; i < size; i += 1 ) { 34 45 int *v = bsearch( size - i, iarr, size ); 35 46 sout | *v | ", "; 47 } // for 48 sout | endl; 49 for ( unsigned int i = 0; i < size; i += 1 ) { 50 unsigned int posn = bsearch( size - i, iarr, size ); 51 sout | iarr[posn] | ", "; 36 52 } // for 37 53 sout | endl | endl; … … 54 70 sout | *v | ", "; 55 71 } // for 72 sout | endl; 73 for ( unsigned int i = 0; i < size; i += 1 ) { 74 unsigned int posn = bsearch( size - i, iarr, size ); 75 sout | iarr[posn] | ", "; 76 } // for 56 77 } 57 78 sout | endl | endl; … … 71 92 double *v = bsearch( size - i + 0.5, darr, size ); 72 93 sout | *v | ", "; 94 } // for 95 sout | endl; 96 for ( unsigned int i = 0; i < size; i += 1 ) { 97 unsigned int posn = bsearch( size - i + 0.5, darr, size ); 98 sout | darr[posn] | ", "; 73 99 } // for 74 100 sout | endl | endl; … … 93 119 sout | *v | ", "; 94 120 } // for 121 sout | endl; 122 for ( unsigned int i = 0; i < size; i += 1 ) { 123 S temp = { size - i, size - i + 1 }; 124 unsigned int posn = bsearch( temp, sarr, size ); 125 sout | sarr[posn] | ", "; 126 } // for 95 127 sout | endl | endl; 96 128 } // main
Note: See TracChangeset
for help on using the changeset viewer.