我正在编写一个小型内核模块,专门设计用于使用内核的 key 保留服务访问特定 key 。由于我找不到一个简单的函数来返回给定 ID 的 key 内容,因此我不得不求助于 kernel documentation 中概述的 request_key
。 .
这一行给出了错误:
struct key *my_key = request_key(&key_type_user, "test key", NULL);
我引用了正确的 key 类型,但仍然收到此错误。 security/keys/request_key.c中的函数我的代码应该调用已声明:
struct key *request_key(struct key_type *type,
const char *description,
const char *callout_info)
我没有看到任何关于 *type
需要是常量的内容。我读过该错误消息可能与 C 部分关于什么使某些内容“恒定”的虚假广告有关,但我看不出这与上述函数有何关系。有什么帮助吗?
最佳答案
您缺少向我们展示声明的上下文,但从您得到的错误来看,我猜测它在文件范围内,声明了全局。像这样的静态分配对象是在编译时初始化的,因此您不能使用函数调用和其他运行时构造来初始化它。
关于无法理解 "error: initializer element is not constant"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015367/