我正在研究一个智能手机项目。在编译过程中,它为用户空间构建安装内核头文件。
为什么用户空间应用程序需要内核头文件?
有人可以指导我完成编译linux内核的过程,
/usr/src/linux/我需要编译什么? 编译内核的步骤是:
cd /usr/src/linux make bzImage make modulesmake modules_installcd arch/i386/bootcp bzImage /boot/vmlinuz-"linux version" cd /bootmkinitrd "the image".img "version ..." reboot 有问题的步骤是make modules和make modules_install.
我想知道使用数值系统调用是否有任何意义?
例如,取wait(4)或exit(3).我希望链接到这些的一些文档或解释.
int 0x80是一个系统调用,它在hexa中也是128.为什么内核使用int 0x80作为中断,当我声明int x时,他知道它只是一个名为x的整数,反之亦然?
我正在浏览 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) 内核是否提供任何保护?因为当我们尝试使用来自用户空间的malloc()分配内存时,内核允许分配大约124 MB的内存,当我们尝试写入内存时,内核崩溃了.如果有内核内存区域的保护,这不会发生
我尝试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)
如何从内核空间将每一行复制到用户空间?