| Function report | 
| Source Code: fs\pipe.c | Create Date:2022-07-28 20:04:29 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:pipe_write
Proto:static ssize_t pipe_write(struct kiocb *iocb, struct iov_iter *from)
Type:ssize_t
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct kiocb * | iocb | |
| struct iov_iter * | from | 
| 436 | ret = 0 | 
| 437 | total_len = iov_iter_count(from) | 
| 439 | bool was_empty = false | 
| 442 | If Value for the false possibility is greater at compile time(total_len == 0) Then Return 0 | 
| 445 | __pipe_lock(pipe) | 
| 447 | If Not readers Then | 
| 465 | was_empty = pipe_empty - Return true if the pipe is empty*@head: The pipe ring head pointer*@tail: The pipe ring tail pointer | 
| 472 | If pipe_buf_can_merge(buf) && offset + chars <= PAGE_SIZE Then | 
| 489 | cycle | 
| 490 | If Not readers Then | 
| 504 | If Not page Then | 
| 505 | page = alloc_page(GFP_HIGHUSER | __GFP_ACCOUNT) | 
| 518 | spin_lock_irq( & lock) | 
| 522 | spin_unlock_irq( & lock) | 
| 523 | Continue | 
| 527 | spin_unlock_irq( & lock) | 
| 533 | offset = 0 | 
| 534 | len = 0 | 
| 535 | flags = 0 | 
| 536 | If is_packetized(filp) Then | 
| 537 | ops = packet_pipe_buf_ops | 
| 538 | flags = ad() as a packet | 
| 540 | tmp_page = NULL | 
| 542 | copied = copy_page_from_iter(page, 0, PAGE_SIZE, from) | 
| 543 | If Value for the false possibility is greater at compile time(copied < PAGE_SIZE && iov_iter_count(from)) Then | 
| 549 | offset = 0 | 
| 552 | If Not iov_iter_count(from) Then Break | 
| 556 | If Not pipe_full - Return true if the pipe is full*@head: The pipe ring head pointer*@tail: The pipe ring tail pointer*@limit: The maximum amount of slots available. Then Continue | 
| 560 | If f_flags & O_NONBLOCK Then | 
| 565 | If signal_pending(current process) Then | 
| 568 | Break | 
| 577 | __pipe_unlock(pipe) | 
| 578 | If was_empty Then | 
| 583 | __pipe_lock(pipe) | 
| 586 | out : | 
| 587 | __pipe_unlock(pipe) | 
| 598 | If was_empty Then | 
| 602 | If ret > 0 && sb_start_write_trylock(i_sb) Then | 
| 603 | err = file_update_time(filp) | 
| 608 | Return ret | 
| 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 |