我在Linux内核v5.6中向prctl(2)系统调用添加了一个新选项。在用我的更改编译内核之后,当我用数字调用prctl (即prctl(59, arg1, arg2, arg3, arg4))时,我能够从用户空间触发新选项对进程的影响。但是,当我为include/uapi/linux/prctl.h中的选项创建为#define PR_NEW_OPTION 59的宏定义时,在编译用户空间代码时会出现以下错误:
error: ‘PR_NEW_OPTION’ undeclared (first use in this function); did you mean ‘PR_SET_SECCOMP
root@heena:/usr/src# ls
linux-headers-3.8.0-29 linux-headers-3.8.0-29-generic
此外:
root@heena:/# uname -a
Linux heena 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013 i686 i686 i386 GNU/Linux
问题1:为什么/usr中有这两个linux文件夹?
问题2:泛型版本的含义是什么?看来我的版本是通用的。
可能重复: 无法启动,因为:内核恐慌-不是同步:试图杀死init!
我更新了Ubuntu,当我重新启动时,它不会启动。我得到一个带有错误Kernel panic - not syncing:Attempted to kill init的黑色屏幕
我使用Ubuntu 12.04,我的linux映像是3.2.0-33-generic-pae,恢复模式进入相同的错误(Kernel panic - not syncing:Attempted to kill init),Ubuntu也升级了我以前的linux版本,它们都出现了相同的错误。
我试图重新编译内核(遵循官方的Arch指南:https://wiki.archlinux.org/title/Kernel/Traditional_编译),但是每次我收到编译错误时:
In file included from help.c:12:
In function ‘xrealloc’,
inlined from ‘add_cmdname’ at help.c:24:2:
subcmd-util.h:56:23: error: pointer may be used after ‘realloc’ [-Werror=use-after-free]
56 |
我有一个关于linux设备驱动程序的一般性问题。更常见的情况是,我弄不清楚在linux设备驱动程序中允许或不允许执行哪些操作?
是否有任何规则或查找列表可遵循?
例如,下面的例子是不允许的?
msleep(1000);
al = kmallock(sizeof(val));
printk(KERN_ALERT "faild to print\n";
ret = adc_get_val()*0.001;