@@ -18,83 +18,23 @@ static int stdout_write (inode* node, file* f, void* buf, size_t len) {
1818 return len ;
1919}
2020
21- static int stderr_write (inode * node , file * f , void * buf , size_t len ) {
22- (void )node , (void )f ; // args not used
23- bool stdio_buf = get_update_on_putch ();
24- set_update_on_putch (false);
25-
26- for (size_t i = 0 ; i < len ; i ++ )
27- putchar (((char * )buf )[i ]);
28-
29- update ();
30- set_update_on_putch (stdio_buf );
31- return len ;
32- }
33-
34- int register_stdin (struct file * f ) {
35- if (!f ) return - EINVARG ;
36-
37- inode * new_inode = kmalloc (sizeof (inode ));
38- if (!new_inode ) return - ENOMEM ;
39-
40- kmemset (new_inode , 0 , sizeof (inode ));
41-
42- new_inode -> i_cnt = 1 ;
43- new_inode -> i_type = CHAR_DEV ;
44-
45- f -> f_inode = new_inode ;
46-
47- return 0 ;
48- }
49-
50- int register_stdout (struct file * f ) {
51- if (!f ) return - EINVARG ;
52-
53- inode * new_inode = kmalloc (sizeof (inode ));
54- if (!new_inode ) return - ENOMEM ;
55-
56- file_operations * stdout_fops = kmalloc (sizeof (file_operations ));
57- if (!stdout_fops ) {
58- kfree (new_inode );
59- return - ENOMEM ;
60- }
61-
62- kmemset (new_inode , 0 , sizeof (inode ));
63- kmemset (stdout_fops , 0 , sizeof (file_operations ));
64-
65- stdout_fops -> write = stdout_write ;
66-
67- new_inode -> i_cnt = 1 ;
68- new_inode -> i_type = CHAR_DEV ;
69-
70- f -> f_inode = new_inode ;
71- f -> f_fops = stdout_fops ;
72-
73- return 0 ;
74- }
75-
76- int register_stderr (struct file * f ) {
77- if (!f ) return - EINVARG ;
78-
79- inode * new_inode = kmalloc (sizeof (inode ));
80- if (!new_inode ) return - ENOMEM ;
81-
82- file_operations * stdout_fops = kmalloc (sizeof (file_operations ));
83- if (!stdout_fops ) {
84- kfree (new_inode );
85- return - ENOMEM ;
86- }
87-
88- kmemset (new_inode , 0 , sizeof (inode ));
89- kmemset (stdout_fops , 0 , sizeof (file_operations ));
21+ void init_tty1 (inode * absolute_root ) {
22+ inode * dev_dir = nullptr ;
23+ int error = do_mkdir ("dev" , & dev_dir , absolute_root );
24+ if (!(error == 0 || error == - EPEXISTS )) return ;
9025
91- stdout_fops -> write = stderr_write ;
26+ inode * tty1_file = nullptr ;
27+ error = do_create ("tty1" , & tty1_file , dev_dir );
28+ if (error != 0 || !tty1_file ) return ;
9229
93- new_inode -> i_cnt = 1 ;
94- new_inode -> i_type = CHAR_DEV ;
30+ file_operations * tty1_fops = kmalloc ( sizeof ( file_operations )) ;
31+ if (! tty1_fops ) return ;
9532
96- f -> f_inode = new_inode ;
97- f -> f_fops = stdout_fops ;
33+ kmemset (tty1_fops , 0 , sizeof (file_operations ));
34+ tty1_fops -> write = stdout_write ;
35+ // tty1_fops->read = // connect to keyboard get_next_char when available
9836
99- return 0 ;
37+ tty1_file -> i_iops = nullptr ;
38+ tty1_file -> i_fops = tty1_fops ;
39+ tty1_file -> i_type = CHAR_DEV ;
10040}
0 commit comments