
最近写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)吧 展开
#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)吧 展开
展开全部
在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
其实是内核的东西,由于你是写驱动不是写内核,知道是往某个地址写数据就是了
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
其实是内核的东西,由于你是写驱动不是写内核,知道是往某个地址写数据就是了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询