The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Определение интервала с точностью до микросекунды (time sleep )


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: time, sleep,  (найти похожие документы)
Date: Fri, 8 Feb 2002 12:30:58 +0000 (UTC) From: "Rinat H. Sadretdinow" <[email protected]> Newsgroups: fido7.ru.unix.prog Subject: Определение интервала с точностью до микросекунды > Я очень сомневаюсь, что RTC позволяет _считывать_ время с > точностью до микросекунды. Пардон, обздался. Но оригинальному автору вроде бы как надо было от 0.05 миллисекунд до 100 миллисекунд. RTC позволяет делать периодические прерывания с частотой до 16384Hz для root. А 16384Hz это уже не милли, это вроде как микро уже. === cut === [rhs@rhs foobar]$ cat > foobar.c #include <stdio.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/rtc.h> int main ( void ) { volatile int i; int fd, rc; unsigned long tmp, data; if (-1 == (fd = open ("/dev/rtc", O_RDONLY))) perror ("/dev/rtc"); else { printf ("let's party goes!\n"); for (rc = 0, tmp = 2; tmp <= 65536 && !rc; tmp *= 2) { printf ("trying %ldHz...\n", tmp); if (-1 == (rc = ioctl (fd, RTC_IRQP_SET, tmp))) { printf ("the show is over!\n"); break; } if (-1 == (rc = ioctl (fd, RTC_PIE_ON, 0))) { perror ("ioctl"); break; } for (i = 0; !i;) { if (-1 == (rc = read (fd, &data, sizeof (data)))) { perror ("read"); break; } ++i; } if (-1 == (rc = ioctl (fd, RTC_PIE_OFF, 0))) { perror ("ioctl"); break; } } close(fd); } } ^D [rhs@rhs foobar]$ gcc foobar.c -o foobar [rhs@rhs foobar]$ ./foobar let's party goes! trying 2Hz... trying 4Hz... trying 8Hz... trying 16Hz... trying 32Hz... trying 64Hz... trying 128Hz... the show is over! [rhs@rhs foobar]$ sudo ./foobar let's party goes! trying 2Hz... trying 4Hz... trying 8Hz... trying 16Hz... trying 32Hz... trying 64Hz... trying 128Hz... trying 256Hz... trying 512Hz... trying 1024Hz... trying 2048Hz... trying 4096Hz... trying 8192Hz... trying 16384Hz... the show is over! [rhs@rhs foobar]$ === cut === > В linux/Documentation/rtc.txt этого нет. Нет. > Знать до микросекунды и точнее дают таймеры i8254, TSC и PIIX (из > стандартно доступных). Да. Я тут глянул на имплементацию gettimeofday, в конце концов она пользуется либо TSC (если при компиляции ядра было указано, что CPU его поддерживает), либо нулевой канал таймера. Видать то, что функции работы с CMOS расположены в том же исходнике, сбило меня с толку и я с какого-то перепугу решил, что gettimeofday тоже имеет к этому всему отношение. -- Пока!

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру