makecontext недостаточно места для стека - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь создать заголовочный файл в C, который виртуализирует все вызовы функций из ucontext.h libraby.

Все работает нормально, кроме func makecontext , когдая пытаюсь вызвать my_makecontext, я беру это сообщение

"недостаточно места для стека: успех прерван (ядро сброшено)" *

но когда я использую makecontext вместо моей функцииevrtything работает отлично.

Я в реальной борьбе, чтобы решить эту проблему ..

Часть моего кода ниже

test_file_for_my_funcs.c

//DONT WORK
//makecontext(&context.uctx_source,(void*)Write,1,*length);
//makecontext(&context.uctx_target,(void*)Read,0);
mycoroutines_create(&context.uctx_source,(void *)Write,length);
mycoroutines_create(&context.uctx_target,(void *)Read,length);

mycoroutines.h

int mycoroutines_create(ucontext_t *coroutine,void (body)(void *),void *arg)
{
makecontext(coroutine,(void *)body,1,(int *)arg);
if(errno != 0){
                perror("Error reported by makecontext()");
                return -1;         }
  else {
    perror("not enough storage for stack");
    abort();
  }
  return 0;
}
...