Openssl异步说明

Asyn mode是OpenSSL支持异步I/O(AIO)的模式,在这个模式下openssl把硬件加速卡等不占用cpu的操作剥离出来,单独交给一个叫asyn job的结构去做。在asyn job执行的过程中,cpu可以把当前任务暂停,切换上下文(保存/恢复栈,寄存器等,用__setjump, longjump实现)返回给user。User需要主动(或者等待硬件加速卡的事件通知)去epoll这个async job的状态,是否是ASYNC_FINISHED状态。如果是,说明之前的任务已经完成,则可以继续后面的操作(取回加密/解密结果)。

相关Linux API———ucontext族函数

Linux C中的协程主要使用ucontext族函数来实现,在使用感受上类似于经常使用的goto语句(ucontext族函数可以跨函数)。

man手册中对makecontext,swapcontext函数进行如下描述。

 NAME

        makecontext, swapcontext - manipulate user context

 SYNOPSIS

        #include <ucontext.h>

        void makecontext(ucontext_t *ucp, void (*func)(), int argc, ...);

扫描二维码关注公众号,回复: 9398560 查看本文章

        int swapcontext(ucontext_t *oucp, ucontext_t *ucp);

 DESCRIPTION

  In a System V-like environment, one has the type ucontext_t defined in <ucontext.h> and the four functions getcontext(3), setcontext(3), makecontext() and swapcon‐text() that allow user-level conte

猜你喜欢

转载自blog.csdn.net/realmardrid/article/details/104481702
今日推荐