¿Podrían explicarme un poco mejor como es que funciona stack y hacer_stack?
#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) {
printf ("dummy: %d\n",dummy
-(char*) &prof
);
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--;
}
#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?
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.