On Tue, Nov 2, 2010 at 2:07 AM, Bian Naimeng <[email protected]> wrote:
> The default value of the mutex's protocol shall be PTHREAD_PRIO_NONE,
> so pthread_mutex_getprioceiling should return EINVAL.
>
> Signed-off-by: Bian Naimeng <[email protected]>
>
> ---
> .../interfaces/pthread_mutex_getprioceiling/1-1.c | 30
> ++++++++++++++++++++
> 1 files changed, 30 insertions(+), 0 deletions(-)
>
> diff --git
> a/testcases/open_posix_testsuite/conformance/interfaces/pthread_mutex_getprioceiling/1-1.c
>
> b/testcases/open_posix_testsuite/conformance/interfaces/pthread_mutex_getprioceiling/1-1.c
> index d9251e6..65c8c6b 100644
> ---
> a/testcases/open_posix_testsuite/conformance/interfaces/pthread_mutex_getprioceiling/1-1.c
> +++
> b/testcases/open_posix_testsuite/conformance/interfaces/pthread_mutex_getprioceiling/1-1.c
> @@ -18,6 +18,7 @@
> #include <pthread.h>
> #include <stdio.h>
> #include <sched.h>
> +#include <errno.h>
> #include "posixtest.h"
>
> int main()
> @@ -29,6 +30,7 @@ int main()
> return PTS_UNRESOLVED;
> #endif */
>
> + pthread_mutexattr_t mattr;
> pthread_mutex_t mutex;
> int prioceiling, max_prio, min_prio;
>
> @@ -40,6 +42,34 @@ int main()
> }
>
> /* Get the prioceiling of the mutex. */
> + if(pthread_mutex_getprioceiling(&mutex, &prioceiling) != EINVAL)
> + {
> + printf("Test FAILED: Default, the protocol attribute of mutex
> "
> + "is PTHREAD_PRIO_NONE, so pthread_mutex_getprioceiling
> "
> + "should return EINVAL\n");
> + return PTS_FAIL;
> + }
> +
> + if (pthread_mutexattr_init(&mattr) != 0)
> + {
> + perror("Error at pthread_mutexattr_init()\n");
> + return PTS_UNRESOLVED;
> + }
> +
> + if (pthread_mutexattr_setprotocol(&mattr, PTHREAD_PRIO_PROTECT) != 0)
> + {
> + perror("Error at pthread_mutexattr_setprotocol()\n");
> + return PTS_UNRESOLVED;
> + }
> +
> + /* Initialize a mutex object */
> + if(pthread_mutex_init(&mutex, &mattr) != 0)
> + {
> + perror("Error at pthread_mutex_init()\n");
> + return PTS_UNRESOLVED;
> + }
> +
> + /* Get the prioceiling of the mutex. */
> if(pthread_mutex_getprioceiling(&mutex, &prioceiling) != 0)
> {
> printf("Test FAILED: Error obtaining the priority ceiling\n");
A patch similar to this will be committed soon. The above patch
has several correctness issues with perror (you have to capture the
error and play it back via strerror), and the original test author
accidentally mixed up one of the requirements between
pthread_mutex_getprioceiling and pthread_mutexattr_getprioceiling as
well by accident. This helped unroot a requirements issue on FreeBSD
with PTHREAD_PRIO_INHERIT, and it might so similar on Linux.
Partial credit will be `awarded' for having keen eyes on this
issue though :).
Thanks,
-Garrett
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list