首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux源码epoll

本文就是笔者在探究epoll源码过程中,对kernel将就绪描述符添加到epoll并唤醒对应进程的一次源码分析(基于linux-2.6.32内核版本)。...简单的epoll例子 下面的例子,是从笔者本人用c语言写的dbproxy中的一段代码。由于细节过多,所以做了一些删减。...将连接描述符注册到对应的worker里面 epoll_ctl(reactor->client_fd,EPOLL_CTL_ADD,epifd,&event); 回顾一下上述user space代码...源码socket的阻塞和非阻塞>>中,博客地址如下: https://my.oschina.net/alchemystar/blog/1791017) 既然知道了tfile->f_op->poll的实现...总结 epoll作为linux下非常优秀的事件触发机制得到了广泛的运用。其源码还是比较复杂的,本文只是阐述了epoll读写事件的触发机制,探究linux kernel源码的过程非常快乐_。

2.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

linux源码epoll

linux源码epoll 前言 在linux的高性能网络编程中,绕不开的就是epoll。...本文就是笔者在探究epoll源码过程中,对kernel将就绪描述符添加到epoll并唤醒对应进程的一次源码分析(基于linux-2.6.32内核版本)。...简单的epoll例子 下面的例子,是从笔者本人用c语言写的dbproxy中的一段代码。由于细节过多,所以做了一些删减。...(注:由于是tcp socket,所以这边sock->ops=inet_stream_ops,这个初始化的过程在我的另一篇博客>中,博客地址如下: https...总结 epoll作为linux下非常优秀的事件触发机制得到了广泛的运用。其源码还是比较复杂的,本文只是阐述了epoll读写事件的触发机制,探究linux kernel源码的过程非常快乐^_^。

5.1K41

代码学AndroidUI - Tab

这里推荐郭神的《第一行代码》,不过书中关于UI,界面方面的说的比较少。 俗话说:Don't BB, show me the code....于是去看看官方文档关于UI的代码例子http://developer.android.com/intl/zh-cn/samples/ui.html 官方提供的源代码可以下载之后导入Android Studio...,或者当启动Android Studio的时候,右边什么创建新项目下面有一个Import an Android code sample,在这里选了,会直接帮你去github上download代码并导入工程...开始 现运行一下代码,看看界面是什么样子,如下图所示: ? 可以大致看到主要分了上下两个模块,上面主要是个TextView,下面就是我们要看的tab。...继续SlidingTabsBasicFragment对象 SlidingTabsBasicFragment对象的onCreateView方法: @Override public View onCreateView

87490

从一段挖矿病毒代码Linux命令的实际应用

下面就记述下病毒的发现、清理和认识过程,一路下来可以给我们的Linux命令学习提供很多知识点。这里面大部分操作都在生信宝典的Linux系列教程有提及,也是我们常用的提高效率的方式。...发现两个进程sysupdate和networkservice,名字,还以为是Linux系统什么时候学会Windows的自动升级了。...SELinux是安全增强型 Linux(Security-Enhanced Linux),它是一个Linux内核模块,也是Linux的一个安全子系统。主要由美国国家安全局开发。...# ps获取运行的进程,grep屏蔽掉自己,然后grep其它挖矿程序,awk获取进程编号,kill -9 强制杀掉 # 如果大家看到自己电脑有这些程序,也都清除下,都是病毒 # 源代码有近百个病毒进程的清除...echo $1,$2 http_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} $1` # 网页返回代码是否为

6.5K120

从4行代码引用

隐藏引用就不是指针 并且很多例子,参数传递和构造函数,很多八股文, 到底一样不一样,课本上没有说,很模糊,不分配怎么操作。 直觉,感觉上判断,肯定有,如果没有。...操作引用,最后变成操作引用对象,神奇魔法 不存在 ra++ === (*pa)++ 小心求证1- 汇编 代码:https://godbolt.org/z/xrcobvar3 从汇编角度 指针和引用变量初始化产生汇编代码是一样的...【都是三行】 代码: int a = 3; int &ra = a; int b = 4; int *pa = &b; 汇编: int a = 3; int &ra = a; 012E33F8 mov...的地址放入 eax 012E340F mov dword ptr [pa],eax ,//最后把 eax 的值放入地址为 [pa] 的内存 从汇编的角度来看,引用是通过指针来实现的 代码...需要进一步解释 函数产生汇编 移动方向 https://nettee.github.io/posts/2018/Understanding-lvalues-and-rvalues-in-C-and-C/ 10

50650

代码审查视角软件质量

高质量的代码设计 1、合理的代码模块层级; 2、代码需综合考虑、约束:各模块的大小、模块的复杂度、接口的大小、模块之间的共享资源; 3、高内聚低耦合:消除重复功能代码、分离代码变化方向、缩小代码依赖范围...5、基于动态代码分析:根据代码功能需求构建测试用例、使用覆盖率检查工具检查用例对代码的覆盖率、使用动态代码检查工具检查代码; 6、静态代码和动态代码分析工具:结合静态分析工具和动态分析工具,有效利用各种工具长处...,更早发现代码问题; 7、代码审查三要素:代码度量分析、静态代码检查、动态代码检查 代码审查重点 1、代码规范的检查:检查软件产品中的代码风格是否统一、代码中是否存在不符合规范的代码。...静态代码检测的主要作用:代码规范检查、代码bug检查、代码性能检测、代码坏味道检测(过长的参数列表,过长的函数)。...总结 提高软件质量是作为开发人员的一个很重要的指标,通过多维度的论述软件质量问题,并且从软件开发者视角讨论如何写出高质量的软件。

85850

linux源码socket的close

linux源码socket的close 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。...上篇博客讲了socket的阻塞和非阻塞,这篇就开始谈一谈socket的close(以tcp为例且基于linux-2.6.24内核版本) TCP关闭状态转移图: 众所周知,TCP的close过程是四次挥手...上面代码的处理过程如下图所示: ?...总结 linux内核源代码博大精深,阅读其代码很费周折。之前读>的时候由于有先辈引导和梳理,所以看书中所使用的BSD源码并不觉得十分费劲。...直到现在自己带着问题独立linux源码的时候,尽管有之前的基础,仍旧被其中的各种细节所迷惑。希望笔者这篇文章能帮助到阅读linux网络协议栈代码的人。

5.2K80

从无盘启动 Linux 启动原理

但是家里没有找到合适的 U 盘(穷~~),加上前段时间听了同事关于 linux 内核的分享,感慨自己对系统的理解不够。因此我决定使用无盘启动 volumio 顺便研究一下 linux 启动原理。...此外 BIOS 的代码历史悠久难以维护。...Bootloader:这部分记录了一段较小引导代码,用于去启动硬盘其他分区位置上更大的引导文件,例如 linux 操作系统的 grub 目录。...它可以提供选单选择 Linux 内核版本,此外加载程序使得我们可以向 Linux 内核传递参数。这点很重要,在我的案例中 volumio 就是通过 Syslinux 向内核传递启动参数的。...Linux 能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz 是可执行的 Linux 内核。 initrd 是“initial ramdisk”的简写。

8.1K104

Linux那些事儿之我是Hub(26)支持计划生育–代码的理由

因此,为了支持计划生育这项基本国策,每一个男人都有义务认真看一下电源管理的代码. 另一方面,虽然现在已经不住在农村了,但我一直坚定不移的认为,这个世界,最慢的是我家的网速,最快的是我家电表的转速....上节说了应该从usb_suspend/usb_resume开始,那就开始吧. usb_suspend/usb_resume这两个函数很显然是一对,但是我们不可能同时讲,只能一个一个来.倒不是故意把它们拆开...usb_suspend_both(udev, msg); 1465 usb_pm_unlock(udev); 1466 return status; 1467 } 1462行和1465行,锁的代码暂时先一律飘过...intf->dev.power.power_state.event = msg.event; 884 return status; 885 } 一路陪我们走过来的兄弟们一定不会看不懂这个函数,最关键的代码就是...msg),这就是调用具体的interface所绑定的那个驱动程序的suspend函数.比如,对于hub来说,这里调用的就是hub_suspend()函数.具体的hub_suspend()我们倒是不用先急着,

63320

linux源码socket(tcp)的timeout

本文大部分讨论的是socket设置为block的情况,即setNonblock(false),仅在最后提及了nonblock socket(本文基于linux 2.6.32-431内核)。...kernel代码版本细微变化 值得注意的是,linux本身官方发布的2.6.32源码对于tcp_syn_retries2的解释和RFC并不一致(至少笔者阅读的代码如此,这个细微的变化困扰了笔者好久,笔者下载了和机器对应的内核版本后才发现代码改了...以下为代码对比: ========================>linux 内核版本2.6.32-431<======================== #define TCP_TIMEOUT_INIT...timeout = ((2 << boundary) - 1) * rto_base; ...... } ========================>linux 内核版本2.6.32.63<=...java的SocketInputStream的sockRead0超时时间 java的超时时间由SO_TIMOUT决定,而linux的socket并没有这个选项。

1.9K20

三大亮点带你 Linux 内核 5.6

当我们还在体验 Linux 5.5 稳定发行版带来更好的硬件支持时,Linux 5.6 已经来了。说实话,Linux 5.6 比 5.5 更令人兴奋。...即使即将发布的 Ubuntu 20.04 LTS 发行版将自带 Linux 5.5,你也需要切实了解一下 Linux 5.6 内核为我们提供了什么。...我将在本文中重点介绍 Linux 5.6 发布版中值得期待的关键更改和功能: Linux 5.6 功能亮点 当 Linux 5.6 有新消息时,我会努力更新这份功能列表。...换句话说,这只是 Linux 文件系统的一种新压缩技术,你可以选择待定的文件扩展技术。...因此,如果你好奇 Linux 5.6 所涉及的全部更改,则可以亲自了解一下。 现在你已经了解了 Linux 5.6 发布版带来的新功能,对此有什么看法呢?在下方评论中留下你的看法。

1.2K20
领券