541 } |
541 } |
542 |
542 |
543 // Helper function to trace _beginthreadex attributes, |
543 // Helper function to trace _beginthreadex attributes, |
544 // similar to os::Posix::describe_pthread_attr() |
544 // similar to os::Posix::describe_pthread_attr() |
545 static char* describe_beginthreadex_attributes(char* buf, size_t buflen, |
545 static char* describe_beginthreadex_attributes(char* buf, size_t buflen, |
546 size_t stacksize, unsigned initflag) |
546 size_t stacksize, unsigned initflag) { |
547 { |
|
548 stringStream ss(buf, buflen); |
547 stringStream ss(buf, buflen); |
549 if (stacksize == 0) { |
548 if (stacksize == 0) { |
550 ss.print("stacksize: default, "); |
549 ss.print("stacksize: default, "); |
551 } else { |
550 } else { |
552 ss.print("stacksize: " SIZE_FORMAT "k, ", stacksize / 1024); |
551 ss.print("stacksize: " SIZE_FORMAT "k, ", stacksize / 1024); |
553 } |
552 } |
554 ss.print("flags: "); |
553 ss.print("flags: "); |
555 #define PRINT_FLAG(f) if (initflag & f) ss.print( XSTR(f) " "); |
554 #define PRINT_FLAG(f) if (initflag & f) ss.print( #f " "); |
556 #define ALL(X) \ |
555 #define ALL(X) \ |
557 X(CREATE_SUSPENDED) \ |
556 X(CREATE_SUSPENDED) \ |
558 X(STACK_SIZE_PARAM_IS_A_RESERVATION) |
557 X(STACK_SIZE_PARAM_IS_A_RESERVATION) |
559 ALL(PRINT_FLAG) |
558 ALL(PRINT_FLAG) |
560 #undef ALL |
559 #undef ALL |