Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

Аналог GetTickCount во FreePascal   Найти похожие ветки 

 
pasha_golub ©   (2003-09-26 16:54) [0]

Сабж или как узнать время работы процесса используя средства FreePascal в ОС Линух.
ЗЫ Задал сюда, потому как они там на форум раз в год наверное заходят


 
clickmaker ©   (2003-09-26 18:32) [1]

Ну а сюда наверное раз в 2 года :)


 
pasha_golub ©   (2003-09-26 18:37) [2]

Не, просто Тяпница :-)


 
BOA_KAA ©   (2003-09-26 18:49) [3]

На Цы так мона

fd = open("/proc/uptime", O_RDONLY);
read(fd,...);
...


 
pasha_golub ©   (2003-09-27 11:30) [4]

2BOA_KAA
Напиши дальше плз, а я переведу


 
Anatoly Podgoretsky ©   (2003-09-27 11:32) [5]

Значит у тебя нет Линукса?


 
pasha_golub ©   (2003-09-27 11:33) [6]

2Anatoly Podgoretsky
Есть, у меня нет хороших знаний С :-(


 
PVOzerski ©   (2003-09-27 11:55) [7]

В FPC есть unit DOS, а в нем Procedure GetTime(var hour, minute, second, sec100: word); Не подойдет?


 
Anatoly Podgoretsky ©   (2003-09-27 11:58) [8]

pasha_golub © (27.09.03 11:33) [6]
Отлично, тогда взгляни текстовым редактором указанный файл, при этом несколько раз, время указано в секундах, значит можешь расчитывать на 10 миллисекунд точность.

PVOzerski © (27.09.03 11:55) [7]
По всей видимости нет, ему под Линукс.


 
pasha_golub ©   (2003-09-27 12:04) [9]

2PVOzerski

На данный момент я использую GetTime (есть аналог под Линух), но система то мультизадачная, то есть в найденный мною период времени на пике загрузки может отработать еще несколько десятков процессов

2Anatoly Podgoretsky
Я это понял, спасибо. Но это то же самое что и GetTime. А мне нужно узнать сколько процессорного времени выделено именно для этого процесса


 
PVOzerski ©   (2003-09-27 12:05) [10]

2Anatoly Podgoretsky © (27.09.03 11:58) [8]
Я это понял. Но (ради TP compatibility) этот модуль есть и для *никсовых платформ. Специально проверил - в implementation этого модуля значится
Uses
Strings,Unix;
а реализация, кстати, такая:
Procedure GetTime(Var Hour, Minute, Second, Sec100: Word);
Begin
Unix.GetTime(Hour,Minute,Second,Sec100);
end;

:^)
Правда, у более старых версий FPC модуль Unix может называться Linux.


 
pasha_golub ©   (2003-09-27 12:12) [11]

2PVOzerski
Я конечно не знаю, но у меня версия 1.0.10, я ее только два дня назад выкачал. В документах модуля Unix не нашел


 
Anatoly Podgoretsky ©   (2003-09-27 12:12) [12]

Ты просил все таки GetTickCount, а этот файл по сути то


 
pasha_golub ©   (2003-09-27 12:16) [13]

2Anatoly Podgoretsky
Да согласен, неудачная формулировка, но все таки...


 
PVOzerski ©   (2003-09-27 12:17) [14]

2pasha_golub © (27.09.03 12:12) [11]
А у меня нестабильная ("разрабатываемая") 1.1, там разделили "общеюниксные" и "линуксные" функции по разным модулям. Потому о модуле Linux и предупреждал. 1.0.10 - это последний релиз, но не последняя существующая сейчас версия, просто ссылки на 1.1 - в другом разделе сайта FreePascal.


 
pasha_golub ©   (2003-09-27 12:24) [15]

2PVOzerski
Я так и подумал. Так ты у нас экстремал, на нестабильных версиях работаешь :-)


 
PVOzerski ©   (2003-09-27 12:33) [16]

>Я так и подумал. Так ты у нас экстремал, на нестабильных версиях работаешь :-)
Я был когда-то еще бОльшим экстремалом - компилятор и RTL патчил. Сейчас времени только на багрепорты осталось :^(


 
pasha_golub ©   (2003-09-27 12:40) [17]

2PVOzerski
Уважаю. Так как мне подсчитать кол-во тиков проца на определенный процесс?


 
pasha_golub ©   (2003-09-27 12:46) [18]

Кстати, только что получил интересные результаты. Два раза подряд запустил процесс с большим циклом. Так в первом случае, измеряя все тем же GetTime, получил 0.3 секунды, а во втором 0.1 секунды. Сами посудите такой разброс значений не есть хорошо!

Так что вопрос по прежнему актуален.


 
PVOzerski ©   (2003-09-27 12:55) [19]

Так ведь Linux - не QNX, быть ОС реального времени (по крайней мере, обычные версии) не претендует. А я немного порылся. Вот описание функции gettimeofday - http://bsd.opennet.ru/man.shtml?topic=gettimeofday&category=2&russian=0
Правда, это тоже не совсем то, возможно.


 
pasha_golub ©   (2003-09-27 12:58) [20]

2PVOzerski
Спасибо, посмотрел. В принципе те же яйца - вид сбоку. Вопрос еще как человеку близкому к проекту. Не могу найти функции chroot, chdir, хотя здравый смысл подсказывает, что без низ никак. Где их можно нарыть? Спасибо.


 
PVOzerski ©   (2003-09-27 13:03) [21]

Вот, еще нарыл: :^)

/* ---- uptime of the machine ---- */
void uptime(void)
{
FILE *cpuinfofile, *versionfile, *uptimefile;
int uptime;
char line[MAXBUF];
uptimefile = fopen("/proc/uptime","r");

fgets(line,MAXBUF,uptimefile);
fclose(uptimefile);
if (sscanf(line,"%d.",&uptime))
{
int left,days,hours,minutes,secs;

days = uptime / DAYSEC;
left = uptime - (days * DAYSEC);

hours = left / HOURSEC;
left = left - (hours * HOURSEC);
minutes = left / MINSEC;
secs = left - minutes * MINSEC;

printf("Uptime: %2d:%2d:%2d:%2d\n",days,hours,minutes,secs);
}
}


 
PVOzerski ©   (2003-09-27 13:09) [22]

Касательно моей близости к проекту: относительно Linux она сводится к тому, что у меня сейчас скачаны относительно свежие исходники, в том числе RTL, в которых могу копаться - чем сейчас и занимаюсь. RTL-то я патчил только виндовую.


 
PVOzerski ©   (2003-09-27 13:18) [23]

>проекту. Не могу найти функции chroot, chdir, хотя здравый смысл подсказывает, что без низ
chdir - стандартная ф-ция RTL. Вот ее реализация для Linux:

Function Sys_Chdir(Filename:pchar):longint;
var
regs : SysCallregs;

begin
regs.reg2:=longint(filename);
Sys_ChDir:=SysCall(SysCall_nr_chdir,regs);
end;

Procedure ChDir(Const s: String);[IOCheck];
Var
Buffer: Array[0..255] of Char;
Begin
If (s="") or (InOutRes <> 0) then
exit;
Move(s[1], Buffer, Length(s));
Buffer[Length(s)] := #0;
sys_chdir(@buffer);
Errno2Inoutres;
{ file not exists is path not found under tp7 }
if InOutRes=2 then
InOutRes:=3;
End;

при этом syscall_nr_chdir = 12;


 
pasha_golub ©   (2003-09-27 14:06) [24]

Ага, понятно, спасибо. А с chroot там чего? Если я сильно наглею, можно мне сбросить свежачок, а я сам покапаюсь :-)


 
PVOzerski ©   (2003-09-27 14:24) [25]

У меня "свежачок" конца августа. Если мегабайты не пугают, качай лучше с сайта. Если primary перегружен, например, с норвежского зеркала
ftp://ftp.no.freepascal.org/pub/fpc/snapshot/v11/source/fpc.zip



Страницы: 1 вся ветка

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.025 c
1-51303
den74
2003-10-06 13:12
2003.10.16
Перерисовка формы


1-51175
DeScriptor
2003-10-02 23:34
2003.10.16
Как бороться с null-terminated строками


9-51049
3d[Power]
2003-04-10 19:19
2003.10.16
Торможение DelphiX приложений под WindowsXP


1-51298
MegaVolt
2003-10-01 13:34
2003.10.16
Ошибка в FAQ и HELP


1-51344
Shuhkoman
2003-10-05 19:59
2003.10.16
MainMenu