1 #include <filesystem/vfs/VFS.h>
2 #include "tty.h"
3 
4 static struct devfs_private_inode_info_t * tty_inode_private_data_ptr;  // 由devfs创建的inode私有信息指针
5 static int tty_private_data;
6 
7 /**
8  * @brief 打开tty文件
9  *
10  * @param inode 所在的inode
11  * @param filp 文件指针
12  * @return long
13  */
tty_open(struct vfs_index_node_t * inode,struct vfs_file_t * filp)14 long tty_open(struct vfs_index_node_t *inode, struct vfs_file_t *filp)
15 {
16     filp->private_data = &tty_private_data;
17     return 0;
18 }
19 
20 /**
21  * @brief 关闭tty文件
22  *
23  * @param inode 所在的inode
24  * @param filp 文件指针
25  * @return long
26  */
tty_close(struct vfs_index_node_t * inode,struct vfs_file_t * filp)27 long tty_close(struct vfs_index_node_t *inode, struct vfs_file_t *filp)
28 {
29     filp->private_data = NULL;
30     return 0;
31 }
32 
33 /**
34  * @brief tty控制接口
35  *
36  * @param inode 所在的inode
37  * @param filp tty文件指针
38  * @param cmd 命令
39  * @param arg 参数
40  * @return long
41  */
tty_ioctl(struct vfs_index_node_t * inode,struct vfs_file_t * filp,uint64_t cmd,uint64_t arg)42 long tty_ioctl(struct vfs_index_node_t *inode, struct vfs_file_t *filp, uint64_t cmd, uint64_t arg)
43 {
44     switch (cmd)
45     {
46     default:
47         break;
48     }
49     return 0;
50 }
51 
52 /**
53  * @brief 读取tty文件的操作接口
54  *
55  * @param filp 文件指针
56  * @param buf 输出缓冲区
57  * @param count 要读取的字节数
58  * @param position 读取的位置
59  * @return long 读取的字节数
60  */
tty_read(struct vfs_file_t * filp,char * buf,int64_t count,long * position)61 long tty_read(struct vfs_file_t *filp, char *buf, int64_t count, long *position)
62 {
63     return 0;
64 }
65 
66 /**
67  * @brief tty文件写入接口(无作用,空)
68  *
69  * @param filp
70  * @param buf
71  * @param count
72  * @param position
73  * @return long
74  */
tty_write(struct vfs_file_t * filp,char * buf,int64_t count,long * position)75 long tty_write(struct vfs_file_t *filp, char *buf, int64_t count, long *position)
76 {
77     return 0;
78 }
79 
80 struct vfs_file_operations_t tty_fops={
81     .open = tty_open,
82     .close = tty_close,
83     .ioctl = tty_ioctl,
84     .read = tty_read,
85     .write = tty_write,
86 };
87 
88 // void tty_init(){
89 //     //注册devfs
90 //     devfs_register_device(DEV_TYPE_CHAR, CHAR_DEV_STYPE_TTY, &tty_fops, &tty_inode_private_data_ptr);
91 //     kinfo("tty driver registered. uuid=%d", tty_inode_private_data_ptr->uuid);
92 // }