| .. | .. |
|---|
| 137 | 137 | return 0; |
|---|
| 138 | 138 | } |
|---|
| 139 | 139 | |
|---|
| 140 | +static int nubus_rsrc_proc_open(struct inode *inode, struct file *file) |
|---|
| 141 | +{ |
|---|
| 142 | + return single_open(file, nubus_proc_rsrc_show, inode); |
|---|
| 143 | +} |
|---|
| 144 | + |
|---|
| 145 | +static const struct proc_ops nubus_rsrc_proc_ops = { |
|---|
| 146 | + .proc_open = nubus_rsrc_proc_open, |
|---|
| 147 | + .proc_read = seq_read, |
|---|
| 148 | + .proc_lseek = seq_lseek, |
|---|
| 149 | + .proc_release = single_release, |
|---|
| 150 | +}; |
|---|
| 151 | + |
|---|
| 140 | 152 | void nubus_proc_add_rsrc_mem(struct proc_dir_entry *procdir, |
|---|
| 141 | 153 | const struct nubus_dirent *ent, |
|---|
| 142 | 154 | unsigned int size) |
|---|
| .. | .. |
|---|
| 152 | 164 | pde_data = nubus_proc_alloc_pde_data(nubus_dirptr(ent), size); |
|---|
| 153 | 165 | else |
|---|
| 154 | 166 | pde_data = NULL; |
|---|
| 155 | | - proc_create_single_data(name, S_IFREG | 0444, procdir, |
|---|
| 156 | | - nubus_proc_rsrc_show, pde_data); |
|---|
| 167 | + proc_create_data(name, S_IFREG | 0444, procdir, |
|---|
| 168 | + &nubus_rsrc_proc_ops, pde_data); |
|---|
| 157 | 169 | } |
|---|
| 158 | 170 | |
|---|
| 159 | 171 | void nubus_proc_add_rsrc(struct proc_dir_entry *procdir, |
|---|
| .. | .. |
|---|
| 166 | 178 | return; |
|---|
| 167 | 179 | |
|---|
| 168 | 180 | snprintf(name, sizeof(name), "%x", ent->type); |
|---|
| 169 | | - proc_create_single_data(name, S_IFREG | 0444, procdir, |
|---|
| 170 | | - nubus_proc_rsrc_show, |
|---|
| 171 | | - nubus_proc_alloc_pde_data(data, 0)); |
|---|
| 181 | + proc_create_data(name, S_IFREG | 0444, procdir, |
|---|
| 182 | + &nubus_rsrc_proc_ops, |
|---|
| 183 | + nubus_proc_alloc_pde_data(data, 0)); |
|---|
| 172 | 184 | } |
|---|
| 173 | 185 | |
|---|
| 174 | 186 | /* |
|---|