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 // }