我尝试在 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;
}