我正在解释生成的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次时,内部发生了什么?有人可以提供一些代码示例来理解这一点吗?提前致谢