2022-01

一. 参考网址

  1. linux下java调用.so动态库方法: JNA

  2. linux c语言 fork() 和 exec 函数的简介和用法

  3. 深入理解Reactor 网络编程模型

  4. thread join和detach区别

  5. pthread_create(3) — Linux manual page(有示例)

  6. pthread_join函数介绍和使用实例

  7. marshal 和 unmarshal(一)编排,json对象--->xml

  8. C语言中的typeof关键字

  9. linux 内核宏container_of剖析(知乎,详细)

  10 如何深刻理解Reactor和Proactor?(知乎)

  11. ranlib的作用

  12. Linux 内存映射函数 mmap()函数详解

  13. 关于PF_INET和AF_INET的区别

  14. VirtualBox 桥接网卡设置

  15. Bash Shell将tab符替换成空格

  16. 详解BLE连接建立过程(蓝牙)

二. 实践

  1. container_of

#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)

#undef offsetof
#ifdef __compiler_offsetof
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER)
#endif

#define container_of(ptr, type, member) ({ \
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    (type *)( (char *)__mptr - offsetof(type,member) );})

 

posted @ 2022-01-05 11:36  shanyu20  阅读(35)  评论(0编辑  收藏  举报