diff --git a/src/tests/system/kernel/Jamfile b/src/tests/system/kernel/Jamfile index b841d855ed..fd85348d33 100644 --- a/src/tests/system/kernel/Jamfile +++ b/src/tests/system/kernel/Jamfile @@ -18,6 +18,8 @@ SimpleTest lock_node_test : SimpleTest page_fault_cache_merge_test : page_fault_cache_merge_test.cpp ; +SimpleTest path_resolution_test : path_resolution_test.cpp ; + SimpleTest port_close_test_1 : port_close_test_1.cpp ; SimpleTest port_close_test_2 : port_close_test_2.cpp ; diff --git a/src/tests/system/kernel/path_resolution_test.cpp b/src/tests/system/kernel/path_resolution_test.cpp new file mode 100644 index 0000000000..78d7776bc1 --- /dev/null +++ b/src/tests/system/kernel/path_resolution_test.cpp @@ -0,0 +1,48 @@ +/* + * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. + * Distributed under the terms of the MIT License. + */ + +#include +#include + +#include + + +static void +time_lstat(const char* path) +{ + printf("%-60s ...", path); + fflush(stdout); + bigtime_t startTime = system_time(); + + static const int32 iterations = 10000; + for (int32 i = 0; i < iterations; i++) { + struct stat st; + lstat(path, &st); + } + + bigtime_t totalTime = system_time() - startTime; + printf(" %5.3f us/call\n", (double)totalTime / iterations); +} + + +int +main() +{ + const char* const paths[] = { + "/", + "/boot", + "/boot/develop", + "/boot/develop/headers", + "/boot/develop/headers/posix", + "/boot/develop/headers/posix/sys", + "/boot/develop/headers/posix/sys/stat.h", + NULL + }; + + for (int32 i = 0; paths[i] != NULL; i++) + time_lstat(paths[i]); + + return 0; +}