标签: linux-kernel

为什么用户空间应用程序需要内核头文件?

我正在研究一个智能手机项目。在编译过程中,它为用户空间构建安装内核头文件。

为什么用户空间应用程序需要内核头文件?

smartphone linux-kernel

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

编译linux内核

有人可以指导我完成编译linux内核的过程,

  1. 如果我改变了一些文件,/usr/src/linux/我需要编译什么?
  2. 我什么时候还需要编译内核模块(如果你可以列出那些很好的目录/文件)
  3. 如果我想添加一个对system_call_table的调用,即条目号#240,我为该条目写了一个.c,.h文件,我把它放在哪里?

编译内核的步骤是:

  • cd /usr/src/linux
  • make bzImage
  • make modules
  • make modules_install
  • cd arch/i386/boot
  • cp bzImage /boot/vmlinuz-"linux version"
  • cd /boot
  • mkinitrd "the image".img "version ..."
  • reboot

有问题的步骤是make modulesmake modules_install.

linux linux-device-driver linux-kernel

-1
推荐指数
1
解决办法
575
查看次数

使用带有数值的系统调用有什么重要意义?

我想知道使用数值系统调用是否有任何意义?
例如,取wait(4)exit(3).我希望链接到这些的一些文档或解释.

linux system-calls wait linux-device-driver linux-kernel

-1
推荐指数
1
解决办法
63
查看次数

内核如何知道"int 0x80"和"int x"之间的区别

int 0x80是一个系统调用,它在hexa中也是128.为什么内核使用int 0x80作为中断,当我声明int x时,他知道它只是一个名为x的整数,反之亦然?

system-calls linux-kernel

-1
推荐指数
1
解决办法
227
查看次数

在 Linux 内核代码中使用 goto 没有意义

我正在浏览 Linux 源代码,在这里我偶然发现了这个功能:

static int check_free_space(struct bsd_acct_struct *acct)
{
    struct kstatfs sbuf;

    if (time_is_after_jiffies(acct->needcheck))
        goto out;

    /* May block */
    if (vfs_statfs(&acct->file->f_path, &sbuf))
        goto out;

    if (acct->active) {
        u64 suspend = sbuf.f_blocks * SUSPEND;
        do_div(suspend, 100);
        if (sbuf.f_bavail <= suspend) {
            acct->active = 0;
            pr_info("Process accounting paused\n");
        }
    } else {
        u64 resume = sbuf.f_blocks * RESUME;
        do_div(resume, 100);
        if (sbuf.f_bavail >= resume) {
            acct->active = 1;
            pr_info("Process accounting resumed\n");
        }
    }

    acct->needcheck = jiffies + ACCT_TIMEOUT*HZ;
out: …
Run Code Online (Sandbox Code Playgroud)

c goto linux-kernel

-1
推荐指数
1
解决办法
358
查看次数

从用户空间通过malloc()分配内核内存的问题?

内核是否提供任何保护?因为当我们尝试使用来自用户空间的malloc()分配内存时,内核允许分配大约124 MB的内存,当我们尝试写入内存时,内核崩溃了.如果有内核内存区域的保护,这不会发生

c linux-kernel

-3
推荐指数
1
解决办法
999
查看次数

如何在内核程序中使用copy_to_user()?

我尝试copy_to_user()在循环中使用.

for_each_process(p) {
    copy_to_user(buf, "data of p", len);
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到的输出是不同的.它只有用户空间中的最后一行数据,例如

#Data expected to copy to user space

123 1234 12 21
1243 124 423 12
1234 422 42 423

#Current Output:
1234 422 42 423
Run Code Online (Sandbox Code Playgroud)

如何从内核空间将每一行复制到用户空间?

c kernel-module linux-kernel userspace

-5
推荐指数
1
解决办法
515
查看次数