mq_timedsend
时间: 2024-01-11 22:02:38 浏览: 232
mq_timedsend是在glibc中的一个系统调用接口,用于向一个消息队列发送消息。在glibc中,有两个调用mq_timedsend系统调用的接口:mq_send和mq_timedsend。这些接口最终会通过linux内核系统调用mq_timedsend进入内核。具体的系统调用源码可以在glibc源码中找到,其格式如下:
SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, size_t, msg_len, unsigned int, msg_prio, const struct __kernel_timespec __user *, u_abs_timeout) {
struct timespec64 ts, *p = NULL;
if (u_abs_timeout) {
int res = prepare_timeout(u_abs_timeout, &ts);
if (res)
return res;
p = &ts;
}
return do_mq_timedsend(mqdes, u_msg_ptr, msg_len, msg_prio, p);
}
这段代码定义了mq_timedsend系统调用的参数和返回值。其中,mqdes是消息队列的描述符,u_msg_ptr是指向消息内容的指针,msg_len是消息的长度,msg_prio是消息的优先级,u_abs_timeout是超时时间。如果设置了超时时间,会调用prepare_timeout函数进行超时时间的准备,并传递给do_mq_timedsend函数进行实际的消息发送操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Linux mq在内核的发送、唤醒流程简介](https://blog.csdn.net/u012075739/article/details/127173875)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文