Código
#include <stdlib.h> #include <setjmp.h> #define TPILA 4096 #define NPILAS 10 static void hace_stack(jmp_buf buf, void (*pf)(), unsigned prof, char *dummy) { if( dummy - (char *) &prof >= prof) { } } else hace_stack(buf, pf, prof, dummy); } void stack(jmp_buf buf, void (*pf)()) { static int ctas = NPILAS; char dummy; hace_stack(buf, pf, TPILA*ctas, &dummy); ctas--; }
Código
#include <stdio.h> #include "guindows.h" task t1, t2, taskmain; void ft1(){ double d; for(d=-1;;d+=0.001) { TRANSFER(t1,t2); } } void ft2(){ int i; for(i=0;i<10000;i++) { TRANSFER(t2,t1); } TRANSFER(t2, taskmain); } main(){ stack(t1,ft1); stack(t2,ft2); TRANSFER(taskmain,t1); return 0; }
¿Para qué carajos sirve esto?
Código
if( dummy - (char *) &prof >= prof) { } } else hace_stack(buf, pf, prof, dummy);
Me parece una forma muy rara de codear (char *)&prof sé lo que significa pero no entiendo para que sirve.
Todo lo de guindows.h lo entiendo.