Dado que no se emplea ninguna peculiaridad de la arquitectura Intel x86, la implementación de upcalls, envío de mensajes y PCTs se describió casi por completo en los apartados que exponían el funcionamiento detallado de las mismas de forma genérica. Quedan no obstante algunos detalles curiosos que precisan de código para su exposición. Hemos preferido aplazarlos para este apartado, dado que el lector que esté leyéndola estará seguramente interesado en ellos--aunque no sean precisos para la comprensión de la implementación.
En primer lugar, tenemos la instalación de registros de activación en
el shuttle destino durante el envío de mensajes. Esto se hace
consultando el ultimo juego de registros de kernel de dicho shuttle
(mediante shtl_kregref). Empleándolo podemos salvarlo y
alterarlo. El fragmento de código que realiza tal operación es como
podemos ver en la figura 3.23.

Figure 3.23: Salvando el kernel de otro shuttle
En realidad no estamos haciendo otra cosa que lo que hace la rutina
ksetjmp durante un upcall para salvar el estado del kernel. La
diferencia, es que no estamos salvando nuestro estado, por lo
que no nos sirve de nada la mencionada rutina.
Prosiguiendo con el envío de mensajes, otro punto delicado es la
instalación del registro de activación para upcall (la rutina
que implementa un upcall) en la pila de kernel del shuttle
destino una vez que hemos salvado su estado. De nuevo, lo construimos
a mano tal y como se ve en la figura 3.24. Puede
verse como éste es el punto en que el mensaje se transfiere del
remitente al destinatario. Una vez construido, se altera el estado del
shuttle destino para que ejecute el manejador.

Figure: Construcción del registro de activación para upcall.
La parte crítica de la realización de un upcall es la llamada a área
de usuario. Ésta se realiza como puede verse en la
figura 3.25, la realiza la rutina prtl_upcall_up
una vez que upcall ha salvado el estado mediante
ksetjmp.

Figure 3.25: Llamada de kernel a usuario.