Function report |
Source Code:fs\io_uring.c |
Create Date:2022-07-28 20:22:16 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:io_issue_sqe
Proto:static int io_issue_sqe(struct io_kiocb *req, const struct io_uring_sqe *sqe, struct io_kiocb **nxt, bool force_nonblock)
Type:int
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct io_kiocb * | req | |
| const struct io_uring_sqe * | sqe | |
| struct io_kiocb ** | nxt | |
| bool | force_nonblock |
| 3188 | Case opcode == IORING_OP_NOP |
| 3190 | Break |
| 3191 | Case opcode == IORING_OP_READV |
| 3192 | Case opcode == IORING_OP_READ_FIXED |
| 3193 | If sqe Then |
| 3194 | ret = io_read_prep(req, sqe, force_nonblock) |
| 3195 | If ret < 0 Then Break |
| 3198 | ret = io_read(req, nxt, force_nonblock) |
| 3199 | Break |
| 3200 | Case opcode == IORING_OP_WRITEV |
| 3201 | Case opcode == IORING_OP_WRITE_FIXED |
| 3202 | If sqe Then |
| 3203 | ret = io_write_prep(req, sqe, force_nonblock) |
| 3204 | If ret < 0 Then Break |
| 3207 | ret = io_write(req, nxt, force_nonblock) |
| 3208 | Break |
| 3209 | Case opcode == IORING_OP_FSYNC |
| 3210 | If sqe Then |
| 3211 | ret = io_prep_fsync(req, sqe) |
| 3212 | If ret < 0 Then Break |
| 3215 | ret = io_fsync(req, nxt, force_nonblock) |
| 3216 | Break |
| 3217 | Case opcode == IORING_OP_POLL_ADD |
| 3218 | If sqe Then |
| 3219 | ret = io_poll_add_prep(req, sqe) |
| 3220 | If ret Then Break |
| 3223 | ret = io_poll_add(req, nxt) |
| 3224 | Break |
| 3225 | Case opcode == IORING_OP_POLL_REMOVE |
| 3226 | If sqe Then |
| 3227 | ret = io_poll_remove_prep(req, sqe) |
| 3228 | If ret < 0 Then Break |
| 3231 | ret = Find a running poll command that matches one specified in sqe->addr,* and remove it if found. |
| 3232 | Break |
| 3233 | Case opcode == IORING_OP_SYNC_FILE_RANGE |
| 3234 | If sqe Then |
| 3235 | ret = io_prep_sfr(req, sqe) |
| 3236 | If ret < 0 Then Break |
| 3239 | ret = io_sync_file_range(req, nxt, force_nonblock) |
| 3240 | Break |
| 3241 | Case opcode == IORING_OP_SENDMSG |
| 3242 | If sqe Then |
| 3243 | ret = io_sendmsg_prep(req, sqe) |
| 3244 | If ret < 0 Then Break |
| 3247 | ret = io_sendmsg(req, nxt, force_nonblock) |
| 3248 | Break |
| 3249 | Case opcode == IORING_OP_RECVMSG |
| 3250 | If sqe Then |
| 3251 | ret = io_recvmsg_prep(req, sqe) |
| 3252 | If ret Then Break |
| 3255 | ret = io_recvmsg(req, nxt, force_nonblock) |
| 3256 | Break |
| 3257 | Case opcode == IORING_OP_TIMEOUT |
| 3258 | If sqe Then |
| 3259 | ret = io_timeout_prep(req, sqe, false) |
| 3260 | If ret Then Break |
| 3263 | ret = io_timeout(req) |
| 3264 | Break |
| 3265 | Case opcode == IORING_OP_TIMEOUT_REMOVE |
| 3273 | Case opcode == IORING_OP_ACCEPT |
| 3274 | If sqe Then |
| 3275 | ret = io_accept_prep(req, sqe) |
| 3276 | If ret Then Break |
| 3279 | ret = io_accept(req, nxt, force_nonblock) |
| 3280 | Break |
| 3281 | Case opcode == IORING_OP_CONNECT |
| 3282 | If sqe Then |
| 3283 | ret = io_connect_prep(req, sqe) |
| 3284 | If ret Then Break |
| 3287 | ret = io_connect(req, nxt, force_nonblock) |
| 3288 | Break |
| 3289 | Case opcode == IORING_OP_ASYNC_CANCEL |
| 3290 | If sqe Then |
| 3291 | ret = io_async_cancel_prep(req, sqe) |
| 3292 | If ret Then Break |
| 3295 | ret = io_async_cancel(req, nxt) |
| 3296 | Break |
| 3297 | Default |
| 3305 | If flags & _context is polled Then |
| 3306 | in_async = io_wq_current_is_worker() |
| 3312 | If in_async Then mutex_lock( & uring_lock) |
| 3321 | Return 0 |
| Name | Describe |
|---|---|
| io_wq_submit_work | |
| __io_queue_sqe |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |