Sponsored Content
Operating Systems Linux Ubuntu Measuring the correctness of ndelay() function. Post 302969902 by BHASKAR JUPUDI on Tuesday 29th of March 2016 06:31:47 PM
Old 03-29-2016
Measuring the correctness of ndelay() function.

I wrote this kernel module to test the correctness of ndelay() function.

Kernel mdoule:

Code:
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include <linux/delay.h>
static int __init initialize(void)
{
	ktime_t start, end;
	s64 actual_time;
	int i;
	for(i=0;i<1000;i++)
	{
		start = ktime_get();
			ndelay(100);			
		end = ktime_get();
		actual_time = ktime_to_ns(ktime_sub(end, start));
		printk("%lld\n",(long long)actual_time);	
	}
	return 0;
}

static void __exit final(void)
{
     printk(KERN_INFO "Unload module\n");
}

module_init(initialize);
module_exit(final);

MODULE_AUTHOR("Bhaskar");
MODULE_DESCRIPTION("looping for 1000 times");
MODULE_LICENSE("GPL");



The output of dmesg:
Code:
[ 1028.135657] 379
[ 1028.135659] 383
[ 1028.135661] 370
[ 1028.135663] 372
[ 1028.135665] 332
[ 1028.135667] 348
[ 1028.135668] 318
[ 1028.135670] 365
[ 1028.135672] 350
[ 1028.135674] 327
[ 1028.135676] 359
[ 1028.135677] 358
[ 1028.135679] 320
[ 1028.135681] 393
[ 1028.135683] 359
[ 1028.135685] 357
[ 1028.135687] 361
[ 1028.135688] 325
[ 1028.135690] 360
[ 1028.135692] 302
[ 1028.135694] 353
[ 1028.135696] 375
[ 1028.135698] 342
[ 1028.135700] 377
[ 1028.135702] 382
[ 1028.135704] 390
[ 1028.135706] 322
[ 1028.135707] 361
[ 1028.135709] 392
[ 1028.135711] 387

Here my question is I'm trying to measure 100ns delay, but I'm getting output in 300's. One of the possible things that can happen is storing the value of ktime_get() into end module is taking some time. So can anyone please suggest me alternative or where I'm going wrong.
 

4 More Discussions You Might Find Interesting

1. Programming

Measuring System Call Time

Can anyone please help me in measuring the system call timings! How do I do it if I have to measure the timing of an operation, say getpid system call. What different functions can I use for that and what would be the difference using each of them? Thanx! (3 Replies)
Discussion started by: chacha
3 Replies

2. IP Networking

measuring traffic with iptables

i have a wireless network that is connected to internet over nat.there is ap that is connected to another ap in bridge mode, on ap is used for clients, and the other is connected to the machine that is doing masquerading. so i want to measure traffic of my clients and i thought about doing it with... (0 Replies)
Discussion started by: mdfk
0 Replies

3. Programming

Measuring memory used by a program?

I have a Java program. I want to measure the total memory used by the program, especially the peak memory. Is there a way to do it? I have tried utilities like time (which returns 0) and top (which is not very useful) as the program does not run for long. Can anyone suggest a way to do this?... (5 Replies)
Discussion started by: spathical
5 Replies

4. Red Hat

lightweight function for measuring time ( better than clock_getime )

HI I have a Red Hat Enterprise with Real Time kernel. Are you aware if there are C functions for this kernel or some code/library for this OS for measuring time more lightweight than clock_gettime and gettimeofday? THe hardware I have is NUMA. Reading forums I found gethrtime but it is... (1 Reply)
Discussion started by: manustone
1 Replies
MODULE(9)						   BSD Kernel Developer's Manual						 MODULE(9)

NAME
module -- structure describing a kernel module DESCRIPTION
Each module in the kernel is described by a module_t structure. The structure contains the name of the device, a unique ID number, a pointer to an event handler function and to an argument, which is given to the event handler, as well as some kernel internal data. The DECLARE_MODULE(9) macro registers the module with the system. When the module is loaded, the event handler function is called with the what argument set to MOD_LOAD. On unload it is first called with what set to MOD_QUIESCE. If the unload was not forced, a non-zero return will prevent the unload from hap- pening. If the unload continues what is set to MOD_UNLOAD. If the module returns non-zero to this, the unload will not happen. The difference between MOD_QUIESCE and MOD_UNLOAD is that the module should fail MOD_QUIESCE if it is currently in use, whereas MOD_UNLOAD should only fail if it is impossible to unload the module, for instance because there are memory references to the module which cannot be revoked. When the system is shutting down, what contains the value of MOD_SHUTDOWN. The module should return EOPNOTSUPP for unsupported and unrecognized values of what. EXAMPLES
#include <sys/param.h> #include <sys/kernel.h> #include <sys/module.h> static int foo_handler(module_t mod, int /*modeventtype_t*/ what, void *arg); static moduledata_t mod_data= { "foo", foo_handler, NULL }; MODULE_VERSION(foo, 1); MODULE_DEPEND(foo, bar, 1, 3, 4); DECLARE_MODULE(foo, mod_data, SI_SUB_EXEC, SI_ORDER_ANY); SEE ALSO
DECLARE_MODULE(9), DEV_MODULE(9), DRIVER_MODULE(9), MODULE_DEPEND(9), MODULE_VERSION(9), SYSCALL_MODULE(9) /usr/share/examples/kld AUTHORS
This manual page was written by Alexander Langer <alex@FreeBSD.org>. BSD
July 19, 2007 BSD
All times are GMT -4. The time now is 04:13 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy