标签: linux-kernel

Linux 内核中进程的年龄

给予struct task_struct合作。确定进程有多老的最佳方法是什么?

用于task_struct保存指向其下一个最小的兄弟姐妹和最大的孩子的特定指针。这在某些内核版本中似乎不再可用。

我专门使用 Android goldfish 内核。我一直在尝试学习如何使用该list_head结构来迭代进程,但我似乎无法弄清楚如何确定每个子进程或兄弟进程的年龄。

那么,什么成员或用法task_struct可以做到这一点?

c linux task linux-kernel android-kernel

0
推荐指数
1
解决办法
2305
查看次数

将宏 container_of 与结构成员一起使用

我试图理解一些专有代码,其中使用单个参数调用container_of,该参数是返回结构的成员结构。

struct want{
.
.
struct member_used;
};
member_struct *ptr_member_used;
struct want *ret_struct container_of(ptr_member_used);
Run Code Online (Sandbox Code Playgroud)

我检查了以下链接

http://codinghighway.com/2013/08/10/the-magical-container-of-macro-and-its-use-in-the-linux-kernel/

关于linux中container_of宏的疑问

了解Linux内核中的container_of宏

什么时候使用container_of宏?

但所有这些链接都使用三个参数,但没有一个使用结构成员来检索相应的结构。

我担心的是,container_of 宏如何仅通过传递结构成员来返回相应的结构?

程序在内核 3.13.0 和 gcc 4.8.4 的 64 位 ubuntu 14.0.4 上正确运行

c linux-kernel data-structures

0
推荐指数
1
解决办法
3118
查看次数

为什么内核无法优雅地处理崩溃

对于用户模式应用程序,不正确的页面访问除了应用程序崩溃之外不会造成很多麻烦,并且可以通过异常处理来优雅地完成应用程序崩溃。为什么我们不能对内核崩溃做同样的事情呢?因此,当内核模块尝试访问某些无效地址时,就会出现页面错误并导致内核崩溃。为什么不能像卸载故障模块那样优雅地处理它。

更具体地说,我有兴趣知道这是完全不可能还是可能。我不愿意知道它在使用该系统时可能带来的困难。我知道驱动程序崩溃会导致设备无法使用,我对此表示同意。唯一的问题是是否可以优雅地卸载有故障的驱动程序。

linux kernel linux-kernel

0
推荐指数
1
解决办法
1754
查看次数

IRQ 上下文中的 PID

在下面的 2 种情况下,“current->pid”打印什么

1) 硬IRQ上下文

2) 软IRQ上下文

我知道 IRQ 上下文和进程上下文是不同的,并且 PID 在 IRQ 上下文的情况下必须无效。但是当尝试在 IRQ 上下文中打印“current->pid”时,它正在打印一些有效的 PID,因此产生了疑问。请澄清。

谢谢你,

戈皮纳斯。

irq linux-device-driver linux-kernel softirq

0
推荐指数
1
解决办法
792
查看次数

将 nokaslr 添加到内核命令行

我正在尝试使用 qemu 和 gdb 调试 Linux 内核。问题是 gdb 不会在断点处停止。我搜索了一下,发现关闭 kASLR 可能会有所帮助,因为 kASLR 会混淆 gdb。

-- 在客户机上安装该内核。

+- 在来宾上安装该内核,通过在内核命令行中添加“nokaslr”来关闭 KASLR。

现在我不知道将 nokaslr 添加到命令行意味着什么以及执行此操作的方法。任何想法?

linux debugging gdb qemu linux-kernel

0
推荐指数
1
解决办法
6402
查看次数

为什么 /arch/x86/boot/header.S 在汇编中?

为什么这个文件是用汇编语言编写的,而它可以简单地使用更简单的语言(如 c)?为什么没有人仍然尝试用 c 重写它?

c assembly operating-system linux-kernel

0
推荐指数
1
解决办法
251
查看次数

PTI 启用时的用户空间 CR3 值

在内核模式下执行时,启用页表隔离(PTI)时有什么方法可以获取用户空间CR3值吗?

x86 cpu-registers linux-kernel

0
推荐指数
1
解决办法
501
查看次数

如果我从源代码构建linux内核,默认情况下它内部是否包含initramfs?

我想在构建内核之前,我必须使用 busybox 来填充 init 文件系统,并使用 cpio 来制作 initramfs 映像并将其添加到 Linux 内核源代码树中(例如在 arch/arm64/boot 中?)。但是如果我跳过这个过程并只构建内核,它是否包含一种默认的 initramfs ?或者它有空的 initramfs 吗?(网上的很多例子都没有显示busybox程序..)

build linux-kernel

0
推荐指数
1
解决办法
4480
查看次数

有人可以解释这段 linux 设备驱动程序代码中的 C 语法吗?

具体来说,(*llseek) 术语是对象转换吗?这个语法 < ( * < name > ) (...) > 是否有一个术语,我可以谷歌搜索它以了解更多信息。

为什么“struct file *”没有变量名,以及如何访问它(假设我需要或允许访问它)。同样,其余参数没有变量名“loff_t,int”,这是为什么呢?最后, __user (在这个例子中或 __ 通常)是一个宏吗?

 struct file_operations {
        loff_t (*llseek) (struct file *, loff_t, int);
        ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
Run Code Online (Sandbox Code Playgroud)

谢谢!

c linux-device-driver linux-kernel

0
推荐指数
1
解决办法
65
查看次数

如何在内核模块中使用 system() 因为 stdlib.h 不能在内核程序中使用?

在 Linux 中开发内核模块时,不允许使用 C 标准库。但是,如果我需要使用一些常用功能,例如system(),我该如何实现?

c linux linux-kernel

0
推荐指数
1
解决办法
77
查看次数