| .. | .. |
|---|
| 35 | 35 | // a function that blocks |
|---|
| 36 | 36 | @ blocks @ |
|---|
| 37 | 37 | identifier block_f; |
|---|
| 38 | | -identifier wait_event =~ "^wait_event_.*"; |
|---|
| 38 | +identifier wait =~ "^wait_.*"; |
|---|
| 39 | 39 | @@ |
|---|
| 40 | 40 | block_f(...) { |
|---|
| 41 | 41 | ... when exists |
|---|
| 42 | | - wait_event(...) |
|---|
| 42 | + wait(...) |
|---|
| 43 | 43 | ... when exists |
|---|
| 44 | 44 | } |
|---|
| 45 | 45 | |
|---|
| .. | .. |
|---|
| 49 | 49 | // XXX currently reader_blocks supports only direct and 1-level indirect cases. |
|---|
| 50 | 50 | @ reader_blocks_direct @ |
|---|
| 51 | 51 | identifier stream_reader.readstream; |
|---|
| 52 | | -identifier wait_event =~ "^wait_event_.*"; |
|---|
| 52 | +identifier wait =~ "^wait_.*"; |
|---|
| 53 | 53 | @@ |
|---|
| 54 | 54 | readstream(...) |
|---|
| 55 | 55 | { |
|---|
| 56 | 56 | ... when exists |
|---|
| 57 | | - wait_event(...) |
|---|
| 57 | + wait(...) |
|---|
| 58 | 58 | ... when exists |
|---|
| 59 | 59 | } |
|---|
| 60 | 60 | |
|---|
| .. | .. |
|---|
| 134 | 134 | .llseek = no_llseek, |
|---|
| 135 | 135 | }; |
|---|
| 136 | 136 | |
|---|
| 137 | +@ has_noop_llseek @ |
|---|
| 138 | +identifier fops0.fops; |
|---|
| 139 | +@@ |
|---|
| 140 | + struct file_operations fops = { |
|---|
| 141 | + .llseek = noop_llseek, |
|---|
| 142 | + }; |
|---|
| 143 | + |
|---|
| 137 | 144 | @ has_mmap @ |
|---|
| 138 | 145 | identifier fops0.fops; |
|---|
| 139 | 146 | identifier mmap_f; |
|---|
| .. | .. |
|---|
| 180 | 187 | // |
|---|
| 181 | 188 | // XXX for simplicity require no .{read/write}_iter and no .splice_{read/write} for now. |
|---|
| 182 | 189 | // XXX maybe_steam.fops cannot be used in other rules - it gives "bad rule maybe_stream or bad variable fops". |
|---|
| 183 | | -@ maybe_stream depends on (!has_llseek || has_no_llseek) && !has_mmap && !has_copy_file_range && !has_remap_file_range && !has_read_iter && !has_write_iter && !has_splice_read && !has_splice_write @ |
|---|
| 190 | +@ maybe_stream depends on (!has_llseek || has_no_llseek || has_noop_llseek) && !has_mmap && !has_copy_file_range && !has_remap_file_range && !has_read_iter && !has_write_iter && !has_splice_read && !has_splice_write @ |
|---|
| 184 | 191 | identifier fops0.fops; |
|---|
| 185 | 192 | @@ |
|---|
| 186 | 193 | struct file_operations fops = { |
|---|