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)寄存器