2024年8月19日

摘要: 我们以下面这么一段代码开始 void test_inc() { int i = 10; i = i++; printf("i = %d\n", i); } 运行输出 i = 10 看起来出乎意料,来我们看看他编译之后的汇编代码就明白了 test_inc: .LFB20: .cfi_startproc 阅读全文
posted @ 2024-08-19 16:21 云梦泽渔夫 阅读(7) 评论(0) 推荐(0) 编辑
 

2020年12月3日

摘要: P2P: 用于2个netns之间通信,接口直连。 配置: ip netns add n1ip netns add n2 ip link add veth1 type veth peer name veth2 ip link set dev veth1 netns n1ip link set dev 阅读全文
posted @ 2020-12-03 11:18 云梦泽渔夫 阅读(113) 评论(0) 推荐(0) 编辑
 

2020年6月18日

摘要: 首先创建一个netns "ns-test". [router] / # ip netns add ns-test [router] / # ip netns list ns-test 创建一对veth_pair.在主机侧,接口名为p1,对侧为p2 [router] / # ip link add p 阅读全文
posted @ 2020-06-18 11:42 云梦泽渔夫 阅读(294) 评论(0) 推荐(0) 编辑
 

2020年4月6日

摘要: 讲mtrace之前,我们先讲讲malloc hook。 malloc hook 顾名思义,malloc hook就是malloc的钩子函数。用户可以设置钩子函数,从而在用户使用malloc()或者realloc()申请内存,或者使用free()释放内存时会调用钩子函数。 glibc里面定义了如下钩子 阅读全文
posted @ 2020-04-06 00:19 云梦泽渔夫 阅读(619) 评论(0) 推荐(0) 编辑
 

2020年3月31日

摘要: LXC容器有许多HOOK,通过指定这些HOOK对应的脚本,可以在容器的各个阶段做一些处理。 但是有些小伙伴不知道如何正确使用这些HOOK。 下面是官方对这些HOOK的解释: lxc.hook.pre-start (called before any initialization is done) l 阅读全文
posted @ 2020-03-31 11:15 云梦泽渔夫 阅读(1129) 评论(0) 推荐(0) 编辑
 
摘要: 对于容器来说,可以与host共享网络名字空间,也可以用单独的网络名字空间。这个可以通过container的配置文件来指定。 如果需要用单独的网络名字空间,可以指定容器的网络类型为veth: lxc.network.type = veth 如果要跟host共享网络名字空间,那么可以指定容器的网络类型为 阅读全文
posted @ 2020-03-31 10:14 云梦泽渔夫 阅读(368) 评论(0) 推荐(0) 编辑
 

2020年3月26日

摘要: 通常应用程序跟驱动之间交互,主要是通过轮询的方式。这种方式效率非常低下。 下面介绍一种异步通知的方式。在这种模式下,应用程序不需要查询驱动,当驱动需要应用程序读取数据时,发送一个信号给应用程序,应用程序收到信号后,再去从驱动读取数据。 驱动代码: #include <linux/miscdevice 阅读全文
posted @ 2020-03-26 20:50 云梦泽渔夫 阅读(235) 评论(0) 推荐(0) 编辑
 
摘要: 内核检测到USB设备的插入之后,需要通知用户空间进程来处理。目前有2种通知方式: 1.内核调用call_usermodehelper_setup()/call_usermodehelper_exec()从而运行用户空间进程来处理。可以通过/sys/kernel/uevent_helper或者/pro 阅读全文
posted @ 2020-03-26 17:43 云梦泽渔夫 阅读(1866) 评论(0) 推荐(0) 编辑
 

2020年3月19日

摘要: 首先让我们先复现这个问题。 1.创建一个lxc 容器develop,容器的网络类型为veth. 2.在容器里面安装curl以及tcpdump. 3.用tcpdump对以下3个地方进行抓包: a.容器的网络接口; b.host这边的bridge接口; c.host的对外接口; 4.在容器中用curl来 阅读全文
posted @ 2020-03-19 16:33 云梦泽渔夫 阅读(885) 评论(0) 推荐(0) 编辑
 

2020年2月28日

摘要: 谈uftrace之前,先谈谈ftrace。 ftrace是一个用于调试linux内核的工具,它可以用于调试内核的调用栈,performance等。 ftrace的核心是在编译内核代码时,通过制定-pg标志,在函数的调用入口插入桩mcount函数,这样,就可以在桩函数里收集函数调用的信息。至于mcou 阅读全文
posted @ 2020-02-28 17:23 云梦泽渔夫 阅读(928) 评论(0) 推荐(0) 编辑