[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