![](https://img-blog.csdnimg.cn/20190520213037820.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux学习笔记
个人linux学习之路,记录个人Linux学习心得
小小城御园
生命在于折腾,知识在于积累
展开
-
linux内核态文件操作函数
1.打开文件struct file *filp_open(const char *filename, int flags, int mode)filename:要打开的文件的路径 例:“/dev/ttyGS0”flags:打开文件的方式O_CREAT 创建O_RDWR 读写 O_RDONLY 只读O_WRONLY 只写O_TRUNC 清空...原创 2018-12-18 23:03:48 · 511 阅读 · 0 评论 -
set_fs和get_fs函数在vfs_read和vfs_write使用时的作用
linux内核中文件的操作函数为: ssize_t vfs_read(struct file* filp, char __user* buffer, size_t len, loff_t* pos); ssize_t vfs_write(struct file* filp, const char __user* buffer, size_t len, loff_t* pos);注意...原创 2018-12-18 22:36:10 · 1800 阅读 · 0 评论 -
驱动编译进内核没问题,编译成模块报函数未定义错误
报错形式如下所示:其中test为函数名WARNING: "test"[*******.ko] undefined!解决办法为:将函数test导出符号到内核符号表。可以使用如下两种方式EXPORT_SYMBOL(符号名);//函数名 = 符号名EXPORT_SYMBOL_GPL(符号名);导出的符号将可以被其他模块使用,使用前声明一下即可。EXPORT_SYMBOL_GPL...原创 2018-12-13 22:12:16 · 1898 阅读 · 0 评论 -
tty驱动框架分析
tty框架如下图所示:整个 uart 框架大概的样子如上图所示,大致可以分为四层,一层是下层我们的串口驱动层,它直接与硬件相接触,我们需要填充一个 struct uart_ops 的结构体,再向上是tty核心层,在向上是线路规程,再向上是是直接和用户空间对接的,它们每一层都有一个 Ops 结构,用户空间通过tty注册的字符设备节点来访问,这么说来如上图所示涉及到了4个 ops 结构了,层层...原创 2018-11-25 23:05:37 · 1676 阅读 · 0 评论 -
tty_operations结构体之uart_ops分析
static const struct tty_operations uart_ops = { .open = uart_open, .close = uart_close, .write = uart_write, .put_char = uart_put_char,//单字符写入函数 .flush_chars = uart_flush_chars, .write_room...原创 2018-11-15 23:22:30 · 2150 阅读 · 0 评论 -
uart_ops结构体分析之amba_pl011_pops
static struct uart_ops amba_pl011_pops = { .tx_empty = pl01x_tx_empty, //串口的tx_fifo是否为空 .set_mctrl = pl011_set_mctrl, //设置串口的modem控制,xyz .get_mctrl = pl01x_get_mctrl, ...原创 2018-11-15 23:09:13 · 1669 阅读 · 0 评论 -
tty驱动之tty_operations结构体详解
struct tty_operations { struct tty_struct * (*lookup)(struct tty_driver *driver, struct inode *inode, int idx);//返回对应的tty设备, 若为NULL则返回ERR_PTR, 在tty_mutex函数中调用 ...原创 2018-11-13 22:49:54 · 2149 阅读 · 1 评论 -
linux如何判断哪一个串口是当前正在使用
使用cat /proc/tty/driver/serialserinfo:1.0 driver revision:0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 CTS|DSR|CD1: uart:16550A port:000002F8 irq:3 tx:0 rx:0 CTS|DSR|CD2: uart:unknown port...原创 2018-11-11 20:36:09 · 9588 阅读 · 3 评论