Linux kernel 如何知道内核缓冲区是否来自堆栈?

Linux kernel 如何知道内核缓冲区是否来自堆栈?,linux-kernel,Linux Kernel,是否有任何方法可以确定作为void*指针接收的缓冲区是来自堆栈还是已使用任何其他mechansim(vmalloc、kmalloc等)分配 换句话说,是否有类似于is_vmalloc_addr的API或技巧来知道缓冲区是否来自堆栈?请参见对象在堆栈上()。希望这能有所帮助。你为什么需要知道这一点?一般来说,你应该只拥有你的数据,做你想做的事情,而不是基于数据的分配位置。。。即使有解决方案,我也怀疑它是否可以移植。投票关闭。我想将缓冲区传递给另一个拥有自己内存空间的组件(MMU等)。当前的实现使用

是否有任何方法可以确定作为void*指针接收的缓冲区是来自堆栈还是已使用任何其他mechansim(vmalloc、kmalloc等)分配


换句话说,是否有类似于is_vmalloc_addr的API或技巧来知道缓冲区是否来自堆栈?

请参见
对象在堆栈上()。希望这能有所帮助。

你为什么需要知道这一点?一般来说,你应该只拥有你的数据,做你想做的事情,而不是基于数据的分配位置。。。即使有解决方案,我也怀疑它是否可以移植。投票关闭。我想将缓冲区传递给另一个拥有自己内存空间的组件(MMU等)。当前的实现使用分配了kmalloc、vmalloc等的缓冲区。。。但不使用堆栈中的缓冲区。问题有两个方面:我希望能够将不支持作为临时解决方案返回,并调试此行为。我不明白,如果这两个组件都有自己的内存地址,为什么它会与从
kmalloc()/vmalloc()分配的地址一起工作?那么,您是如何共享虚拟地址的呢?每个世界都在自己的虚拟内存空间中映射相同的物理页(对应于缓冲区),并具有相同的缓存/诸如此类的属性。看起来不错。我不知道我怎么会错过这个。我试试看。谢谢