编译linux模块时确定架构

时间:2017-10-12 19:57:51

标签: linux linux-kernel linux-device-driver

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

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

我怎样才能达到这样的目标?

1 个答案:

答案 0 :(得分:0)

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_ARM32CONFIG_ARM64和类似的选项也可以派上用场。