From 5514672d426fcc83808151e864cce31425a3774c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 4 May 2005 01:03:44 +0000 Subject: [PATCH] Added a syscall timing utility, similar to the one in NewOS. Can also be run under R5 when TARGET_PLATFORM=r5 for comparison. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12567 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/kernel/core/Jamfile | 10 ++++++ src/tests/kernel/core/syscall_time.cpp | 45 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 src/tests/kernel/core/syscall_time.cpp diff --git a/src/tests/kernel/core/Jamfile b/src/tests/kernel/core/Jamfile index ed0cb51173..c46189c2c9 100644 --- a/src/tests/kernel/core/Jamfile +++ b/src/tests/kernel/core/Jamfile @@ -2,10 +2,20 @@ SubDir OBOS_TOP src tests kernel core ; UsePrivateHeaders kernel ; +if $(TARGET_PLATFORM) = r5 { + LIBROOT = root ; +} else { + LIBROOT = libroot.so ; +} + SimpleTest transfer_area_test : transfer_area_test.cpp : libroot.so ; +SimpleTest syscall_time : + syscall_time.cpp + : $(LIBROOT) ; + SubInclude OBOS_TOP src tests kernel core cache ; #SubInclude OBOS_TOP src tests kernel core disk_device_manager ; SubInclude OBOS_TOP src tests kernel core util ; diff --git a/src/tests/kernel/core/syscall_time.cpp b/src/tests/kernel/core/syscall_time.cpp new file mode 100644 index 0000000000..2d3541dea4 --- /dev/null +++ b/src/tests/kernel/core/syscall_time.cpp @@ -0,0 +1,45 @@ +/* + * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + + +#include +#include + +#ifdef __HAIKU__ +# include +#else +extern "C" void _kclose_(int fd); +#endif + + +int +main(int argc, char **argv) +{ + const int32 loops = 100000; + bigtime_t startTime = system_time(); + + for (int32 i = 0; i < loops; i++) { +#ifdef __HAIKU__ +// _kern_null(); + _kern_close(-1); +#else + _kclose_(-1); +#endif + } + + bigtime_t runTime = system_time() - startTime; + + // empty loop time + + startTime = system_time(); + + for (int32 i = 0; i < loops; i++) + ; + + runTime -= system_time() - startTime; + + printf("%f usecs/syscall\n", 1.0 * runTime / loops); + return 0; +}