Linux jiffies uso variable global

  
                

unidades de tiempo variable global es el sistema Linux, dependiente del tiempo, entonces las unidades de tiempo variables cuál es el papel específico que sean? Xiao Bian dio se introduce el uso de la variable global Linux jiffies, amigo podría estar interesado en aprender bajo la barra.

disponibilidad del sistema en cuestión de segundos, la igualdad de jiffies /Hz.

Tenga en cuenta, tipo de unidades de tiempo entero largo sin signo (unsigned long), cualquier otro tipo de tienda que no es correcto.

es el tiempo en unidades de segundos será convertida a jiffies:

segundos * Hz

en el tiempo jiffies en segundo:

jiffies /Hz

en contraste, en la multi-núcleo más segundos para convertir jiffies utilizados.

jiffies representación interna

jiffies definen en el archivo:

/*

* El valor de 64 bits no es atómico - no debes leer

* sin probar el número de secuencia en xtime_lock.

* get_jiffies_64 () lo hará por usted como apropiado.

* /

U64 extern jiffies_64 __jiffy_data;

extern largos jiffies __jiffy_data volátiles sin firmar;

ld (1) para la conexión de la imagen principal de la escritura del núcleo (en arch /i386 /kernel en sistemas x86 /vmlinux.lds.S en ), luego se cubre con una variable jiffies jiffies_64 valor inicial variable. Por lo tanto tomar las jiffies variables toda jiffies_64 inferior 32 bits.

jiffies código de acceso de leer sólo los 32 bits inferiores jiffies_64 por get_jiffies_64 () función puede leer todo el valor de 64 bits. En la arquitectura de 64 bits, jiffies jiffies_64 y se refieren a la misma variable.

#if (BITS_PER_LONG "64)

get_jiffies_64 U64 (void);

#else

estática get_jiffies_64 inline U64 (void)

{

retorno (U64) jiffies;

}

#endif

en

#if (BITS_PER_LONG "64 )

get_jiffies_64 U64 (void)

{

sin firmar ss larga;

ret U64;

do {

ss = read_seqbegin (&xtime_lock);

ret = jiffies_64;

} while (read_seqretry (&xtime_lock, ss));

ret retorno;

}

jiffies WRAPAROUND envoltura alrededor
valor

unidades de tiempo cuando se supera el rango del máximo de almacenamiento se desbordará. Para entero de 32 bits sin signo, el valor máximo de (2 ^ 32) -1, es decir, 429.496.795. Si el recuento de reloj alcanza el valor máximo seguirá aumentando, su valor se ajustará alrededor de 0.

El núcleo proporciona cuatro macros para ayudar a comparar la cuenta del compás, que puede manejar correctamente la cuenta del compás problemas envoltura de:

/*

* Estos inlines tratan de envolver temporizador . correctamente estás

* recomienda encarecidamente a usarlos

* 1. Porque la gente se olvida de lo contrario

* 2. Porque si los cambios de envoltura de temporizador en el futuro que ganaron y lsquo; t que

* alterar su código del controlador.

*

* time_after (a, b) devuelve verdadero si el tiempo es un tiempo después b.

*

* hacer esto con y " "0 " y "" = 0 ". sólo a probar el signo del resultado un

* buen compilador generaría un mejor código (y una muy buen compilador

* wouldn y rsquo; t cuidado). Gcc es actualmente ni

* /

time_after #define (a, b) /

(typecheck (largo sin signo, a) &. &Amp; /

typecheck (largo sin signo, b) &&/

((largo) (b) - (largo) (a) "0))

#define time_before (una , b) time_after (b, a)

time_after_eq #define (a, b) /

(typecheck (, un largo sin signo) &&/

typecheck (unsigned long, b) &&/

((largo) (a) - (largo) (b) "= 0))

time_before_eq #define (a, b) time_after_eq (b, a)

/* Igual que el anterior, pero lo hace con la plataforma de tipos de 64 bits independientes.

* Estos se deben utilizar cuando se utiliza jiffies_64 (es decir, valor de retorno de

* get_jiffies_64 () * /

#define time_after64 (a, b) /

(typecheck (__ U64, a) &&/

typecheck (__ U64 , b) &Amp; &/

((__s64) (b) - (__s64) (a) "0))

#define time_before64 (a, b) time_after64 (b, a)

#define time_after_eq64 (a, b) /

(typecheck (__ U64, a) &&/

typecheck (__ U64, b) & y; /

((__s64) (a) - (__s64) (b) "= 0))

#define time_before_eq64 (a, b) time_after_eq64 (b, a)

espacio de usuario y HZ
Anterior 12 Siguiente total de 2

Copyright © Conocimiento de Windows All Rights Reserved