了解Linux模块代码段

时间:2016-08-15 18:02:53

标签: c linux-kernel

我正在解释生成的linux内核模块的中间代码。但我无法理解pci_set_dma_mask

的以下代码行

if ((err = pci_set_dma_mask(pdev, (((32) == 64) ? ~0ULL : ((1ULL<<(32))-1))))) {
(void)((NETIF_MSG_PROBE & nic->msg_enable) && printk("<3>" "e100" ": " "%s: %s: " "No usable DMA configuration, aborting.\n", nic->netdev->name, func)); }

我的理解是,由于32!= 64,((1ULL<<(32))-1)将执行。但1ULL是什么样的价值?当我们离开1ULL 32次时,内部发生了什么?有人可以提供一些代码示例来理解这一点吗?提前致谢

0 个答案:

没有答案