+ -
当前位置:首页 → 问答吧 → 再问一下各位大哥,如果编网卡驱动的话是不是需要懂得不少汇编?

再问一下各位大哥,如果编网卡驱动的话是不是需要懂得不少汇编?

时间:2011-08-23

来源:互联网

再问一下各位大哥,如果编网卡驱动的话是不是需要懂得不少汇编?
每次看到汇编都抱头鼠窜啊。。。。

作者: wyhhxx17   发布时间: 2011-08-23

不需要,Linux驱动几乎都是纯C

作者: jackyjkchen   发布时间: 2011-08-23

这个你可以看一下kernel/driver/net/下面的一些代码.
kernel中有专门的写寄存器代码. 汇编都已经被封闭起来了.
C/C++ code

static void sc92031_enable_interrupts(struct net_device *dev)
{
    struct sc92031_priv *priv = netdev_priv(dev);
    void __iomem *port_base = priv->port_base;

    tasklet_enable(&priv->tasklet);

    atomic_set(&priv->intr_mask, IntrBits);
    wmb();

    iowrite32(IntrBits, port_base + IntrMask);
    mmiowb();
}


上面的iowrite32 其实是一个宏定义,不同板子,定义不一样.
如arm是
#define iowrite32(v,p) ({ __iowmb(); (void)__raw_writel((__force __u32)cpu_to_le32(v), p); })
后面的就不展开了, 楼主可以自行参看源码.

作者: zmlovelx   发布时间: 2011-08-23

热门下载

更多