0

我尝试在 C 中创建一个头文件,虚拟化来自ucontext.h库的所有函数调用。

一切正常,除了函数makecontext()当我尝试调用my_makecontext()时,我收到以下消息:

not enough storage for stack: Success
Aborted (core dumped)

但是当我使用makecontext而不是我的函数时,一切正常。

我正在努力解决它。

我的代码片段是:

test_file_for_my_funcs.c

//Doesn't 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;
}
4

0 回答 0