首页 > TAG信息列表 > linux-kernel

如何在Linux中以编程方式确定物理RAM的大小?

在命令行上,可以使用“免费”实用程序和“ cat / proc / meminfo”来查找. 从以下程序以编程方式找出Linux中物理RAM大小的不同方法是什么: >用户空间应用>内核模块 有哪些可用的API调用?解决方法: #include <unistd.h> long long physical_mem_bytes = (long long) sysconf (_SC_PH

两个mmaped文件上的sendfile()用法(Linux)

可以使用sendfile()linux syscall将文件的一部分从一个mmaped文件发送到另一个mmaped文件吗?解决方法:从sendfile(2)开始: Presently (Linux 2.6.9): in_fd, must correspond to a file which supports mmap()-like operations (i.e., it cannot be a socket); and out_fd must re

有关Unix / Linux内核编程的问题

我想了解有关可伸缩多处理器(smps)的linux / Unix内核编程.我发现了这本书UNIX(R)Systems for Modern Architectures http://www.amazon.com/UNIX-Systems-Modern-Architectures-Multiprocessing/dp/0201633388/ref=pd_rhf_p_t_3.自1994年发行以来,还有其他良好的资源或更好的书吗?

c-发送大量内容后,我的send()调用使我的程序完全停止.这怎么可能?

所以基本上我是用C制作一个在Linux上运行的MMO服务器.起初它可以正常工作,但在50个客户端的40秒后,它将完全暂停.当我调试它时,我发现基本上它停止响应之前打开的最后一帧是syscall(),此时它消失在内核中.一旦消失到内核中,它甚至不会返回任何值……这完全令人困惑. 50个客户端每25

如何在Linux中注册设备

我需要在Linux中注册一个新设备,但我注意到在内核2.6.34中未导出device_register函数…这可能是解决方案?解决方法:我相信您应该根据设备类型使用register_blkdev或register_chrdev.

在Linux内核中检测无限循环的简便方法

我刚刚花了2个小时的时间来尝试在修改Linux内核时发现错误,每次将模块连接到内核时,它都很好,但是当我断开连接时,鼠标停止工作,因此使用printk我发现了无限循环,我的问题是有人是否知道检测此类错误的好技术,有时很难找到此类循环,并且Linux变得不可预测,因此如何避免内核中的无限

如何使android打印出崩溃的系统应用程序的核心转储?

我正在美好的系统库世界中写一些东西,而libc崩溃了,我的库显然传递了错误的值. 有什么方法可以让Android为崩溃的应用程序生成核心转储,以便分解应用程序堆栈? 尤其是,如果有帮助,我会使system_server崩溃. 编辑:我的问题的要点是:当应用程序在类似libc的库中崩溃时,获取输出的逻辑删

两个相互依赖的Linux内核模块的结构?

在一个我参与的项目中,我们具有以下硬件设置: Linux PC ------> "Router" +----> "Device A" | +----> "Device B" Linux PC是标准的X86 PC. “路由器”是我们开发的硬件,已连接到系统中的其他硬件.在此示例

java-什么会导致JVM无法在负载下解析DNS?

我正在调查我们的服务问题,该服务无法解析负载下的s3存储桶名称. 我强调一个c1.medium ec2实例: root@ip-10-243-126-111:/mnt/log# uname -a Linux ip-10-243-126-111 2.6.35-30-virtual #56-Ubuntu SMP Mon Jul 11 23:41:40 UTC 2011 i686 GNU/Linux root@ip-10-243-126-111:/mnt

linux-文件所有者:组在setuid()之后不会在位置/ proc //更改吗?

我需要以root用户身份生成进程,然后将其特权授予非root用户,因此要实现此目的,我将setbit用于二进制文件并将所有者更改为root.然后我以非root用户身份生成该进程,并最初以root用户身份启动,在完成必要的任务后,我使用setuid(getuid())调用将其特权授予非root用户.发生的是/ proc /

无法理解Linux内核模块中read_proc的工作

我正在此page审查内核模块示例 程序中使用的read_proc如下: int fortune_read( char *page, char **start, off_t off, int count, int *eof, void *data ) { int len; if (off > 0) { *eof = 1; return 0; } /* Wrap-a

如何从用户空间C代码获取Linux内核模块列表?

我想通过C代码获取内核模块的列表,并在以后打印它们的版本. 在脚本中,这很简单: cat /proc/modules lsmod 然后运行找到的所有驱动程序: modinfo driver_name 通过C代码,我可以打开/ proc / modules,并在那里分析数据,但是有没有更简单的方法来读取此驱动程序列表?解决方法: From

在Linux中劫持应用程序和网络之间的通信

我有一个可以当作接入点的嵌入式系统.该系统中有一个程序运行,并与连接到该接入点的设备进行一些网络通信.它正在发送包含一些诊断信息(数据结构)的UDP数据包并接收命令.问题在于,有时该传出数据结构的某些字段未填充数据(例如,零或一些垃圾).我需要每次正确填充这些字段,并且我知

android-/proc/config.gz不存在

我有一个Sony XperiaP.我安装了一个自定义内核,我自己编译了该内核.现在我找不到它的config.gz.它不在/proc/config.gz中.我不确定在安装自定义内核之前它是否在那里.解决方法:请检查是否启用了“通过/proc/config.gz启用对.config的访问”(IKCONFIG_PROC)选项.

c-Linux上的ASLR限制

我尝试通过在process.c中修改arch_align_stack()并通过增加第二个模数参数来“改进”我自己的x86 32位计算机上的ASLR: if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space) sp -= get_random_int() % 8192; return sp & ~0xf; 但是我很快发现,对此进行

编写新系统调用时可用的功能

对于大学任务,我们必须向Linux内核添加系统调用.我有“你好,世界”没问题.就添加一个更复杂的调用而言,我知道(或至少认为)我不能使用像malloc这样的C函数,但是我想知道我可以使用syscall()来使用其他系统调用吗?解决方法:内核对几乎所有内容都有自己的特定调用.您无权访问系统调用

Linux-在编译内核时构建/ lib / modules / $(uname -r)/ build

我正在为嵌入式设备交叉编译3.4.0内核.然后,我想安装需要/lib/modules/3.4/build目录和子文件的compat-wireless驱动程序.谁能解释我如何建立该目录,以便当我执行INSTALL_MOD_PATH = newmodules进行modules_install时,它也将加载/ lib / modules / $(uname -r)/ build目录?我希望能

Linux-Binfmt-support-不允许我回显注册

我正在使用ubuntu linux.试图在binfmt中添加对ARM解释器的支持. 我收到权限被拒绝的错误. 刚刚在我的机器上为binfmt添加了支持:— sudo apt-get install binfmt-support 目录binfmt_misc中的ls:- ignite@ignite:/proc/sys/fs/binfmt_misc$ls python2.7 python3.2 register st

linux-内核级别系统调用fork,vfork的重要性

这个问题已经在这里有了答案:            >            The difference between fork(), vfork(), exec() and clone()                                    6个 在使用ltrace跟踪带有fork,vfork …的程序的系统调用时

使用LKM中的syscall表

我正在从Linux(3.x)的syscall表中重写SYS_READ,但是在卸载模块本身时遇到了一些麻烦. 我首先加载我的模块,该模块找到syscall表,然后启用RW,使用我自己的SYS_READ函数覆盖SYS_READ(实际上,除了调用原始SYS_READ以外,它不执行其他任何操作),然后等待片刻,然后卸载模块.在模块的unloa

Linux内核中wait_event和wake_up之间的竞争条件

我是内核新手.在阅读源代码时,我只是遇到了这个问题. 在实现wait_event()时,内核执行以下操作: ... prepare_to_wait(); /* enqueue current thread to the wait queue */ ... schedule(); /* invoke deactivate_task() inside, which will dequeue current thread from the runque

linux-在处理请求时将队列锁定在块设备驱动程序中的正确方法

我正在尝试为网络连接的硬盘编写设备驱动程序.我想知道锁定/解锁请求队列的正确方法是什么?在哪里? 澄清: >我使用blk_init_queue创建了一个队列,并将请求处理程序函数和我创建的一个锁(即信号灯)传递给该函数. >我的请求处理程序函数如下所示: struct request *req; int ret; while (

linux-了解/ proc / iomem

我正在查看“ / proc / iomem”条目,对此有疑问. 我的Linux PC运行Intel Xeon,并具有4GB的系统RAM. 我系统的/ proc / iomem条目看起来像 00000000-0000ffff : reserved 00010000-0009f3ff : System RAM 0009f400-0009ffff : reserved 000a0000-000bffff : PCI Bus 0000:00 000c0

linux-通过ASM代码处理syscall

我正在用此代码块替换/挂钩__NR_read sysall(该代码块已编译并作为操作码保存在内核模块的可执行内存中) push rbp; mov rbp, rsp; sub rsp, 64; //8 bytes for rax content + 48 bytes for 6 args + 8 bytes for syscall result mov [rsp], rax; mov [rsp - 8], rdi; mov [rsp -

linux-内核模块中的obj-m变量

在内核模块中,存在makefile obj-m变量.考虑以下: CUR = $(shell uname -r) DIR = /lib/modules/$(CUR)/build PWD = $(shell pwd) obj-m := m1.o m2.o default: $(MAKE) -C $(DIR) SUBDIRS=$(PWD) modules 在此Makefile中,默认目标包含一个调用内核子make的配方.