libco底层实现

libco是微信开源的一套协程库。

1、co_hook_sys_call.cpp:hook socket的系统调用。

#define HOOK_SYS_FUNC(name) if( !g_sys_##name##_func ) { g_sys_##name##_func = (name##_pfn_t)dlsym(RTLD_NEXT,#name); }

2、coctx_swap.S:协程上下文切换,没用glibc中的ucontext。

1)大写S后缀名,汇编源文件,可以包含预处理指令。

// 让符号对链接器可见
.globl/.global 符号
// 告诉GNU汇编器,coctx_swap是个函数
.type  coctx_swap, @function
// 函数入口
coctx_swap:

2)寄存器

 

posted @ 2020-02-21 10:57  happyyoung  阅读(284)  评论(0编辑  收藏  举报