From 33f550cb65c950068ff04c331daeeda3547d2e50 Mon Sep 17 00:00:00 2001 From: zhkag Date: Wed, 21 Jun 2023 10:22:42 +0000 Subject: [Kernel] message 可以返回消息的实际大小 (#7709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/usb/usbdevice/class/hid.c | 2 +- .../drivers/usb/usbdevice/core/usbdevice_core.c | 2 +- components/drivers/usb/usbhost/core/hub.c | 6 ++--- components/libc/cplusplus/os/cxx_queue.h | 2 +- components/libc/posix/ipc/mqueue.c | 28 +++++++++++----------- 5 files changed, 20 insertions(+), 20 deletions(-) (limited to 'components') diff --git a/components/drivers/usb/usbdevice/class/hid.c b/components/drivers/usb/usbdevice/class/hid.c index d2bb05ed24..59816df4a9 100644 --- a/components/drivers/usb/usbdevice/class/hid.c +++ b/components/drivers/usb/usbdevice/class/hid.c @@ -627,7 +627,7 @@ static void hid_thread_entry(void* parameter) hiddev = (struct hid_s *)parameter; while(1) { - if(rt_mq_recv(&hiddev->hid_mq, &report, sizeof(report),RT_WAITING_FOREVER) != RT_EOK ) + if(rt_mq_recv(&hiddev->hid_mq, &report, sizeof(report),RT_WAITING_FOREVER) < 0) continue; HID_Report_Received(&report); } diff --git a/components/drivers/usb/usbdevice/core/usbdevice_core.c b/components/drivers/usb/usbdevice/core/usbdevice_core.c index 28e673d2a8..b373150800 100644 --- a/components/drivers/usb/usbdevice/core/usbdevice_core.c +++ b/components/drivers/usb/usbdevice/core/usbdevice_core.c @@ -2160,7 +2160,7 @@ static void rt_usbd_thread_entry(void* parameter) /* receive message */ if(rt_mq_recv(&usb_mq, &msg, sizeof(struct udev_msg), - RT_WAITING_FOREVER) != RT_EOK ) + RT_WAITING_FOREVER) < 0) continue; device = rt_usbd_find_device(msg.dcd); diff --git a/components/drivers/usb/usbhost/core/hub.c b/components/drivers/usb/usbhost/core/hub.c index 549fe373d4..bf55be3452 100644 --- a/components/drivers/usb/usbhost/core/hub.c +++ b/components/drivers/usb/usbhost/core/hub.c @@ -659,8 +659,8 @@ static void rt_usbh_hub_thread_entry(void* parameter) struct uhost_msg msg; /* receive message */ - if(rt_mq_recv(hcd->usb_mq, &msg, sizeof(struct uhost_msg), RT_WAITING_FOREVER) - != RT_EOK ) continue; + if (rt_mq_recv(hcd->usb_mq, &msg, sizeof(struct uhost_msg), RT_WAITING_FOREVER) < 0) + continue; //RT_DEBUG_LOG(RT_DEBUG_USB, ("msg type %d\n", msg.type)); @@ -711,7 +711,7 @@ void rt_usbh_hub_init(uhcd_t hcd) { LOG_E("hcd->roothub: allocate buffer failed."); return; - } + } rt_memset(hcd->roothub, 0, sizeof(struct uhub)); hcd->roothub->is_roothub = RT_TRUE; hcd->roothub->hcd = hcd; diff --git a/components/libc/cplusplus/os/cxx_queue.h b/components/libc/cplusplus/os/cxx_queue.h index f6b91e1a21..46257d35c3 100644 --- a/components/libc/cplusplus/os/cxx_queue.h +++ b/components/libc/cplusplus/os/cxx_queue.h @@ -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: diff --git a/components/libc/posix/ipc/mqueue.c b/components/libc/posix/ipc/mqueue.c index 4b5905ef48..22d2854770 100644 --- a/components/libc/posix/ipc/mqueue.c +++ b/components/libc/posix/ipc/mqueue.c @@ -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) -- cgit v1.3.1