mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-21 02:06:14 +08:00
[Kernel] message 可以返回消息的实际大小 (#7709)
This commit is contained in:
@@ -62,7 +62,7 @@ public:
|
||||
else
|
||||
tick = rt_tick_from_millisecond(millisec);
|
||||
|
||||
return rt_mq_recv(&mID, &data, sizeof(data), tick) == RT_EOK;
|
||||
return rt_mq_recv(&mID, &data, sizeof(data), tick) >= 0;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -233,7 +233,7 @@ ssize_t mq_receive(mqd_t id, char *msg_ptr, size_t msg_len, unsigned *msg_prio)
|
||||
}
|
||||
|
||||
result = rt_mq_recv(mqdes->mq, msg_ptr, msg_len, RT_WAITING_FOREVER);
|
||||
if (result == RT_EOK)
|
||||
if (result >= 0)
|
||||
return rt_strlen(msg_ptr);
|
||||
|
||||
rt_set_errno(EBADF);
|
||||
@@ -288,7 +288,7 @@ ssize_t mq_timedreceive(mqd_t id,
|
||||
tick = rt_timespec_to_tick(abs_timeout);
|
||||
|
||||
result = rt_mq_recv(mqdes->mq, msg_ptr, msg_len, tick);
|
||||
if (result == RT_EOK)
|
||||
if (result >= 0)
|
||||
return rt_strlen(msg_ptr);
|
||||
|
||||
if (result == -RT_ETIMEOUT)
|
||||
@@ -358,19 +358,19 @@ RTM_EXPORT(mq_close);
|
||||
/**
|
||||
* @brief This function will remove a message queue (REALTIME).
|
||||
*
|
||||
* @note The mq_unlink() function shall remove the message queue named by the string name.
|
||||
* If one or more processes have the message queue open when mq_unlink() is called,
|
||||
* destruction of the message queue shall be postponed until all references to the message queue have been closed.
|
||||
* @note The mq_unlink() function shall remove the message queue named by the string name.
|
||||
* If one or more processes have the message queue open when mq_unlink() is called,
|
||||
* destruction of the message queue shall be postponed until all references to the message queue have been closed.
|
||||
* However, the mq_unlink() call need not block until all references have been closed; it may return immediately.
|
||||
*
|
||||
* After a successful call to mq_unlink(), reuse of the name shall subsequently cause mq_open() to behave as if
|
||||
* no message queue of this name exists (that is, mq_open() will fail if O_CREAT is not set,
|
||||
*
|
||||
* After a successful call to mq_unlink(), reuse of the name shall subsequently cause mq_open() to behave as if
|
||||
* no message queue of this name exists (that is, mq_open() will fail if O_CREAT is not set,
|
||||
* or will create a new message queue if O_CREAT is set).
|
||||
*
|
||||
*
|
||||
* @param name is the name of the message queue.
|
||||
*
|
||||
* @return Upon successful completion, the function shall return a value of zero.
|
||||
* Otherwise, the named message queue shall be unchanged by this function call,
|
||||
* @return Upon successful completion, the function shall return a value of zero.
|
||||
* Otherwise, the named message queue shall be unchanged by this function call,
|
||||
* and the function shall return a value of -1 and set errno to indicate the error.
|
||||
*
|
||||
* @warning This function can ONLY be called in the thread context, you can use RT_DEBUG_IN_THREAD_CONTEXT to
|
||||
@@ -384,9 +384,9 @@ RTM_EXPORT(mq_close);
|
||||
* The named message queue does not exist.
|
||||
* The mq_unlink() function may fail if:
|
||||
* [ENAMETOOLONG]
|
||||
* The length of the name argument exceeds {_POSIX_PATH_MAX} on systems that do not support the XSI option
|
||||
* or exceeds {_XOPEN_PATH_MAX} on XSI systems,or has a pathname component that is longer than {_POSIX_NAME_MAX} on systems that do
|
||||
* not support the XSI option or longer than {_XOPEN_NAME_MAX} on XSI systems.A call to mq_unlink() with a name argument that contains
|
||||
* The length of the name argument exceeds {_POSIX_PATH_MAX} on systems that do not support the XSI option
|
||||
* or exceeds {_XOPEN_PATH_MAX} on XSI systems,or has a pathname component that is longer than {_POSIX_NAME_MAX} on systems that do
|
||||
* not support the XSI option or longer than {_XOPEN_NAME_MAX} on XSI systems.A call to mq_unlink() with a name argument that contains
|
||||
* the same message queue name as was previously used in a successful mq_open() call shall not give an [ENAMETOOLONG] error.
|
||||
*/
|
||||
int mq_unlink(const char *name)
|
||||
|
||||
Reference in New Issue
Block a user