Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Jan 2010 20:34:35 +0100
From:      Gabor Kovesdan <gabor@FreeBSD.org>
To:        Hajimu UMEMOTO <ume@FreeBSD.org>
Cc:        Kostik Belousov <kostikbel@gmail.com>, attilio@FreeBSD.org, current@FreeBSD.org
Subject:   Re: NLS/strerror efficiency
Message-ID:  <4B5B4F4B.3030201@FreeBSD.org>
In-Reply-To: <yge1vhgvdd3.wl%ume@mahoroba.org>
References:  <20100119212019.GL59590@deviant.kiev.zoral.com.ua>	<4B56CACF.50508@FreeBSD.org> <yge1vhgvdd3.wl%ume@mahoroba.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------000102010404010207030707
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

El 2010. 01. 23. 20:18, Hajimu UMEMOTO escribió:
> The gai_strerror(3) has same issue.  How about the attached patch in
> this mail?
>    
I have a fix for msgcat.c to optimalize catalog handling. As I'm not an 
src committer, delphij@ is helping me in reviewing and approving my 
patches. I've sent the attached patch to him today and I'm waiting for 
his response now. This patch caches the failing and the succesful 
catopen() calls in a thread-safe way and in the latter case it counts 
references to cached catalog.

Still, I consider it a good idea to have a static catalog descriptor in 
strerror.3 and use that instead of always opening and closing the catalog.

Regards,

-- 
Gabor Kovesdan
FreeBSD Volunteer

EMAIL: gabor@FreeBSD.org .:|:. gabor@kovesdan.org
WEB:   http://people.FreeBSD.org/~gabor .:|:. http://kovesdan.org


--------------000102010404010207030707
Content-Type: text/plain;
 name="nls-caching.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="nls-caching.diff"

SW5kZXg6IG5scy9tc2djYXQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIG5scy9tc2djYXQuYwko
cmV2aXNp8246IDIwMjY1OCkNCisrKyBubHMvbXNnY2F0LmMJKGNvcGlhIGRlIHRyYWJham8p
DQpAQCAtMzksNiArMzksNyBAQA0KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiAjaW5jbHVk
ZSA8c3lzL3N0YXQuaD4NCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4NCisjaW5jbHVkZSA8c3lz
L3F1ZXVlLmg+DQogDQogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgkJLyogZm9yIG50b2hsKCkg
Ki8NCiANCkBAIC00Nyw2ICs0OCw3IEBADQogI2luY2x1ZGUgPGxpbWl0cy5oPg0KICNpbmNs
dWRlIDxsb2NhbGUuaD4NCiAjaW5jbHVkZSA8bmxfdHlwZXMuaD4NCisjaW5jbHVkZSA8cHRo
cmVhZC5oPg0KICNpbmNsdWRlIDxzdGRpby5oPg0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCiAj
aW5jbHVkZSA8c3RyaW5nLmg+DQpAQCAtNTcsMjYgKzU5LDc0IEBADQogDQogI2RlZmluZSBf
REVGQVVMVF9OTFNfUEFUSCAiL3Vzci9zaGFyZS9ubHMvJUwvJU4uY2F0Oi91c3Ivc2hhcmUv
bmxzLyVOLyVMOi91c3IvbG9jYWwvc2hhcmUvbmxzLyVMLyVOLmNhdDovdXNyL2xvY2FsL3No
YXJlL25scy8lTi8lTCINCiANCisjZGVmaW5lIFJMT0NLKGZhaWwpCXsgaWYgKF9wdGhyZWFk
X3J3bG9ja19yZGxvY2soJnJ3bG9jaykgIT0gMCkgcmV0dXJuIChmYWlsKTsgfQ0KKyNkZWZp
bmUgV0xPQ0soZmFpbCkJeyBpZiAoX3B0aHJlYWRfcndsb2NrX3dybG9jaygmcndsb2NrKSAh
PSAwKSByZXR1cm4gKGZhaWwpOyB9DQorI2RlZmluZSBVTkxPQ0soZmFpbCkJeyBpZiAoX3B0
aHJlYWRfcndsb2NrX3VubG9jaygmcndsb2NrKSAhPSAwKSByZXR1cm4gKGZhaWwpOyB9DQor
DQogI2RlZmluZQlOTEVSUgkJKChubF9jYXRkKSAtMSkNCiAjZGVmaW5lIE5MUkVURVJSKGVy
cmMpICB7IGVycm5vID0gZXJyYzsgcmV0dXJuIChOTEVSUik7IH0NCisjZGVmaW5lIFNBVkVG
QUlMKG4sIGUpCXsgV0xPQ0soTkxFUlIpOyBcDQorCQkJICBucCA9IG1hbGxvYyhzaXplb2Yo
c3RydWN0IGNhdGVudHJ5KSk7IFwNCisJCQkgIGlmIChucCAhPSBOVUxMKSB7IFwNCisJCQkg
IAlucC0+bmFtZSA9IHN0cmR1cChuKTsgXA0KKwkJCQlucC0+Y2F0ZXJybm8gPSBlOyBcDQor
CQkJICAJU0xJU1RfSU5TRVJUX0hFQUQoJmZsaXN0LCBucCwgbGlzdCk7IFwNCisJCQkgIH0g
XA0KKwkJCSAgVU5MT0NLKE5MRVJSKTsgXA0KKwkJCX0NCiANCi1zdGF0aWMgbmxfY2F0ZCBs
b2FkX21zZ2NhdChjb25zdCBjaGFyICopOw0KK3N0YXRpYyBubF9jYXRkIGxvYWRfbXNnY2F0
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCiANCitzdGF0aWMgcHRocmVhZF9yd2xv
Y2tfdAkJIHJ3bG9jazsNCisNCitzdHJ1Y3QgY2F0ZW50cnkgew0KKwlTTElTVF9FTlRSWShj
YXRlbnRyeSkJIGxpc3Q7DQorCWNoYXIJCQkqbmFtZTsNCisJY2hhcgkJCSpwYXRoOw0KKwlp
bnQJCQkgY2F0ZXJybm87DQorCW5sX2NhdGQJCQkgY2F0ZDsNCisJaW50CQkJIHJlZmNvdW50
Ow0KK307DQorDQorU0xJU1RfSEVBRChsaXN0aGVhZCwgY2F0ZW50cnkpIGZsaXN0ID0NCisg
ICAgU0xJU1RfSEVBRF9JTklUSUFMSVpFUihmbGlzdCk7DQorDQogbmxfY2F0ZA0KIGNhdG9w
ZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IHR5cGUpDQogew0KLQlpbnQgICAgICAgICAgICAg
c3BjbGVmdCwgc2F2ZXJyOw0KLQljaGFyICAgICAgICAgICAgcGF0aFtQQVRIX01BWF07DQot
CWNoYXIgICAgICAgICAgICAqbmxzcGF0aCwgKmxhbmcsICpiYXNlLCAqY3B0ciwgKnBhdGhQ
LCAqdG1wcHRyOw0KLQljaGFyICAgICAgICAgICAgKmNwdHIxLCAqcGxhbmcsICpwdGVyLCAq
cGNvZGU7DQotCXN0cnVjdCBzdGF0ICAgICBzYnVmOw0KKwlpbnQJCSBzcGNsZWZ0LCBzYXZl
cnI7DQorCWNoYXIJCSBwYXRoW1BBVEhfTUFYXTsNCisJY2hhcgkJKm5sc3BhdGgsICpsYW5n
LCAqYmFzZSwgKmNwdHIsICpwYXRoUCwgKnRtcHB0cjsNCisJY2hhcgkJKmNwdHIxLCAqcGxh
bmcsICpwdGVyLCAqcGNvZGU7DQorCXN0cnVjdCBzdGF0CSBzYnVmOw0KKwlzdHJ1Y3QgY2F0
ZW50cnkJKm5wOw0KIA0KIAlpZiAobmFtZSA9PSBOVUxMIHx8ICpuYW1lID09ICdcMCcpDQog
CQlOTFJFVEVSUihFSU5WQUwpOw0KIA0KKwlpZiAoKHJ3bG9jayA9PSAocHRocmVhZF9yd2xv
Y2tfdCkwKSAmJg0KKwkgICAgKF9wdGhyZWFkX3J3bG9ja19pbml0KCZyd2xvY2ssIE5VTEwp
ICE9IDApKQ0KKwkJcmV0dXJuIChOTEVSUik7DQorDQorCS8qIFRyeSB0byBnZXQgaXQgZnJv
bSB0aGUgY2FjaGUgZmlyc3QgKi8NCisJUkxPQ0soTkxFUlIpOw0KKwlTTElTVF9GT1JFQUNI
KG5wLCAmZmxpc3QsIGxpc3QpIHsNCisJCWlmIChzdHJjbXAobnAtPm5hbWUsIG5hbWUpID09
IDApIHsNCisJCQlpZiAobnAtPmNhdGVycm5vICE9IDApIHsNCisJCQkJVU5MT0NLKE5MRVJS
KTsNCisJCQkJTkxSRVRFUlIobnAtPmNhdGVycm5vKTsNCisJCQl9IGVsc2Ugew0KKwkJCQlV
TkxPQ0soTkxFUlIpOw0KKwkJCQlucC0+cmVmY291bnQrKzsNCisJCQkJcmV0dXJuIChucC0+
Y2F0ZCk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCVVOTE9DSyhOTEVSUik7DQorDQogCS8qIGlz
IGl0IGFic29sdXRlIHBhdGggPyBpZiB5ZXMsIGxvYWQgaW1tZWRpYXRlbHkgKi8NCiAJaWYg
KHN0cmNocihuYW1lLCAnLycpICE9IE5VTEwpDQotCQlyZXR1cm4gKGxvYWRfbXNnY2F0KG5h
bWUpKTsNCisJCXJldHVybiAobG9hZF9tc2djYXQobmFtZSwgbmFtZSkpOw0KIA0KIAlpZiAo
dHlwZSA9PSBOTF9DQVRfTE9DQUxFKQ0KIAkJbGFuZyA9IHNldGxvY2FsZShMQ19NRVNTQUdF
UywgTlVMTCk7DQpAQCAtODUsNyArMTM1LDcgQEANCiANCiAJaWYgKGxhbmcgPT0gTlVMTCB8
fCAqbGFuZyA9PSAnXDAnIHx8IHN0cmxlbihsYW5nKSA+IEVOQ09ESU5HX0xFTiB8fA0KIAkg
ICAgKGxhbmdbMF0gPT0gJy4nICYmDQotCSAgICAgKGxhbmdbMV0gPT0gJ1wwJyB8fCAobGFu
Z1sxXSA9PSAnLicgJiYgbGFuZ1syXSA9PSAnXDAnKSkpIHx8DQorCSAgICAobGFuZ1sxXSA9
PSAnXDAnIHx8IChsYW5nWzFdID09ICcuJyAmJiBsYW5nWzJdID09ICdcMCcpKSkgfHwNCiAJ
ICAgIHN0cmNocihsYW5nLCAnLycpICE9IE5VTEwpDQogCQlsYW5nID0gIkMiOw0KIA0KQEAg
LTE2Niw3ICsyMTYsNyBAQA0KIAkJCWlmIChzdGF0KHBhdGgsICZzYnVmKSA9PSAwKSB7DQog
CQkJCWZyZWUocGxhbmcpOw0KIAkJCQlmcmVlKGJhc2UpOw0KLQkJCQlyZXR1cm4gKGxvYWRf
bXNnY2F0KHBhdGgpKTsNCisJCQkJcmV0dXJuIChsb2FkX21zZ2NhdChwYXRoLCBuYW1lKSk7
DQogCQkJfQ0KIAkJfSBlbHNlIHsNCiAJCQl0bXBwdHIgPSAoY2hhciAqKW5hbWU7DQpAQCAt
MTgyLDIwICsyMzIsMjAgQEANCiBjaGFyICoNCiBjYXRnZXRzKG5sX2NhdGQgY2F0ZCwgaW50
IHNldF9pZCwgaW50IG1zZ19pZCwgY29uc3QgY2hhciAqcykNCiB7DQotCXN0cnVjdCBfbmxz
X2NhdF9oZHIgKmNhdF9oZHI7DQotCXN0cnVjdCBfbmxzX3NldF9oZHIgKnNldF9oZHI7DQot
CXN0cnVjdCBfbmxzX21zZ19oZHIgKm1zZ19oZHI7DQotCWludCBsLCB1LCBpLCByOw0KKwlz
dHJ1Y3QgX25sc19jYXRfaGRyCSpjYXRfaGRyOw0KKwlzdHJ1Y3QgX25sc19zZXRfaGRyCSpz
ZXRfaGRyOw0KKwlzdHJ1Y3QgX25sc19tc2dfaGRyCSptc2dfaGRyOw0KKwlpbnQJCQkgbCwg
dSwgaSwgcjsNCiANCiAJaWYgKGNhdGQgPT0gTlVMTCB8fCBjYXRkID09IE5MRVJSKSB7DQog
CQllcnJubyA9IEVCQURGOw0KIAkJLyogTElOVEVEIGludGVyZmFjZSBwcm9ibGVtICovDQot
CQlyZXR1cm4gKGNoYXIgKikgczsNCi19DQorCQlyZXR1cm4gKChjaGFyICopcyk7DQorCX0N
CiANCiAJY2F0X2hkciA9IChzdHJ1Y3QgX25sc19jYXRfaGRyICopY2F0ZC0+X19kYXRhOyAN
CiAJc2V0X2hkciA9IChzdHJ1Y3QgX25sc19zZXRfaGRyICopKHZvaWQgKikoKGNoYXIgKilj
YXRkLT5fX2RhdGENCi0JCQkrIHNpemVvZihzdHJ1Y3QgX25sc19jYXRfaGRyKSk7DQorCSAg
ICArIHNpemVvZihzdHJ1Y3QgX25sc19jYXRfaGRyKSk7DQogDQogCS8qIGJpbmFyeSBzZWFy
Y2gsIHNlZSBrbnV0aCBhbGdvcml0aG0gYiAqLw0KIAlsID0gMDsNCkBAIC0yMjgsNyArMjc4
LDcgQEANCiAJCQkJfSBlbHNlIHsNCiAJCQkJCWwgPSBpICsgMTsNCiAJCQkJfQ0KLX0NCisJ
CQl9DQogDQogCQkJLyogbm90IGZvdW5kICovDQogCQkJZ290byBub3Rmb3VuZDsNCkBAIC0y
MzgsMjUgKzI4OCw0MCBAQA0KIAkJfSBlbHNlIHsNCiAJCQlsID0gaSArIDE7DQogCQl9DQot
fQ0KKwl9DQogDQogbm90Zm91bmQ6DQogCS8qIG5vdCBmb3VuZCAqLw0KIAllcnJubyA9IEVO
T01TRzsNCiAJLyogTElOVEVEIGludGVyZmFjZSBwcm9ibGVtICovDQotCXJldHVybiAoY2hh
ciAqKSBzOw0KKwlyZXR1cm4gKChjaGFyICopcyk7DQogfQ0KIA0KIGludA0KIGNhdGNsb3Nl
KG5sX2NhdGQgY2F0ZCkNCiB7DQorCXN0cnVjdCBjYXRlbnRyeQkJKm5wOw0KKw0KIAlpZiAo
Y2F0ZCA9PSBOVUxMIHx8IGNhdGQgPT0gTkxFUlIpIHsNCiAJCWVycm5vID0gRUJBREY7DQog
CQlyZXR1cm4gKC0xKTsNCiAJfQ0KIA0KLQltdW5tYXAoY2F0ZC0+X19kYXRhLCAoc2l6ZV90
KWNhdGQtPl9fc2l6ZSk7DQotCWZyZWUoY2F0ZCk7DQorCVdMT0NLKC0xKTsNCisJU0xJU1Rf
Rk9SRUFDSChucCwgJmZsaXN0LCBsaXN0KSB7DQorCQlpZiAoKG5wLT5jYXRkLT5fX3NpemUg
PT0gY2F0ZC0+X19zaXplKSAmJg0KKwkJICAgIG1lbWNtcCgoY29uc3Qgdm9pZCAqKW5wLT5j
YXRkLCAoY29uc3Qgdm9pZCAqKWNhdGQsIG5wLT5jYXRkLT5fX3NpemUpID09IDApIHsNCisJ
CQlucC0+cmVmY291bnQtLTsNCisJCQlpZiAobnAtPnJlZmNvdW50ID09IDApIHsNCisJCQkJ
bXVubWFwKGNhdGQtPl9fZGF0YSwgKHNpemVfdCljYXRkLT5fX3NpemUpOw0KKwkJCQlmcmVl
KGNhdGQpOw0KKwkJCQlTTElTVF9SRU1PVkUoJmZsaXN0LCBucCwgY2F0ZW50cnksIGxpc3Qp
Ow0KKwkJCQlmcmVlKG5wKTsNCisJCQl9DQorCQkJYnJlYWs7DQorCQl9DQorCX0NCisJVU5M
T0NLKC0xKTsNCiAJcmV0dXJuICgwKTsNCiB9DQogDQpAQCAtMjY1LDE5ICszMzAsMzggQEAN
CiAgKi8NCiANCiBzdGF0aWMgbmxfY2F0ZA0KLWxvYWRfbXNnY2F0KGNvbnN0IGNoYXIgKnBh
dGgpDQorbG9hZF9tc2djYXQoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbmFtZSkN
CiB7DQotCXN0cnVjdCBzdGF0IHN0Ow0KLQlubF9jYXRkIGNhdGQ7DQotCXZvaWQgKmRhdGE7
DQotCWludCBmZDsNCisJc3RydWN0IHN0YXQJIHN0Ow0KKwlubF9jYXRkCQkgY2F0ZDsNCisJ
c3RydWN0IGNhdGVudHJ5CSpucDsNCisJdm9pZAkJKmRhdGE7DQorCWludAkJIGZkOw0KIA0K
LQkvKiBYWFg6IHBhdGggIT0gTlVMTD8gKi8NCisJaWYgKHBhdGggPT0gTlVMTCkgew0KKwkJ
ZXJybm8gPSBFSU5WQUw7DQorCQlyZXR1cm4gKE5MRVJSKTsNCisJfQ0KIA0KLQlpZiAoKGZk
ID0gX29wZW4ocGF0aCwgT19SRE9OTFkpKSA9PSAtMSkNCisJLyogT25lIG1vcmUgdHJ5IGlu
IGNhY2hlOyBpZiBpdCB3YXMgbm90IGZvdW5kIGJ5IG5hbWUsDQorCSAgIGl0IG1pZ2h0IHN0
aWxsIGJlIGZvdW5kIGJ5IGFic29sdXRlIHBhdGguICovDQorCVJMT0NLKE5MRVJSKTsNCisJ
U0xJU1RfRk9SRUFDSChucCwgJmZsaXN0LCBsaXN0KSB7DQorCQlpZiAoc3RyY21wKG5wLT5w
YXRoLCBwYXRoKSA9PSAwKSB7DQorCQkJbnAtPnJlZmNvdW50Kys7DQorCQkJVU5MT0NLKE5M
RVJSKTsNCisJCQlyZXR1cm4gKG5wLT5jYXRkKTsNCisJCX0NCisJfQ0KKwlVTkxPQ0soTkxF
UlIpOw0KKw0KKwlpZiAoKGZkID0gX29wZW4ocGF0aCwgT19SRE9OTFkpKSA9PSAtMSkgew0K
KwkJU0FWRUZBSUwobmFtZSwgZXJybm8pOw0KIAkJcmV0dXJuIChOTEVSUik7DQorCX0NCiAN
CiAJaWYgKF9mc3RhdChmZCwgJnN0KSAhPSAwKSB7DQorCQlTQVZFRkFJTChuYW1lLCBlcnJu
byk7DQogCQlfY2xvc2UoZmQpOw0KIAkJcmV0dXJuIChOTEVSUik7DQogCX0NCkBAIC0yODYs
MjIgKzM3MCwzNyBAQA0KIAkgICAgKG9mZl90KTApOw0KIAlfY2xvc2UoZmQpOw0KIA0KLQlp
ZiAoZGF0YSA9PSBNQVBfRkFJTEVEKQ0KKwlpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7DQor
CQlTQVZFRkFJTChuYW1lLCBlcnJubyk7DQogCQlyZXR1cm4gKE5MRVJSKTsNCisJfQ0KIA0K
IAlpZiAobnRvaGwoKHVfaW50MzJfdCkoKHN0cnVjdCBfbmxzX2NhdF9oZHIgKilkYXRhKS0+
X19tYWdpYykgIT0NCiAJICAgIF9OTFNfTUFHSUMpIHsNCisJCVNBVkVGQUlMKG5hbWUsIGVy
cm5vKTsNCiAJCW11bm1hcChkYXRhLCAoc2l6ZV90KXN0LnN0X3NpemUpOw0KIAkJTkxSRVRF
UlIoRUlOVkFMKTsNCiAJfQ0KIA0KIAlpZiAoKGNhdGQgPSBtYWxsb2Moc2l6ZW9mICgqY2F0
ZCkpKSA9PSBOVUxMKSB7DQorCQlTQVZFRkFJTChuYW1lLCBlcnJubyk7DQogCQltdW5tYXAo
ZGF0YSwgKHNpemVfdClzdC5zdF9zaXplKTsNCiAJCXJldHVybiAoTkxFUlIpOw0KIAl9DQog
DQogCWNhdGQtPl9fZGF0YSA9IGRhdGE7DQogCWNhdGQtPl9fc2l6ZSA9IChpbnQpc3Quc3Rf
c2l6ZTsNCisNCisJV0xPQ0soTkxFUlIpOw0KKwlpZiAoKG5wID0gbWFsbG9jKHNpemVvZihz
dHJ1Y3QgY2F0ZW50cnkpKSkgIT0gTlVMTCkgew0KKwkJbnAtPm5hbWUgPSBzdHJkdXAobmFt
ZSk7DQorCQlucC0+cGF0aCA9IHN0cmR1cChwYXRoKTsNCisJCW5wLT5jYXRkID0gY2F0ZDsN
CisJCW5wLT5yZWZjb3VudCA9IDE7DQorCQlucC0+Y2F0ZXJybm8gPSAwOw0KKwkJU0xJU1Rf
SU5TRVJUX0hFQUQoJmZsaXN0LCBucCwgbGlzdCk7DQorCX0NCisJVU5MT0NLKE5MRVJSKTsN
CiAJcmV0dXJuIChjYXRkKTsNCiB9DQogDQo=
--------------000102010404010207030707--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B5B4F4B.3030201>