当前位置: 技术问答>linux和unix
再问一下各位大哥,如果编网卡驱动的话是不是需要懂得不少汇编?
来源: 互联网 发布时间:2016-12-24
本文导语: 再问一下各位大哥,如果编网卡驱动的话是不是需要懂得不少汇编? 每次看到汇编都抱头鼠窜啊。。。。 | 这个你可以看一下kernel/driver/net/下面的一些代码. kernel中有专门的写寄存器代码. ...
再问一下各位大哥,如果编网卡驱动的话是不是需要懂得不少汇编?
每次看到汇编都抱头鼠窜啊。。。。
每次看到汇编都抱头鼠窜啊。。。。
|
这个你可以看一下kernel/driver/net/下面的一些代码.
kernel中有专门的写寄存器代码. 汇编都已经被封闭起来了.
上面的iowrite32 其实是一个宏定义,不同板子,定义不一样.
如arm是
#define iowrite32(v,p) ({ __iowmb(); (void)__raw_writel((__force __u32)cpu_to_le32(v), p); })
后面的就不展开了, 楼主可以自行参看源码.
kernel中有专门的写寄存器代码. 汇编都已经被封闭起来了.
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); })
后面的就不展开了, 楼主可以自行参看源码.
|
不需要,Linux驱动几乎都是纯C