| 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 |