据我所知,Linux内核的内核线程堆栈大小有限,对于大多数架构来说都是4K或8K。我想知道如何触摸它? 我使用kthread_run()创建一个内核线程theKernelThread()并分配大小超过8K的堆栈并运行它,但它运行良好。为什么?如何制作一个触及限制并可能导致内核恐慌的代码?
static int theKernelThread(void *pUsrdata)
{
int test[82000];
static int count;
while(1)
{
count++;
test[count % 81999] = count % 0xff;
printk("tomxue: test=0x%x, count=%d\n", test[count], count);
...
msleep(2);
}
}