| Function report | 
| Source Code: ipc\msg.c | Create Date:2022-07-28 16:42:16 | 
| Last Modify:2020-03-17 22:56:56 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:do_msgsnd
Proto:static long do_msgsnd(int msqid, long mtype, void __user *mtext, size_t msgsz, int msgflg)
Type:long
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| int | msqid | |
| long | mtype | |
| void __user * | mtext | |
| size_t | msgsz | |
| int | msgflg | 
| 828 | If msgsz > msg_ctlmax || msgsz < 0 || msqid < 0 Then Return -EINVAL | 
| 838 | message text size = msgsz | 
| 841 | msq = msq_obtain_object_check(ns, msqid) | 
| 844 | Go to out_unlock1 | 
| 847 | ipc_lock_object( & q_perm) | 
| 849 | cycle | 
| 859 | Go to out_unlock0 | 
| 862 | err = security_msg_queue_msgsnd( & q_perm, msg, msgflg) | 
| 863 | If err Then Go to out_unlock0 | 
| 866 | If msg_fits_inqueue(msq, msgsz) Then Break | 
| 870 | If msgflg & urn error on wait Then | 
| 872 | Go to out_unlock0 | 
| 878 | If Not ipc_rcu_getref( & q_perm) Then | 
| 880 | Go to out_unlock0 | 
| 883 | ipc_unlock_object( & q_perm) | 
| 885 | schedule() | 
| 888 | ipc_lock_object( & q_perm) | 
| 890 | ipc_rcu_putref( & q_perm, msg_rcu_free) | 
| 894 | Go to out_unlock0 | 
| 898 | If signal_pending(current process) Then | 
| 899 | err = -start if no handler.. | 
| 900 | Go to out_unlock0 | 
| 905 | ipc_update_pid( & pid of last msgsnd , task_tgid(current process)) | 
| 908 | If Not pipelined_send(msq, msg, & wake_q) Then | 
| 917 | err = 0 | 
| 918 | msg = NULL | 
| 920 | out_unlock0 : | 
| 921 | ipc_unlock_object( & q_perm) | 
| 923 | out_unlock1 : | 
| 927 | Return err | 
| Name | Describe | 
|---|---|
| ksys_msgsnd | |
| compat_ksys_msgsnd | 
| 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 |