小编Joh*_*lvr的帖子

Linux堆栈大小

我正在寻找linux内核中堆栈的良好描述,但我发现很难找到任何有用的东西.

我知道大多数系统的堆栈限制为4k,其他系统的堆栈限制为8k.我假设每个内核线程/下半部分都有自己的堆栈.我也听说如果一个中断发生,它会使用当前线程的堆栈,但是我找不到任何关于这个的文档.我正在寻找的是如何分配堆栈,如果有任何好的调试例程(我怀疑特定问题的堆栈溢出,我想知道是否有可能将内核编译为警察堆栈大小等).

linux linux-device-driver linux-kernel

38
推荐指数
3
解决办法
4万
查看次数

LINUX:静态链接模块加载的顺序

如果我有两个静态链接的模块.一个模块的module_init函数依赖于已经运行的另一个模块的module_init函数.有没有办法强制一个模块在另一个模块之前加载?

另外,第一个模块的init函数是否可以在调用第二个模块之前完成?

最后,如果上面的答案为NO,那么同步两个模块init调用的推荐方法是什么,以确保我不会遇到问题?

module linux-kernel

12
推荐指数
2
解决办法
5199
查看次数

在宏中使用({...})括号来吞下分号

通常,在宏中,您会看到人们使用a do { ... } while(0)来吞下分号.我刚刚遇到了一个他们使用的例子({ ... }),它似乎不仅吞下了分号,而且似乎也允许你返回一个值:

#define NEW_MACRO()  ({ int x = 1; int y = 2; x+y; })

 if(1) 
   val = NEW_MACRO(); 
 else 
   printf("this never prints");`
Run Code Online (Sandbox Code Playgroud)

val会出来3.我找不到任何关于它的文档,所以我对它有点警惕.这种方法有什么问题吗?

c macros

6
推荐指数
1
解决办法
2588
查看次数

标签 统计

linux-kernel ×2

c ×1

linux ×1

linux-device-driver ×1

macros ×1

module ×1