Re: select call takes more time than the given timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 17, 2013 at 2:59 PM, devendra.aaru <devendra.aaru@xxxxxxxxx> wrote:
Hello,


The Select system call has given the timeout of 100 msec and but its
expired after 115 msecs.

I have no fds to read, and just wanted to use select as the timer to
timeout and so some stuff after the timeout happen.

code:

#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/select.h>

main()
{
         int ret;

         struct timeout tv;

         tv.tv_sec = 0;
         tv.tv_usec = 100000;

        while (1) {
         ret = select(5, 0, 0, 0, &tv);
         if (ret == 0) {
            struct timeval t;
             gettimeofday(&t, 0);

            printf("sec = %d-usec = %d\n", t.tv_sec, t.tv_usec);
         }
        }
}


my kernel is older, 2.6.23.


thanks,

As the manual page for select specifies (see below) you should expect some delays due to kernel scheduling. If you need more precision you might wanna try something else.
 
The timeout argument specifies the minimum interval that select() should block waiting for a file descriptor to become ready. (This interval will be rounded up to the system clock granularity, and kernel scheduling delays mean that the blocking interval may overrun by a small amount.) If both fields of the timeval structure are zero, then select() returns immediately. (This is useful for polling.) If timeout is NULL (no timeout), select() can block indefinitely.

Regards,
Victor.
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux