最近写Linux驱动遇到了writel 和WRITE,他们在驱动里都没有定义难道是系统自带的?本人菜鸟一个忘高手指点

WRITE(pio,PIO_ASR,(pio->PIO_ASR||0x0000000f));#defineUART_PUT_CR(v)writel(v,UART_VIR_... WRITE(pio, PIO_ASR, (pio->PIO_ASR||0x0000000f));
#define UART_PUT_CR(v) writel (v, UART_VIR_BASE + ATMEL_US_CR)
#define UART_GET_MR() readl(UART_VIR_BASE + ATMEL_US_MR)
最近看驱动遇到两个write:一个writel一个WRITE在驱动力都没有对他们定义难道这是系统自带的,这应该不是指字符设备驱动的那俩函数吧,有点困混,想哪位大哥指点小弟下
我看JONATHAN CORBET,ALESSANDRO RUBINI&GREG KROAH-HARTMAN写的“LINUX DEVICE DRIVERS”里怎么也有writel呢,在P238页我也没找到他是哪来的,应该不会指的
static ssize_t globalvar_read(struct file *filp, char *buf, size_t len, loff_t *off)和
static ssize_t globalvar_write(struct file *filp, const char *buf, size_t len, loff_t *off)吧
展开
 我来答
eeko2005
2010-09-08 · TA获得超过1357个赞
知道小有建树答主
回答量:825
采纳率:100%
帮助的人:326万
展开全部
在arch/alpha/kernel/io.c中有
188 void writel(u32 b, volatile void __iomem *addr)
189 {
190 __raw_writel(b, addr);
191 mb();
192 }

129 void __raw_writel(u32 b, volatile void __iomem *addr)
130 {
131 IO_CONCAT(__IO_PREFIX,writel)(b, addr);
132 }

在对应的io.h中的定义如下:
134 #define IO_CONCAT(a,b) _IO_CONCAT(a,b)
135 #define _IO_CONCAT(a,b) a ## _ ## b

其实是内核的东西,由于你是写驱动不是写内核,知道是往某个地址写数据就是了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式