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
DEV_MODULE(9)						   BSD Kernel Developer's Manual					     DEV_MODULE(9)

NAME
DEV_MODULE -- device driver module declaration macro SYNOPSIS
#include <sys/param.h> #include <sys/kernel.h> #include <sys/module.h> #include <sys/conf.h> DEV_MODULE(name, modeventhand_t evh, void *arg); DESCRIPTION
The DEV_MODULE() macro declares a device driver kernel module. It fills in a moduledata_t structure and then calls DECLARE_MODULE() with the correct args, where name is the name of the module and evh (with its argument arg) is the event handler for the module (refer to DECLARE_MODULE(9) for more information). The event handler is supposed to create the device with make_dev() on load and to destroy it when it is unloaded using destroy_dev(). EXAMPLES
#include <sys/module.h> #include <sys/conf.h> static struct cdevsw foo_devsw = { ... }; static dev_t sdev; static int foo_load(module_t mod, int cmd, void *arg) { int err = 0; switch (cmd) { case MOD_LOAD: sdev = make_dev(&foo_devsw, 0, UID_ROOT, GID_WHEEL, 0600, "foo"); break; /* Success*/ case MOD_UNLOAD: case MOD_SHUTDOWN: destroy_dev(sdev); break; /* Success*/ default: err = EINVAL; break; } return(err); } DEV_MODULE(foo, foo_load, NULL); SEE ALSO
DECLARE_MODULE(9), destroy_dev(9), make_dev(9), module(9) AUTHORS
This manual page was written by Alexander Langer <alex@FreeBSD.org>. BSD
March 11, 2001 BSD
All times are GMT -4. The time now is 12:37 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy