Date: Thu, 30 Nov 2000 18:54:26 +0200 From: "Dimitar V. Peikov" <mitko@rila.bg> To: hackers@freebsd.org Subject: pthreads, semaphores and wait Message-ID: <200011301654.eAUGsQ517235@earth.rila.bg>
next in thread | raw e-mail | index | archive | help
This is a multipart MIME message. --==_Exmh_14473280120 Content-Type: text/plain; charset=us-ascii I've tryed to make some example on using pthreads and semaphores and found that process became blocked if inside of critical section use wait, uwait or nanowait finctions. In the attached file if change line : (#if 0) to (#if 1) the program hangs. I've tested it even with gdb and the threads were blocked after wait finction. --==_Exmh_14473280120 Content-Type: text/plain ; name="broken_wait.c"; charset=us-ascii Content-Description: broken_wait.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="broken_wait.c" I2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxp Yi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgovKiAgcFRocmVhZCBpbmNsdWRlcyAqLwojaW5j bHVkZSA8cHRocmVhZC5oPgoKLyogIElQQyBzZW1hcGhvcmVzIGluY2x1ZGVzICovCiNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9pcGMuaD4KI2luY2x1ZGUgPHN5cy9z ZW0uaD4KCmV4dGVybiBpbnQgZXJybm87CmludCBjb21tb24gPSAwOwppbnQgY29tbW9uX3No YXJlZF9pZCA9IDA7CmNoYXIgKmNvbW1vbl9wb2ludGVyID0gTlVMTDsKaW50IHNlbWFwaG9y ZV9pZCA9IDA7CgppbnQgcHRocmVhZF9zZW1hcGhvcmVzKGNoYXIgKnMpIHsKICBpbnQgaW50 ZXJuYWwgPSBjb21tb247CiAgc3RydWN0IHNlbWJ1ZiBzZW1fYnVmOwogIGludCBzZW1fdmFs ID0gMDsKCi8qICBMb2NrIHNlbWFwaG9yZSAwICovCiAgc2VtX2J1Zi5zZW1fbnVtID0gMDsK ICBzZW1fYnVmLnNlbV9vcCA9IC0xOwogIHNlbV9idWYuc2VtX2ZsZyA9IDA7CiAgaWYgKChz ZW1fdmFsID0gc2Vtb3Aoc2VtYXBob3JlX2lkLCAmc2VtX2J1ZiwgMSkpID09IC0xKSB7CiAg ICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGxvY2sgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJy b3IoZXJybm8pKTsKICAgIHJldHVybiAtMTsKICB9CgovKiAgR2V0IGN1cnJlbnQgdmFsdWUg b2YgdGhlIGZpcnN0IHNlbWFwaG9yZSAqLwogIGlmICgoc2VtX3ZhbCA9IHNlbWN0bChzZW1h cGhvcmVfaWQsIDAsIEdFVFZBTCkpID09IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIkVy cm9yIGFsbG9jYXRpbmcgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKICAg IHJldHVybiAtMTsKICB9CgovKiAgRG8gc29tZXRoaW5nIC4uLiAqLwogIGNvbW1vbl9wb2lu dGVyID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbihzKSArIDEpOwogIHN0cmNweShjb21tb25f cG9pbnRlciwgcyk7CiAgZnByaW50ZihzdGRlcnIsICJFbnRlciBzZW1hcGhvcmUgJXVcbiIs IGNvbW1vbisrKTsKCiNpZiAwCiAgICBzbGVlcCgxKTsKI2VuZGlmCgogIGZwcmludGYoc3Rk ZXJyLCAiTGVhdmUgc2VtYXBob3JlICV1XG4iLCBpbnRlcm5hbCk7CgogIHNlbV9idWYuc2Vt X251bSA9IDA7CiAgc2VtX2J1Zi5zZW1fb3AgPSAxOwogIHNlbV9idWYuc2VtX2ZsZyA9IDA7 CiAgaWYgKChzZW1fdmFsID0gc2Vtb3Aoc2VtYXBob3JlX2lkLCAmc2VtX2J1ZiwgMSkpID09 IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGxvY2sgc2VtYXBob3JlOiAlc1xu Iiwgc3RyZXJyb3IoZXJybm8pKTsKICAgIHJldHVybiAtMTsKICB9CiAgcmV0dXJuIDA7Cn0K CmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogIHB0aHJlYWRfdCB0aHJbNF07 CiAgaW50IHJldGNvZGUgPSAwOwogIGludCBzZW1fdmFsOwoKLyogIEV4YW1wbGUgdXNpbmcg c2VtYXBob3JlcyAqLwovKiAgQ3JlYXRlIHNlbWFwaG9yZSAqLwogIGlmICgoc2VtYXBob3Jl X2lkID0gc2VtZ2V0KElQQ19QUklWQVRFLCAxLCBTRU1fUiB8IFNFTV9BKSkgPT0gLTEpIHsK ICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyBzZW1hcGhvcmU6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOwogICAgcmV0dXJuIC0xOwogIH0KCi8qICBBc3NpZ24gdmFs dWUgdG8gdGhlIGZpcnN0IHNlbWFwaG9yZSAqLwogIGlmICgoc2VtX3ZhbCA9IHNlbWN0bChz ZW1hcGhvcmVfaWQsIDAsIFNFVFZBTCwgMSkpID09IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVy ciwgIkVycm9yIGFsbG9jYXRpbmcgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8p KTsKICAgIHJldHVybiAtMTsKICB9CgovKiAgR2V0IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZp cnN0IHNlbWFwaG9yZSAqLwogIGlmICgoc2VtX3ZhbCA9IHNlbWN0bChzZW1hcGhvcmVfaWQs IDAsIEdFVFZBTCkpID09IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFsbG9j YXRpbmcgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKICAgIHJldHVybiAt MTsKICB9CgovKiAgQ3JlYXRlIHB0aHJlYWRzICovCiAgcHRocmVhZF9jcmVhdGUoJnRoclsw XSwgTlVMTCwgKHZvaWQgKigqKSh2b2lkICopKXB0aHJlYWRfc2VtYXBob3JlcywgYXJndlsw XSk7CiAgcHRocmVhZF9jcmVhdGUoJnRoclsxXSwgTlVMTCwgKHZvaWQgKigqKSh2b2lkICop KXB0aHJlYWRfc2VtYXBob3JlcywgYXJndlswXSk7CiAgcHRocmVhZF9qb2luKHRoclswXSwg KHZvaWQgKikgJnJldGNvZGUpOwoKLyogIFJlbW92ZSBzZW1hcGhvcmUgKi8KICBpZiAoc2Vt Y3RsKHNlbWFwaG9yZV9pZCwgSVBDX1JNSUQsIE5VTEwpID09IC0xKSB7CiAgICBmcHJpbnRm KHN0ZGVyciwgIkVycm9yIHJlbW92aW5nIHNlbWFwaG9yZTogJXNcbiIsIHN0cmVycm9yKGVy cm5vKSk7CiAgICByZXR1cm4gLTE7CiAgfQoKICBmcHJpbnRmKHN0ZGVyciwgIkRvbmUhXG4i KTsKICByZXR1cm4gMDsKfQo= --==_Exmh_14473280120 Content-Type: text/plain; charset=us-ascii Dimitar Peikov Programmer Analyst "We Build e-Business" RILA Solutions 27 Building, Acad.G.Bonchev Str. 1113 Sofia, Bulgaria home: (+359 2) 595495 phone: (+359 2) 9797320 phone: (+359 2) 9797300 fax: (+359 2) 9733355 http://www.rila.com --==_Exmh_14473280120-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011301654.eAUGsQ517235>