2011-12-28 17 views
8

¿Cómo puedo escribir la marca de tiempo legible en el núcleo de Linux? Creo que do_gettimeofday devuelve epoch pero no quiero intentar convertirlo en tiempo legible. Solo quiero un formato como Hour:Min:Sec:Msec. Graciasmarca de tiempo legible por el ser humano en el núcleo de Linux

+1

do_gettimeofday es su mejor apuesta. Tendrás que formatearlo tú mismo. ¿Cuál es el caso de uso exacto de todos modos? –

Respuesta

7

Los núcleos posteriores tienen una función time_to_tm para dividir el tiempo de época en un formato legible para las personas.

He aquí un ejemplo:

struct timeval t; 
struct tm broken; 
do_gettimeofday(&t); 
time_to_tm(t.tv_sec, 0, &broken); 
printk("%d:%d:%d:%ld\n", broken.tm_hour, broken.tm_min, 
         broken.tm_sec, t.tv_usec); 

Una vez más, esto sólo está disponible en los núcleos más tarde. El segundo parámetro time_to_tm es un desplazamiento al tiempo de época. En mi tiempo local es 0, no sé cuál deberías usar.

1

Aunque no creo que haya una función para esto, puedes hacerlo bastante fácilmente si no necesitas el día.

struct timeval now; 
unsinged int temp, second, minute, hour; 
do_gettimeofday(&now); 
temp = now.tv_sec; 
second = temp%60; 
temp /= 60; 
minute = temp%60; 
temp /= 60; 
hour = temp%24; 
printf("%02d:%02d:%02d:%06d\n", hour, minute, second, now.tv_usec); 

Tenga en cuenta que se obtiene la hora GMT, no el tiempo local.

Cuestiones relacionadas