编译 linux 模块时确定架构

Determine architecture when compiling linux module

我正在编写一个内核模块,其中有以下代码:

dma_dev->coherent_dma_mask = DMA_BIT_MASK(64);

我并不总是想要 64:当我针对 ARM 时,我希望它是

dma_dev->coherent_dma_mask = DMA_BIT_MASK(32);

基本上,现在我想要:

#ifdef x86_64
    dma_dev->coherent_dma_mask = DMA_BIT_MASK(64);
#else
    dma_dev->coherent_dma_mask = DMA_BIT_MASK(32);
#endif

我怎样才能实现这样的目标?

CONFIG_ 个定义。这样的东西可能符合您的需求:

#if defined(CONFIG_X86_64)
    dma_dev->coherent_dma_mask = DMA_BIT_MASK(64);
#else
    dma_dev->coherent_dma_mask = DMA_BIT_MASK(32);
#endif

CONFIG_ARM(对于 32 位)、CONFIG_ARM64 和类似的选项也可能派上用场。