Linux
wdsfup
这个作者很懒,什么都没留下…
展开
-
Linux 单个文件pagecache刷新和查看
一. 刷新文件pagecache#include <stdio.h> #include <sys/mman.h>#include ...原创 2018-04-11 09:32:01 · 1387 阅读 · 0 评论 -
gooreplacer – 替换开源库加速网页浏览
一个用于替换网页中Google Fonts/APIS/themes等的Chrome浏览器插件,让你快速打开引用这些资源的页面众所周知的原因,某国封锁了Google的全部服务,所以导致无法访问Google的一切资源。但是有很多网站,尤其是国外的网站,在制作网页的时候很多都使用了Google的库(比如Google fonts、apis、themes )。• 为什么要使用goorep转载 2017-04-28 17:32:44 · 4725 阅读 · 0 评论 -
Linux-网桥原理分析 .
目 录1..... 前言... 62 网桥的原理... 72.1 桥接的概念... 72.2 linux的桥接实现... 82.3 网桥的功能... 93 网桥的配置... 104 网桥的实现... 104.1 初始化... 114转载 2017-02-23 09:57:07 · 1803 阅读 · 0 评论 -
Linux内核驱动之GPIO子系统-GPIO的使用
一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用转载 2016-11-24 09:16:47 · 696 阅读 · 0 评论 -
u-boot FIT image介绍
1. 前言Linux kernel在ARM架构中引入device tree(全称是flattened device tree,后续将会以FDT代称)的时候[1],其实怀揣了一个Unify Kernel的梦想----同一个Image,可以支持多个不同的平台。随着新的ARM64架构将FDT列为必选项,并将和体系结构有关的代码剥离之后,这个梦想已经接近实现:在编译linux kern转载 2016-09-19 15:10:50 · 5539 阅读 · 0 评论 -
Linux-4.4-x86_64 内核配置选项简介
Linux-4.4-x86_64 内核配置选项简介作者:金步国64-bit kernelCONFIG_64BIT编译64位内核.本文仅讲述x86_64(AMD64)平台的内核编译,所以这个是必选项.General setup常规设置Cross-compiler tool prefixCONFIG_CROSS_COMPILE交叉编译工具前缀(比转载 2016-08-24 17:01:55 · 15134 阅读 · 0 评论 -
Shell中的${}、##和%%使用范例
这篇文章主要介绍了Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果,需要的朋友可以参考下今天看一个脚本文件的时候有一些地方不太懂,找了一篇文章看了一些,觉得不错,保留下来。 假设我们定义了一个变量为:复制代码代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得到不同的值:转载 2016-07-07 16:10:28 · 362 阅读 · 0 评论 -
可扩展的事件复用技术:epoll和kqueue
通常来说我喜欢Linux更甚于BSD系统,但是我真的想在Linux上拥有BSD的kqueue功能。什么是事件复用技术假设你有一个简单的web服务器,并且那里已经打开了两个socket连接。当服务器从两个连接那里都收到Http请求的时候,它应该返回一个Http响应给客户端。但是你没法知道那个客户端先发送的消息和什么时候发送的。BSD套接字接口的阻塞行为意味着,如果你在一个连接上调用r转载 2016-06-13 14:55:42 · 315 阅读 · 0 评论 -
[转载]Linux TCP/IP 协议栈源码分析
一.linux内核网络栈代码的准备知识1. linux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etc INET socket层:BSD socket是个可以用于各种网络转载 2016-05-31 10:10:12 · 1238 阅读 · 0 评论 -
网络数据包收发流程(一):从驱动到协议栈
一、硬件环境intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大bcm5461: PHY芯片,与之对应的MAC是TSECTSEC: Three Speed Ethernet Controller,三速以太网控制器,PowerPc 架构CPU里面的MAC模块 注意,TSEC内部有DMA子模块 话说现在的CPU越来越牛转载 2016-05-28 10:55:40 · 4887 阅读 · 0 评论 -
理解 TCP/IP 网络栈 & 编写网络应用
1.译注之前在网上看到了这篇描述tcp网络栈原理的文章,感觉不错,决定抽空把这篇文章翻译一下。一来重新温习一下TCP相关知识,二来练练英文。 很久没翻译文章了难免有误,建议有能力的同学还是看一下原文。2.概述我们难以想象没有了TCP/IP之后的网络服务。所有我们开发并在NHN使用的网络服务都基于TCP/IP这个坚实的基础。理解数据如何通过网络传输可以帮助你通过调优、排查或引转载 2016-05-28 10:54:17 · 1872 阅读 · 0 评论 -
linux下内存大小、起始地址的解析与修改
在实际的工作中,由于产品型号的不同,经常需要调整linux所管理的内存的大小,而内核在启动阶段,会两次去解析从uboot传递过来的关于内存的信息,具体如下:一、解析从uboot传递过来的tag(在parse_tags中处理)在uboot的do_bootm_linux()函数中,会创建一系列需要传递给内核的tag,所有的tag以链表形式链接到指定的物理内存中。setup_转载 2016-02-03 11:50:08 · 1363 阅读 · 0 评论 -
Linux资源控制-CPU和内存
主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法。 CPU资源控制每个进程能够占用CPU多长时间, 什么时候能够占用CPU是和系统的调度密切相关的.Linux系统中有多种调度策略, 各种调度策略有其适用的场景, 也很难说哪种调度策略是最优的.Linux的调度策略可以参见代码: include/linux/sched.h转载 2015-12-08 16:57:32 · 1966 阅读 · 0 评论 -
linux CPU隔离和进程调度优先级设置
CPU隔离和进程调度优先级设置的相关知识:1. uboot 启动参数中增加 ”isolcpus=1“ , 计数从0开始 表示隔离第2个CPU, 系统启动后,程序不能在第2个CPU上运行。 如果要使用隔离的CPU,需要在代码中添加如下代码。 pid_t tid;cpu_set_t set;tid = gettid();CPU_ZERO(原创 2015-12-30 11:52:35 · 14517 阅读 · 0 评论 -
Linux 与 BSD 有什么不同?
Linux 和 BSD 都是免费的,开源的,类Unix系统。他们甚至使用很多相同的软件。他们看上去简直就像是一个操作系统,那么,它们有什么不同吗?其实,两者之间的不同,远远超出了我们下面提到的这些,尤其是在构建完整操作系统和许可授权的哲学思想上,更是相差甚远。通过这篇短文将可以简单的了解它们之间的不同。基础许多人所称的“Linux”实际上不是 Linux。Linux转载 2017-05-03 09:30:33 · 6604 阅读 · 2 评论 -
linux 常用端口
下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方列表,请参考以下 URL:http://www.iana.org/assignments/port-numbers 注记转载 2017-05-03 15:32:50 · 4186 阅读 · 0 评论 -
jessezeng TCP协议端口状态说明:CLOSE-WAIT、TIME-WAIT 、LISTENING、SYN_SENT、ESTABLISHED、LAST-ACK ...
了解TCP协议端口的连接状态,对排除和定位网络或系统故障会有很大帮助,因此了解一下是有必要的:一、LISTENING 提供某种服务,侦听远方TCP端口的连接请求,当提供的服务没有被连接时,处于LISTENING状态,端口是开放的,等待被连接。二、SYN_SENT (客户端状态) 客户端调用connect,发送一个SYN请求建立一个连接,在发送连接请求后等待匹配的连接请求,此时转载 2017-12-29 08:56:04 · 496 阅读 · 0 评论 -
Linux 下系统调用的三种方法
系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。下面介绍Linux 下三种发生系统调用的方法:通过 glibc 提供的库函数glibc 是 Linux 下使用的开源的标准 C 库,它是 GNU 发布的 libc 库,即运行时转载 2017-11-10 11:47:40 · 1276 阅读 · 0 评论 -
《深入理解Linux内核》软中断/tasklet/工作队列
《深入理解Linux内核》软中断/tasklet/工作队列软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。本文重点在于介绍这三者之间的关系。(函数细节将不会在本文中出现,可以参考文献,点转载 2017-11-10 11:24:46 · 347 阅读 · 0 评论 -
程序的链接和装入及Linux下动态链接的实现
程序的链接和装入存在着多种方法,而如今最为流行的当属动态链接、动态装入方法。本文首先回顾了链接器和装入器的基本工作原理及 这一技术的发展历史,然后通过实际的例子剖析了Linux系统下动态链接的实现。了解底层关键技术的实现细节对系统分析和设计人员无疑是必须的,尤其当我 们在面对实时系统,需要对程序执行时的时空效率有着精确的度量和把握时,这种知识更显重要。链接器和装入器的基本工作原理一转载 2017-11-01 14:44:54 · 353 阅读 · 0 评论 -
Linux下编译、链接和装载
——《程序员的自我修养》读书笔记编译过程在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。一个简单的hello word程序编译过程如下:1. 预处理首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp转载 2017-11-01 10:25:31 · 600 阅读 · 0 评论 -
seq_file接口编程浅析
由于procfs的默认操作函数只使用一页的缓存,在处理较大的proc文件时就有点麻烦,并且在输出一系列结构体中的数据时也比较不灵活,需要自己在read_proc函数中实现迭代,容易出现Bug。所以内核黑客们对一些/proc代码做了研究,抽象出共性,最终形成了seq_file(Sequence file:序列文件)接口。 这个接口提供了一套简单的函数来解决以上proc接口编程时存在的问题,使得编转载 2017-10-20 17:26:56 · 4065 阅读 · 0 评论 -
RCU CPU STALL DETECTOR
在RHEL 7 和 SELS11 SP2 之后的Linux系统上,有时会看到如下信息:INFO: rcu_sched_state detected stall on CPU 5 (t=2500 jiffies)INFO: rcu_bh_state detected stalls on CPUs/tasks: { 3 5 } (detected by 2, 2502 jiffies)转载 2017-07-25 17:25:27 · 8372 阅读 · 0 评论 -
linux panic 问题定位
1 概述详细描述出现kernel panic时的处理过程。 2 定位方法2.1 调用栈最直接、简单的方法,查看panic时的调用栈,根据打印的出错函数及文件行数,找到panic的位置,再详细处理。2.2 出错地址有时候会出现错误的调用栈,此时必须查看出错的指令地址,对于x86架构来说,就是EIP,同时关注调用栈的地址。在调用栈错误时,可以手工转载 2017-07-25 16:53:56 · 1842 阅读 · 0 评论 -
Linux内核Crash分析
在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:Linux2.6.32。 每一个进程的生命周期内,其生命周期的范围为几毫秒到几个月。一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。这时使用的不再是用户空间的栈空间,使用对应的内核栈空间。对每一个进程来说,Linux内核都会把两个不同的数据结转载 2017-08-01 15:33:19 · 423 阅读 · 0 评论 -
[内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
[内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析转自:http://blog.csdn.net/wh_19910525/article/details/11536279 自旋锁的初衷:在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间),所以自旋锁不应转载 2017-06-21 15:53:26 · 870 阅读 · 0 评论 -
内核3.x版本之后设备树(device tree)机制
1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach转载 2015-11-27 11:49:33 · 4045 阅读 · 0 评论