Hee*_*ryu 4 c static-variables
将指向静态结构的指针传递给函数是否安全?
我有这样的事情:
mymodule.c:
static MYEVENT_STRUC_T event;
uint_32 _myRtos_set_event(MYEVENT_STRUCT_T* event_ptr, uint_32 mask);
uint_32 mymodule_set_event(uint_32 event_mask){
/* Kernel function */
/* Defined outside mymodule.c,*/
/* Is it safe to call it with &event? */
return _myRtos_set_event(&event, event_mask);
}
Run Code Online (Sandbox Code Playgroud)
Era*_*man 11
这很安全.static并不意味着"不能在模块外部使用",而是"不能在模块外部引用",即符号本身不会被导出,但变量仍然存在于进程的内存中也可以在模块之间使用.
我唯一不确定的是,我不确定通过指针将数据从用户模式传递到内核模式是否安全,如果这就是你正在做的事情.如果我没记错的话,你应该调用一些函数将内存从用户空间复制到内核空间.但不完全确定.