On Wed, Mar 3, 2010 at 10:26 AM, Rishikesh K Rajak <[email protected]> wrote: > On Tue, Mar 02, 2010 at 08:38:20PM +0530, naresh kamboju wrote: >> On Tue, Mar 2, 2010 at 2:20 PM, Rishikesh K Rajak >> <[email protected]> wrote: >> > I feel before getting semaphore value, we need to sync first so here >> > sleep is require,though your point is valid that there is no use of >> > using sleep inside while loop. >> I agree with you. >> AFAIU, we should call sleep() before calling getting semaphore >> value.when we don't have while loop here. Because while loop condition >> is depends on val so when ever we call sem_getvalue() it will get >> latest value of val. >> In addition to this, we are ensuring val is decremented before we do >> unlock the sem by while loop condition. >> >> Having sleep() in while loop will not effect the final output. IIUC >> > > Hi Naresh, > > I am not able to apply your patch against ltp next branch. can you > please send me patch against next branch of ltp ? Here I have posted and attached to this e-mail.
Signed-off-by: Naresh Kamboju < [email protected] > --- testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c | 15 8 + 7 - 0 ! 1 file changed, 8 insertions(+), 7 deletions(-) Index: b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c =================================================================== --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c @@ -161,7 +161,6 @@ int main() } fprintf(stderr, "P: child_1:%d forked\n", c_1); - sleep(1); c_2 = fork(); if (c_2 == 0) { @@ -176,13 +175,13 @@ int main() } fprintf(stderr, "P: child_2: %d forked\n", c_2); + /* Step 3 Implementation */ /* Make sure the two children has been waiting */ - /*do { - sleep(1); + do { sem_getvalue(sem_1, &val); //printf("val = %d\n", val); } while (val != 1); - */ + c_3 = fork(); if (c_3 == 0) { @@ -191,13 +190,15 @@ int main() } fprintf(stderr, "P: child_3: %d forked\n", c_3); + /* Step 3 Implementation */ /* Make sure child 3 has been waiting for the lock */ - /*do { - sleep(1); + do { sem_getvalue(sem_1, &val); //printf("val = %d\n", val); } while (val != 0); - */ + + /* Synchronization required before release the lock */ + sleep(1); /* Ok, let's release the lock */ fprintf(stderr, "P: release lock\n"); sem_post(sem); Best regards Naresh Kamboju > > #git clone -b next > git://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev.git ltp > > And then create your patch and send it to ltp-list@ > > -- > Thanks & Regards > Rishi > LTP Maintainer > IBM, LTC, Bangalore > Please join IRC #ltp @ irc.freenode.net >
posix-sem-post-unstable-fix.patch
Description: Binary data
------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev
_______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
