[feat](pthread): Add pthread_mutex_timedlock#10163
[feat](pthread): Add pthread_mutex_timedlock#10163PlainWaterK wants to merge 1 commit intoRT-Thread:masterfrom
Conversation
|
Is this patch allowed? Could anyone review it? |
| if (result == RT_EOK) | ||
| return 0; | ||
|
|
||
| return EINVAL; |
There was a problem hiding this comment.
The return value from rt_mutex_take is always translated to EINVAL, irrespective of whether the failure was due to a timeout or another error. Consider translating the error codes from rt_mutex_take (for example, returning ETIMEDOUT when the timeout expires) to provide more accurate feedback to the caller.
There was a problem hiding this comment.
Pull Request Overview
This PR adds support for the POSIX pthread extension function pthread_mutex_timedlock, enabling mutex acquisition with a timeout based on an absolute timespec.
- Adds implementation of pthread_mutex_timedlock in pthread_mutex.c.
- Updates pthread.h with the function prototype for pthread_mutex_timedlock.
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| components/libc/posix/pthreads/pthread_mutex.c | Added implementation of pthread_mutex_timedlock with timeout support. |
| components/libc/posix/pthreads/pthread.h | Added function prototype for pthread_mutex_timedlock. |
|
|
||
| result = rt_mutex_take(&(mutex->lock), timeout); | ||
| if (result == RT_EOK) | ||
| return 0; |
There was a problem hiding this comment.
When rt_mutex_take fails due to a timeout, returning EINVAL may be misleading. Consider checking if the error indicates a timeout and returning ETIMEDOUT as specified by the POSIX standard.
| return 0; | |
| return 0; | |
| else if (result == -RT_ETIMEOUT) /* Assuming -RT_ETIMEOUT indicates a timeout */ | |
| return ETIMEDOUT; |
📌 Code Review Assignment🏷️ Tag: libcPath: Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2025-07-01 12:26 UTC)
📝 Review Instructions
|
fb5a1bd to
d25d73e
Compare
| RT_DEFINE_HW_SPINLOCK(pth_lock); | ||
| _pthread_data_t *pth_table[PTHREAD_NUM_MAX] = {NULL}; | ||
| static int concurrency_level; | ||
| static int concurrency_level; |
There was a problem hiding this comment.
文件格式化出问题了,大量无关代码被加上了很多空格。请修复。
There was a problem hiding this comment.
我是使用了rt-thread SDK中自带的.clang-format进行的格式化,请问不是这么进行格式化吗?
There was a problem hiding this comment.
请使用 https://github.com/mysterywolf/formatting 脚本进行格式化,谢谢
[Descriptions]:
1. Support POSIX pthread extension function pthread_mutex_timedlock
2. Format the files
[Descriptions]:
1. Support POSIX pthread extension function pthread_mutex_timedlock
拉取/合并请求描述:(PR description)
[
添加了pthread_mutex_timedlock接口支持
为什么提交这份PR (why to submit this PR)
POSIX标准中有对该接口的支持和描述
你的解决方案是什么 (what is your solution)
参照pthread_mutex_lock,依据POSIX标准中对该线程库接口的描述,添加pthread_mutex_timedlock,支持带超时的互斥锁获取
请提供验证的bsp和config (provide the config and bsp)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up