mq_timedreceive_time32() - receives the oldest of the highest priority messages stored in the message queue specified by mqdes.
mq_timedreceive_time32() system call atomically removes the oldest of the highest priority messages from the message queue specified by the
mqdes argument, places it in the memory pointed to by
u_msg_ptr, and returns its priority in the integer pointed to by
msg_len argument specifies the size in bytes of the storage pointed to by
u_msg_ptr; this space must be greater than or equal to the mq_msgsize attribute of the message queue. The
u_abs_timeout argument points to a structure that specifies the absolute timeout of the call.
It can provide synchronization and communication between processes, like avoiding busy waiting and non-sharing of resources between different threads. While there are many advantage to using this system call, one downside of it is that it does not ensure real-time delivery of the message. Also, it is vulnerable to the time of check, time of use (TOCTOU) vulnerability.
mqd_t[K] - Descriptor of the message queue.
char*[K] - Points to the buffer where the oldest/highest priority message will be stored.
unsigned int[K] - Length in bytes of the buffer.
unsigned int*[K] - Pointer to an integer that stores the priority of the received message.
struct old_timespec32*[K] - Specifies the absolute timeout of the call.
- K - Originated from kernel-space.
Kprobe + Kretprobe
mq_timedreceive_time32() system call to measure performance metrics (e.g. latency) and receive messages as expected.
Example Use Case¶
mq_timedreceive_time32() can be used to provide synchronization between different processes and threads. For example, it can be used in a web browser application to receive data from a server that has the same message queue descriptor as the process.
- It does not ensure real-time delivery of the messages.
- It is vulnerable to the time of check, time of use (TOCTOU) vulnerability.
mq_timedsend_time32()- sends a message with absolute timeout to a message queue.
mq_open()- used to open or create a message queue.
This document was automatically generated by OpenAI and needs review. It might not be accurate and might contain errors. The authors of Tracee recommend that the user reads the "events.go" source file to understand the events and their arguments better.