![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX
文章平均质量分 89
对的时间点
新手一枚,有错误再所难免,希望各位指正
展开
-
linux 内核模块重定位过程 简单的示例解析
以test_module1.ko为例,进行说明。原创 2023-05-24 17:54:04 · 1257 阅读 · 0 评论 -
RCU检测CPU stall的原理
在系统中,有时可能会看到如下警告:INFO: rcu_sched self-detected stall on CPU 0-...: (9999 ticks this GP) idle=cee/140000000000001/0 softirq=64858/64858 fqs=4891 (t=10000 jiffies g=13416 c=13415 q=68)Task dump for CPU 0:my_debug_1 R running task 这是rcu的cpu原创 2021-11-22 20:39:48 · 16647 阅读 · 0 评论 -
nginx event 事件模块中 ev->write 的作用
起因在stream模块中,使用到了事件结构 ngx_event_t 中的 write 条目,但是一直不知道这个东西在哪设置,其什么作用。事实上,一直以来我都有一个误区,认为 ngx_stream_proxy_process_connection() 函数的第二个参数 from_upstream 表示的是数据是否来自上游。以至于,在如下代码时,很困惑,为什么,靠一个 ev->write 就能够确定,数据是否是从上有来的呢??static voidngx_stream_proxy_upstream原创 2021-11-03 15:54:07 · 1123 阅读 · 0 评论 -
lP地址 与 MAC地址
作用IP地址本质上是终点地址,它在跳过路由器的时候不会改变,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。这就是为什么还要用MAC地址的原因之一,它起到了记录下一跳的信息的作用。也可以说IP是网络到网络,而MAC是设备到设备。分层IP是在网络层 中的 IP协议使用的,而MAC地址是在 链路层 中的 以太网协议 中使用的。如果网络层不是用IP协议,就不需要使用IP地址,链路层不使用以太网协议就不一定需要使用MAC地址。所以,这样分层来设计网络可以使网络层与链路层的协议更灵活地替换,网络层原创 2020-12-07 18:20:39 · 350 阅读 · 2 评论 -
libmodbus-3.1.6 unit-test-client.c 和 unit-test-server.c源码阅读
unit-test-client.c根据命令行输入来判断使用哪些具体的协议,默认使用modbus tcp协议。if (argc > 1) { if (strcmp(argv[1], "tcp") == 0) { use_backend = TCP; } else if (strcmp(argv[1], "tcppi") == 0) { use_backend = TCP_PI; } else if (s原创 2020-11-26 10:40:09 · 1058 阅读 · 0 评论 -
accept 和 accept4 区别,以及O_CLOEXEC的作用
accept4()函数共有4个参数,相比accept()多了一个flags的参数,用户可以通过此参数直接设置套接字的一些属性,如SOCK_NONBLOCK或者是SOCK_CLOEXEC。当accept4的flags为0的时候,accept4和accept没有区别。SOCK_CLOEXEC和O_CLOEXEC标志位,与使用fcntl设置文件描述符的FD_CLOEXEC有同样的作用,都是在fork的子进程中用exec系列系统调用加载新的可执行程序之前,关闭子进程中fork得到的fd。当一个进程使用fork原创 2020-11-25 18:34:23 · 3877 阅读 · 0 评论 -
LINUX 内核零散知识 container_of宏
container_of是内核中常用的一个宏。定义如下:#define container_of(ptr, type, member) ({ \ const typeof(((type *)0)->member) * __mptr = (ptr); \ (type *)((char *)__mptr - offsetof(type, member)); })设个宏共有三个参数:ptr:结构体成员member的地址type:结构体的类型member:结构体成员container原创 2020-09-19 15:38:14 · 157 阅读 · 0 评论 -
错误集 字符设备驱动 echo 死循环
现象使用如下命令访问字符设备驱动,本意是通过echo命令调用驱动中的write函数。echo 1 > /dev/mydev但是结果出现了死循环,echo命令并不结束。原因:write函数中,在返回的时候,固定的返回一个0.分析echo命令,进行了3步操作,打开文件,写入数据,关闭文件。在写入文件的时候,有对返回值的判断操作,若返回值不等于写入的数据数量,则会再次进行写入操作。个人推测是根据返回值进行偏移,再次进行写入。但是返回值若是0,则会导致不停的写入,则会产生死循环。..原创 2020-08-27 11:35:30 · 622 阅读 · 0 评论 -
Linux网络编程基础
基础知识网络分层思想网络采用分而治之得方法设计,将网络得功能划分为不同的模块,以分层的形式有机的集合在一起。每层向实现不同的功能,每层向上层提供服务,同时使用下层提供的服务网络分层的作用为了让网络功能模块化,便于管理和通信OSI七层协议模型OSI模型是一个理想的、通用的但尚未实现的模型通信特点:属于对等通信,为了使数据分组从源发出到达目的地源端OSI模型的每一层必须与目的端对应层...原创 2020-04-18 12:31:20 · 195 阅读 · 0 评论