自定义jmpbuf结构—SRS对StateThreads的改进与完善

jmpbuf 的全称其实是 jump buffer,存储的是 longjump 函数所需要的信息。也就是协程的上下文。由于 jmpbuf 在不同的平台内部实现不一样,而且如果 glibc 后面版本如果改变了 jmpbuf 的内存布局,就不能用了。

所以 SRS 为了保证系统的 鲁棒性 跟 扩展性,自己定义了 jmpbuf 的结构。如下:

原来 1.9 版本的 StateThreadsjmpbuf 是使用的 setjmp.h 里面的定义,如下:


我们再看回来 common.h 头文件里面的 struct _st_thread 结构,会发现 context 字段的结构已经变了。


推荐阅读《掀起你的汇编来:如何移植ST协程到其他系统或CPU?》

相关推荐
冬奇Lab1 天前
硬件加速与 OMX/Codec2:解密编解码器的底层世界
android·音视频开发·视频编码
冬奇Lab2 天前
MediaCodec 编解码基础:Buffer 队列、状态机与零拷贝的艺术
android·音视频开发·源码阅读
冬奇Lab3 天前
Camera HAL3 接口:Android 相机的真正底牌
android·音视频开发·源码阅读
runner365.git5 天前
如何使用RTCPilot--跨平台WebRTC开源服务
webrtc·音视频开发
冬奇Lab5 天前
相机录像流程:MediaRecorder与Camera2的协作之道
android·音视频开发·源码阅读
冬奇Lab6 天前
相机拍照流程:从快门按下到JPEG存储的完整旅程
android·音视频开发·源码阅读
runner365.git6 天前
RTCPilot的信令流程
webrtc·音视频开发
runner365.git6 天前
如何使用RTCPilot配置一个集群RTC服务
webrtc·实时音视频·音视频开发
冬奇Lab11 天前
Camera2 API架构基础:Android视频系统的大门
android·音视频开发·源码阅读
冬奇Lab12 天前
Android 15 音频子系统(八):Audio HAL 与硬件接口——音频数据的最后一公里
android·音视频开发·源码阅读