-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[feat](pthread): Add pthread_mutex_timedlock #10163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
[Descriptions]: 1. Support POSIX pthread extension function pthread_mutex_timedlock
Is this patch allowed? Could anyone review it? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
if (result == RT_EOK) | ||
return 0; | ||
|
||
return EINVAL; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Copilot uses AI. Check for mistakes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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; |
Copilot uses AI. Check for mistakes.
[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