rtapi_get_time - obtiene la hora actual
long long rtapi_get_time() |
||
long long rtapi_get_clocks() |
rtapi_get_time devuelve la hora actual en nanosegundos. Dependiendo del RTOS, este puede ser el tiempo desde el arranque, o el tiempo desde que se estableció el perÃodo de reloj, u otro momento. Su valor absoluto no significa nada, pero aumenta monotónicamente y se puede usar para programar eventos futuros o para cronometrar la duración de alguna actividad. Devuelve un valor de 64 bits. La resolución de la devolución puede ser tan buena como un nano-segundo, o tan pobre como varios microsegundos. Se puede llamar desde el código de inicio/limpieza y desde dentro de las tareas en tiempo real.
rtapi_get_clocks devuelve la hora actual en clocks de CPU. Esto es rápido, ya que solo lee el TSC en la CPU en lugar de llamar al kernel o a una función RTOS. Por supuesto, los tiempos medidos en clocks de CPU no son tan convenientes, pero para mediciones relativas esto funciona bien. Su valor absoluto no significa nada, pero aumenta monotónicamente y se puede utilizar para programar eventos futuros o para programar la duración de alguna actividad (en máquinas SMP, dos TSC pueden no estar sincronizados, por lo que si una tarea lee el TSC, se cambia a la otra CPU, y lee de nuevo, el valor puede disminuir. RTAPI intenta forzar todas las tareas de RT para que se ejecuten en una sola CPU). Devuelve un valor de 64 bits. La resolución del valor devuelto es un clock de CPU, que suele ser desde unos pocos nanosegundos a una fracción de nanosegundo.
Tenga en cuenta que las matemáticas long long pueden ser poco compatibles en algunas plataformas, especialmente en el espacio del kernel. También tenga en cuenta que rtapi_print() NO imprime Long longs. La mayorÃa de las mediciones de tiempo son relativas, y deberÃan hacerse asÃ:
deltat = (long int)(end_time - start_time);
donde end_time y start_time son valores long devueltos por rtapi_get_time, y deltat es un int long ordinario (32 bits). Esto funcionará para tiempos de hasta un segundo más o menos, dependiendo de la frecuencia del reloj de la CPU. Sin embargo, se usa mejor para las mediciones en escala de milisegundos y microsegundos
Devuelve la hora actual en nanosegundos o clocks de CPU.
Ciertas versiones del kernel de Linux proporcionan una variable global cpu_khz. El cálculo
deltat = (end_clocks - start_clocks) / cpu_khz:
da la duración medida en milisegundos. Con el cálculo
deltat = (end_clocks - start_clocks) * 1000000 / cpu_khz:
se obtiene la duración medida en nanosegundos para deltas inferiores a aproximadamente 9 billones de clocks (por ejemplo, 3000 segundos a 3GHz).
Se puede llamar desde el código de inicio/limpieza y desde las tareas en tiempo real. No disponible en componentes de espacio de usuario.