Относительно получения времени в миллисекундах - PullRequest
2 голосов
/ 03 ноября 2010

Я работаю над регистратором на языке C на платформе QNX, используя Momnetics для печати времени в следующем формате

2010-11-02 14: 45: 15.000

Я смог получить дату, часы, минуты и секунды, используя

 time(&timeSpec);
 struct tm gmt;
 int iSysTimeSec = timeSpec;
 gmtime_r((time_t *)&iSysTimeSec, &gmt);
 sprintf(&MsgStamp[0], SYS_MSG_STAMP_PRINTF_FORMAT, gmt.tm_year+1900, gmt.tm_mon + 1, gmt.tm_mday, gmt.tm_hour, gmt.tm_min, gmt.tm_sec, iSysTimeMs );

Вопрос в том, как получить гранулярность в миллисекундах с помощью QNX Momentics.

Я пытался получить гранулярность за миллисекунды, используя специфичный для QNX int iSysTimeMs = ((ClockCycles () * 1000) / SYSPAGE_ENTRY (qtime) -> cyc_per_sec)% 1000;

но я хочу сделать POSIX таким образом, чтобы он был переносимым. Как мы это делаем?

Спасибо! Venkata

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

В QNX6 Вы можете использовать clock_gettime, чтобы получить максимальную гранулярность, разрешенную системой.

struct timespec start;
clock_gettime( CLOCK_REALTIME, &start);
0 голосов
/ 03 ноября 2010

Системный вызов gettimeofday() вернет структуру, содержащую текущее время Unix в секундах и количество микросекунд, принадлежащих текущей секунде.

Чтобы получить общее количество микросекунд:

struct timeval tv;
gettimeofday(&tv, NULL);
u_int64_t now = tv.tv_sec * 1000000ULL + tv.tv_usec;
...