Skip to contentSkip to conversation

Question about priority of pthread rwlock on linux

LTP Kang Kai 2 participants 3 messages Dec 9, 2011 – Dec 14, 2011 1 message not in the archive

lore
Share & tools
lore

Kang Kai

author
#0 lore raw

Hello everyone,

I am working on Yocto( a kind of embedded linux) to make POSIX test cases pass. It uses kernel 3.0 and eglibc 2.3.

There are 3 failed test cases about pthread rwlock:
pthread_rwlock_rdlock/2-1 pthread_rwlock_rdlock/2-2 pthread_rwlock_unlock/3-1

In pthread_rwlock_rdlock/2-1, main thread*read lock* a rwlock, child thread1 *write lock* the rwlock with a medium priority, so it should be blocked. child thread2 try to *read lock *the rwlock with low priority, the case says child thread2 should block too. But in Yocto linux child thread2 doesn't block and then read lock the rwlock, that make test case fail.

In eglibc nptl implementation, rwlock has a element "__flags" to identify prefer write lock or read lock, default is to prefer read lock. If change __flags to prefer write lock, the test case will pass.

My questions are:
1 What is the test case base on? I checked the POSIX.1-2008 but didn't find description priority about the pthread rwlock? Could anyone give me a source that make me to understand it better? 2 Which C library or platform can make this case pass? So that I can compare it with eglibc.

Thanks a lot!
Kai

------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization This white paper is intended to serve as a reference, checklist and point of discussion for anyone considering optimizing the pricing and packaging model of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/

_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#1 lore raw

Hi!

Quoted 19 lines

I am working on Yocto( a kind of embedded linux) to make POSIX test cases pass. It uses kernel 3.0 and eglibc 2.3.

There are 3 failed test cases about pthread rwlock:
pthread_rwlock_rdlock/2-1 pthread_rwlock_rdlock/2-2 pthread_rwlock_unlock/3-1

In pthread_rwlock_rdlock/2-1, main thread*read lock* a rwlock, child thread1 *write lock* the rwlock with a medium priority, so it should be blocked. child thread2 try to *read lock *the rwlock with low priority, the case says child thread2 should block too. But in Yocto linux child thread2 doesn't block and then read lock the rwlock, that make test case fail.

In eglibc nptl implementation, rwlock has a element "__flags" to identify prefer write lock or read lock, default is to prefer read lock. If change __flags to prefer write lock, the test case will pass.

Quoted 6 lines

My questions are:
1 What is the test case base on? I checked the POSIX.1-2008 but didn't find description priority about the pthread rwlock? Could anyone give me a source that make me to understand it better? 2 Which C library or platform can make this case pass? So that I can compare it with eglibc.

These doesn't work with glibc either, see:

http://old.nabble.com/pthread_rwlock_rdlock%28%29-p32423548.html

I haven't got any reply though :(.

The newer POSIX explicitly says that reader thread acquires the lock if no writer is holding the lock and no writers are locked on the lock. And it seems that previous standards specified the case of locked writing threads as implementation defined...

http://pubs.opengroup.org/onlinepubs/007904975/functions/pthread_rwlock_rdlock.html

Signature · 13 lines
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization
This white paper is intended to serve as a reference, checklist and point of 
discussion for anyone considering optimizing the pricing and packaging model 
of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
#3 lore raw
In reply to a message not in the archive

Hi!

Quoted 13 lines
Quoted 4 lines

These doesn't work with glibc either, see:

http://old.nabble.com/pthread_rwlock_rdlock%28%29-p32423548.html

Quoted 8 lines

I haven't got any reply though :(.

The newer POSIX explicitly says that reader thread acquires the lock if no writer is holding the lock and no writers are locked on the lock. And it seems that previous standards specified the case of locked writing threads as implementation defined...

http://pubs.opengroup.org/onlinepubs/007904975/functions/pthread_rwlock_rdlock.html

Quoted 9 lines

Once upon a time I intended to upgrade the POSIX compliance of the
test suite to the 2008 spec -- so I blindly updated the POSIX compliance to 2008.1 (before it was set to 2001 compliance, IIRC.. which wasn't particularly useful). I got busy with other tasks and since then my focus has been diverted from this and LTP (for the most part).
If it turns out that the testcase doesn't make sense given the new
POSIX spec, or needs to be rewritten, I'll be more than happy to review either and provide feedback.

This rather seems to be one of the rare occasions where the testcase is actually right and the glibc behaves to some very old SUS.

Signature · 12 lines
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
Cloud Computing - Latest Buzzword or a Glimpse of the Future?
This paper surveys cloud computing today: What are the benefits? 
Why are businesses embracing it? What are its payoffs and pitfalls?
http://www.accelacomm.com/jaw/sdnl/114/51425149/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list