知道操作结构的填充位置

时间:2015-01-18 01:10:42

标签: c linux-kernel

我目前正在尝试编写一个Linux驱动程序,为此我必须了解一些api以充分利用它们。我常常遇到一种模式,在这种模式中我开始挖掘功能并最终在函数读取的位置:

returnType OperationX(args...) {
    ...
    struct operations_t operations = get_operations();
    if(operations->X)
        return operations->X(args...)

}

基本上get_operations()返回一个指向全局结构的指针,该结构包含一个指向运行该操作的实际函数的指针。

我觉得使用linux cross reference挖掘不同的地方然后实际了解实际发生了哪些任务非常繁琐。有更好的更快的方式吗?

示例是dma mapping

1 个答案:

答案 0 :(得分:1)

git grep和cscope是你最好的朋友。

顺便说一句,DMA操作由平台代码或IOMMU实现填充。我敢打赌你可能已经使用了lib / swiotlb.c。