tty.c 1.8 KB

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