linux-kernel相关内容

定义Netfilter挂钩函数的正确方法是什么?

我正在为Linux编码一个内核模块(更具体地说,是一个 Netfilter 模块).我正在尝试使其与各种内核兼容,但是入口函数给我带来了麻烦. 从LXR,我可以看到nf_hookfn typedef在内核3.13中已更改. Linux 3.12及更低版本 : typedef unsigned int nf_hookfn(unsigned int hooknum, (...)); ..
发布时间:2020-04-23 10:38:13 服务器开发

使用Babeltrace构建Perf(用于Perf到CTF的转换)

我正在尝试使用TraceCompass以便进一步调查我的系统跟踪.为此,您需要CTF格式,并且有两种在Linux中获取它的可能方法,即afaik: 使用LTTng进行跟踪并从中使用CTF格式 使用"perf数据转换"以从perf.data创建CTF数据 我一直在尝试使用第二个选项,因为第一个选项需要安装跟踪点,而从perf获得的内容对我来说就足够了. 因此,假设我有perf.data ..
发布时间:2020-04-23 10:37:05 服务器开发

libpcap还是PF_PACKET?

我理解这个问题已经讨论了很多次:我应该使用libpcap还是PF_PACKET(数据链接套接字)来捕获数据包? 根据我的研究,主要由于其可移植性,几乎在所有地方都建议在PF_PACKET上使用libpcap. 但是,对于我当前的项目(在生产系统中使用的项目),可移植性根本不是问题,我只关心性能(速度,丢包率).我的程序在CentOS 5.10(内核2.6.18)上运行 据我所知,lib ..
发布时间:2020-04-23 10:36:47 服务器开发

Linux如何在x86-64中支持超过512GB的虚拟地址范围?

使用Linux的x86-64的用户虚拟地址空间为47位长.从本质上讲,这意味着Linux可以映射具有约128 TB虚拟地址范围的进程. 但是,令我感到困惑的是x86-64体系结构支持ISA为每个进程定义的4级层次结构页表(排列为基数树).页表的根最多只能映射512 GB的连续虚拟地址空间.那么Linux如何支持超过512GB的虚拟地址范围?每个过程是否使用多个页表?如果是,那么对于任何给定进 ..
发布时间:2020-04-23 10:35:32 服务器开发

将java进程锁定或固定到内存中

有没有办法将java进程锁定到内存中。 使用像mlock / mlockall这样的东西可以将进程的内存锁定到内存中,这样就不会将其换出。使用这种方法是否可以在调用java进程之前编写C包装器以将java进程锁定到内存中?如果是这样,包装器将如何调用java程序 - fork / clone / vfork / execl? 或者可能还有其他方法可以将java进程锁定到内存中? ..
发布时间:2019-01-02 10:19:50 Java开发

从Netfilter挂钩中扩展数据包头

我想在NF_HOOK_LOCAL_OUT内部的现有IP数据包上添加IP头。我面临的问题是skb扩展函数(例如copy / clone / expand / reallocate header)分配了一个新的sk_buff。我们不能返回这个新分配的指针,因为netfilter钩子函数不再(内核版本2.6.31)传递skb指针的地址(传递值)。我如何解决这个问题如下: 1.我使用skb_header ..
发布时间:2018-09-26 14:23:46 其它硬件开发

调用write()的长度为零的后果是什么?

在Linux write()函数中处于相当高的级别,它会过滤掉写入0个长度缓冲区的请求。这是有道理的。谁想要操作系统浪费它的时间钻进层只是为了确定没有工作要做? 嗯......我。 它与此相关问题;如果握手错误地址(在数据之前在总线上发送)会发出错误,那么发现bit-banged I2C驱动程序会给出一个可能有用的返回码。 可以在地址之后发送虚拟数据,但不能发送我正在使用的设备。 ..
发布时间:2018-08-24 17:45:01 其他开发

为什么在Linux中进行I / O是不可中断的?

背后的理由是什么?如果允许进行I / O的进程处理信号会有什么不良后果? 解决方案 现在我读过了由Maurice Bach撰写的“Unix操作系统的设计”一书让我自己回答这个问题。 简而言之,使I / O不可中断是为了尽快完成I / O任务,而不受信号的干扰。 我从书中获得的一些相关知识: “不间断”一词应指“不间断”睡觉”。当一个进程处于不间断睡眠状态时,它不会被信号唤 ..
发布时间:2018-08-24 17:18:30 服务器开发

需要提高嵌入式系统的Linux性能

我有一个基于ARM OMAP的嵌入式系统,其中1个GHZ处理器运行Linux 2.6.33交叉编译为CONFIG_PREEMPT。其中一个过程(过程1)至关重要,需要每4或8毫秒运行一次,这是可配置的。还有另一个进程(进程2)线程将图像传输到FTP或任何其他已配置的应用程序。为了触发时间关键过程1,我使用高分辨率定时器作为系统中具有最高实时优先级的单独线程(FIFO,比如60)。进程2的RT优先级 ..

指向头文件中__u32的指针

我需要传递一个像这样的指针 extern int Si4709_dev_chan_get(__ u32 *); 但是gcc抱怨丢失的括号。 Si4709_dev.h:130:error:expected')' 关于我能做什么的想法? -Earlence 解决方案 也许你需要为__u32包含包含 typedef 的头文件,这通 ..
发布时间:2018-06-06 19:50:26 服务器开发

级联git存储库,SoC Linux内核

我打开这个问题是为了更好地理解下面讨论类型的项目中的 git存储库依赖关系。 例如,OMAP或MSM SoC硬件平台从ARM架构与Linux内核开发的组织方式相同: Linus vanilla内核存储库>> ARM适配内核存储库>> vendor's SoC适配内核存储库。 “>>”表示直接关系在父克隆仓库之间。 因此,如果上述情况属实,则应该存在级联仓库。本地存储库是从供应商的 ..
发布时间:2018-04-27 21:37:20 其他开发

不能使用CONFIG_CC_STACKPROTECTOR_STRONG:-fstack-protector-strong不受编译器支持

我在我的笔记本电脑上运行Ubuntu 16.10; 我最近从 git 下载了Linux内核,但是当我试图编译它时从终端发出make命令。 这是给我的 “错误:无法使用CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong不受编译器支持“ 我该怎么做才能解决这个问题? 解决方案 见 this t ..
发布时间:2018-04-27 15:32:58 服务器开发

不要添加“+”到linux内核版本

图片名称:Linux下的Linux内核-2.6.39+ 如果我没有使用git,那么在没有任何加号的情况下,结束。 我知道这是通过脚本/ setlocalversion脚本完成的: 如果测试“$ CONFIG_LOCALVERSION_AUTO”=“y”;那么 #完全scm版本字符串 res =“$ res $(scm_version)” else #如果存 ..
发布时间:2018-04-27 14:00:09 服务器开发

Linux内核“历史”具有完整历史的git存储库

我想很多开发者喜欢在 git gui blame 的帮助下调查资源。正如为Linux- 2.6.12-rc2 (也可以在Github上镜像),它需要有特殊的历史Linux存储库用于此目的。 Linux-2.6.12-rc2 初始的git存储库构建。即使我们拥有它,我也不打扰完整的历史, 。如果我们愿意,我们可以创建一个单独的“历史”git 归档文件,同时,当导入到git空间时,它将 ..
发布时间:2018-04-26 20:24:22 服务器开发

如何直接从Linux内核GIT存储库中区分文件?

我希望能够直接从Linux Kernel GIT存储库中区分文件/目录,而无需下载完整源代码。 具体而言,我很感兴趣有两种可能的解决方案: 通过网络浏览器执行diff的功能(firefox) 一个用于Ubuntu的GUI实用程序,可以执行远程比较。 教程如何设置选项#2 编辑 作为我正在寻找的示例,我曾使用 CrossVC ,用于CVS回购上述任务。 在kernel.o ..
发布时间:2018-04-26 19:37:31 其他开发

Git的全球标签---显然不好,但为什么?

在他的 2005年电邮给Linux Kernel邮件列表中,Linus Torvalds非常强调git中的标签应该是私有的,并且在从其他人获取时不会自动包含: $ b blockquote> 拉正常头不能和必须 不更新标签。标签不是与树相关的 ,而且它们 让它们成为全球性而不是私人性的,它将从根本上使 不会被分发 和: 错误,错误,错误认为提取某人elses树 意味着您应 ..
发布时间:2018-04-26 19:34:12 其他开发