@@ -62,10 +62,6 @@ impl RustProc {
62
62
pr_err ! ( "proc_open is invoked\n " ) ;
63
63
pr_err ! ( "proc_open is invoked\n " ) ;
64
64
65
- while true {
66
- pr_info ! ( "proc_open is invoked\n " ) ;
67
- }
68
-
69
65
unsafe {
70
66
let ret = bindings:: single_open ( _file, Some ( Self :: proc_show) , ptr:: null_mut ( ) ) ;
71
67
}
@@ -74,6 +70,26 @@ impl RustProc {
74
70
75
71
unsafe extern "C" fn proc_show ( _m : * mut bindings:: seq_file , _v : * mut core:: ffi:: c_void ) -> i32 {
76
72
pr_info ! ( "proc_read is invoked\n " ) ;
73
+ unsafe {
74
+ bindings:: seq_printf (
75
+ _m,
76
+ CString :: try_from_fmt ( fmt ! ( "Hello, world!\n " ) )
77
+ . unwrap ( )
78
+ . as_char_ptr ( ) ,
79
+ ) ;
80
+ }
81
+ 0 as i32
82
+ }
83
+
84
+ unsafe extern "C" fn proc_release (
85
+ _inode : * mut bindings:: inode ,
86
+ _file : * mut bindings:: file ,
87
+ ) -> i32 {
88
+ pr_info ! ( "proc_release is invoked\n " ) ;
89
+ unsafe {
90
+ let ret = bindings:: single_release ( _inode, _file) ;
91
+ }
92
+ // single_release(_inode, _file);
77
93
0 as i32
78
94
}
79
95
}
@@ -93,10 +109,10 @@ impl kernel::Module for RustProc {
93
109
proc_get_unmapped_area : None , // mandatory to prevent build error
94
110
proc_read_iter : None , // mandatory to prevent build error
95
111
proc_open : Some ( Self :: proc_open) ,
96
- proc_read : None ,
112
+ proc_read : Some ( bindings :: seq_read ) ,
97
113
proc_write : None ,
98
- proc_lseek : None ,
99
- proc_release : None ,
114
+ proc_lseek : Some ( bindings :: seq_lseek ) ,
115
+ proc_release : Some ( Self :: proc_release ) ,
100
116
proc_poll : None ,
101
117
proc_ioctl : None ,
102
118
proc_mmap : None ,
@@ -112,7 +128,11 @@ impl kernel::Module for RustProc {
112
128
if entry. is_null ( ) {
113
129
pr_info ! ( "failed to create a proc entry\n " ) ;
114
130
} else {
115
- pr_info ! ( "succeeded to create a proc entry: {:p}\n " , entry) ;
131
+ pr_info ! (
132
+ "succeeded to create a proc entry: {:p} proc_open={:#x}\n " ,
133
+ entry,
134
+ Self :: proc_open as usize
135
+ ) ;
116
136
}
117
137
118
138
Ok ( ret)
0 commit comments