[gugs] algun kernel hacker por ah
Isaac Clerencia
isaac en sindominio.net
Sab Nov 24 11:05:26 CET 2001
en clase estamos estudiando a fondo el nucleo Linux, después de diseccionar a fondo la macro switch_to (que es la que realiza el cambio
de contexto dentro del scheduler) me queda una duda ... ¿por qué esta metida entre:
do{
...
}while(0)
En teoría no sirve para nada, ¿¿sólo es por dar la nota o hay alguna oscura razón para hacerlo?? alguien tiene algo que decir ...
(este switch_to es del nucleo 2.0.30, aunque los actuales siguen teniendo el do{...}while(0))
#define switch_to(prev,next) do { \
__asm__("movl %2,"SYMBOL_NAME_STR(current_set)"\n\t" \
"ljmp %0\n\t" \
"cmpl %1,"SYMBOL_NAME_STR(last_task_used_math)"\n\t" \
"jne 1f\n\t" \
"clts\n" \
"1:" \
: /* no outputs */ \
:"m" (*(((char *)&next->tss.tr)-4)), \
"r" (prev), "r" (next)); \
/* Now maybe reload the debug registers */ \
if(prev->debugreg[7]){ \
loaddebug(prev,0); \
loaddebug(prev,1); \
loaddebug(prev,2); \
loaddebug(prev,3); \
loaddebug(prev,6); \
} \
} while (0)
--
Isaac Clerencia Pérez | Debian GNU/Linux:~#
isaac en sindominio.net | http://www.sindominio.net
-------------------------^------------------------------------------
Public GPG key http://sindominio.net/~isaac/isaac@sindominio.net.asc
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : no disponible
Tipo : application/pgp-signature
Tamaño : 189 bytes
Descripción: no disponible
Url : /pipermail/gugs/attachments/20011124/37b52718/attachment.pgp
Más información sobre la lista de distribución Gugs