lkml.org 
[lkml]   [1998]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subjectlibc changes for large message queue support on Linux
Date
Hi Ulrich,

I have recently posted a patch to remove the small ipc message queue
limitations from the linux kernel. As part of those changes the kernel
msqid_ds structure had to be altered. Specifically, the msg_cbytes and
msg_qbyte parameters were from changed from unsigned short to unsigned
int's to remove the 64K restriction imposed. This changes aren't in the
kernel images yet, but are in Alan Cox's current patch set (patch-2.1.131-ac5).

The kernel will now pass back the "large" msg_cbytes and msg_qbytes info
in the fields that were formerly __wwait, and __rwait -- structures used
only in the kernel. Only the msgctl function is effected, since that is
the only one that passes the msqid_ds structure.

I have prepared some libc changes to allow the use of the new fields on
kernels that have the large message support. The msg_qbytes and msg_cbytes
fields have been renamed with a __old prefix, and the 32 bit fields have
replaced them. If the underlying kernel at run time does not have the large
message support (ie: old) then the msg_[qc]bytes fields are copied into the
old locations before the syscall.

I am appending the changes I have prepared, but I believe there are a couple
things to be addressed before they could be included into libc, and I wanted
to ask you to take a look at them.

1) I think symbol versioning would be needed for the new msgctl call, since
old libraries and executables linked against glibc 2.0 would expect the
msg_[cq]bytes fields to be at the old offsets, and be only 16 bits wide.

2) In msq.h I have put in two temporary ifdef __alpha__ where a test is needed
to check if the (Linux) platform is 64 bit (ie: alpha, sparc64, ...) -- I
presume that you have a "proper" macro for this in libc. I found
_XBS5_LP64_OFF32 in sysdeps/wordsize-64/bits/environments.h, but I don't
think unistd.h can be included in msq.h without namespace pollution -- correct?

Peeter
--
Peeter Joot peeterj@ca.ibm.com

Message-ID: <714.913185906@peeterj.torolab.ibm.com>
Mime-Version: 1.0
Subject: libc support for large message queues (Linux)
Content-Type: multipart/mixed; boundary="-"

This is a MIME encoded message. Decode it with "munpack"
or any other MIME reading software. Mpack/munpack is available
via anonymous FTP in ftp.andrew.cmu.edu:pub/mpack/
---
Content-Type: application/octet-stream; name="diff"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="diff"
Content-MD5: vQb6X8mbwHRoyH/xT+LBtg==

ZGlmZiAtdXIgbGliYy05ODAyMjYvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9tc3Eu
aCBsaW51eC0yLjEuMTMxLWFjNS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL21zcS5o
Ci0tLSBsaWJjLTk4MDIyNi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL21zcS5oCVdl
ZCBEZWMgIDkgMDE6MTI6MDkgMTk5OAorKysgbGludXgtMi4xLjEzMS1hYzUvc3lzZGVwcy91
bml4L3N5c3YvbGludXgvYml0cy9tc3EuaAlXZWQgRGVjICA5IDAxOjA1OjU5IDE5OTgKQEAg
LTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvKiBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYs
IDE5OTcsIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KIAogICAgVGhlIEdOVSBDIExpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0zNywxMSArMzcsMTggQEAKICAgX190aW1lX3QgbXNnX3N0aW1lOwkJLyogdGltZSBvZiBs
YXN0IG1zZ3NuZCBjb21tYW5kICovCiAgIF9fdGltZV90IG1zZ19ydGltZTsJCS8qIHRpbWUg
b2YgbGFzdCBtc2dyY3YgY29tbWFuZCAqLwogICBfX3RpbWVfdCBtc2dfY3RpbWU7CQkvKiB0
aW1lIG9mIGxhc3QgY2hhbmdlICovCi0gIHN0cnVjdCB3YWl0X3F1ZXVlICpfX3d3YWl0Owkv
KiA/Pz8gKi8KLSAgc3RydWN0IHdhaXRfcXVldWUgKl9fcndhaXQ7CS8qID8/PyAqLwotICB1
bnNpZ25lZCBzaG9ydCBpbnQgX19tc2dfY2J5dGVzOy8qIGN1cnJlbnQgbnVtYmVyIG9mIGJ5
dGVzIG9uIHF1ZXVlICovCisgIHVuc2lnbmVkIGludCBfX21zZ19jYnl0ZXM7ICAgIC8qIGN1
cnJlbnQgbnVtYmVyIG9mIGJ5dGVzIG9uIHF1ZXVlICovCisjaWYgZGVmaW5lZChfX2FscGhh
X18pCisgIC8qIHdoYXQgaXMgdGhlIHByb3BlciA2NCBiaXQgdGVzdCBtYWNybyBmb3IgdGhp
cyAqLworICB1bnNpZ25lZCBpbnQgX19wYWQwOworI2VuZGlmCisgIHVuc2lnbmVkIGludCBt
c2dfcWJ5dGVzOyAgICAgIC8qIG1heCBudW1iZXIgb2YgYnl0ZXMgYWxsb3dlZCBvbiBxdWV1
ZSAqLworI2lmIGRlZmluZWQoX19hbHBoYV9fKQorICB1bnNpZ25lZCBpbnQgX19wYWQxOwor
I2VuZGlmCisgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF9tc2dfY2J5dGVzOwogICB1bnNp
Z25lZCBzaG9ydCBpbnQgbXNnX3FudW07CS8qIG51bWJlciBvZiBtZXNzYWdlcyBjdXJyZW50
bHkgb24gcXVldWUgKi8KLSAgdW5zaWduZWQgc2hvcnQgaW50IG1zZ19xYnl0ZXM7LyogbWF4
IG51bWJlciBvZiBieXRlcyBhbGxvd2VkIG9uIHF1ZXVlICovCisgIHVuc2lnbmVkIHNob3J0
IGludCBfX29sZF9tc2dfcWJ5dGVzOwogICBfX2lwY19waWRfdCBtc2dfbHNwaWQ7CS8qIHBp
ZCBvZiBsYXN0IG1zZ3NuZCgpICovCiAgIF9faXBjX3BpZF90IG1zZ19scnBpZDsJLyogcGlk
IG9mIGxhc3QgbXNncmN2KCkgKi8KIH07CmRpZmYgLXVyIGxpYmMtOTgwMjI2L3N5c2RlcHMv
dW5peC9zeXN2L2xpbnV4L21zZ2N0bC5jIGxpbnV4LTIuMS4xMzEtYWM1L3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L21zZ2N0bC5jCi0tLSBsaWJjLTk4MDIyNi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9tc2djdGwuYwlXZWQgRGVjICA5IDAxOjEyOjE2IDE5OTgKKysrIGxpbnV4LTIu
MS4xMzEtYWM1L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21zZ2N0bC5jCVdlZCBEZWMgIDkg
MDE6MDg6MDYgMTk5OApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoQykgMTk5NSwg
MTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8qIENvcHlyaWdodCAoQykg
MTk5NSwgMTk5NywgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgogICAgQ29udHJpYnV0ZWQg
YnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCBBdWd1c3QgMTk5
NS4KIApAQCAtMTcsMTYgKzE3LDczIEBACiAgICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgICBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCiAKKyNkZWZpbmUgX1NWSURfU09VUkNF
CiAjaW5jbHVkZSA8c3lzL21zZy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvaXBjLmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KIAogLyogQWxsb3dzIHRvIGNvbnRyb2wgaW50
ZXJuYWwgc3RhdGUgYW5kIGRlc3RydWN0aW9uIG9mIG1lc3NhZ2UgcXVldWUKICAgIG9iamVj
dHMuICAqLwogCitpbnQgX19rZXJuZWxfbGFyZ2VfbXNxcXVldWVfc3VwcG9ydCA9IDA7CisK
K3ZvaWQKK19fdGVzdF9sYXJnZV9tc3FxdWV1ZXMgKHZvaWQpIAorX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RydWN0b3JfXykpOworCit2b2lkIF9fdGVzdF9sYXJnZV9tc3FxdWV1ZXMgKHZv
aWQpCit7CisgIGludCByYzsKKyAgaW50IG5hbWVbXSA9CisgIHtDVExfS0VSTiwgS0VSTl9N
U0dNQVh9OworCisgIC8qIGtlcm5lbCBzdXBwb3J0IGZvciBsYXJnZSBtZXNzYWdlcyBpZmYg
d2UgaGF2ZSAvcHJvYy9zeXMva2VybmVsL21heG1zZyAqLworICByYyA9IHN5c2N0bCAobmFt
ZSwgMiwgMCwgMCwgMCwgMCk7CisgIGlmIChyYyA9PSAwKQorICAgIF9fa2VybmVsX2xhcmdl
X21zcXF1ZXVlX3N1cHBvcnQgPSAxOworfQorCiBpbnQKIG1zZ2N0bCAobXNxaWQsIGNtZCwg
YnVmKQogICAgICBpbnQgbXNxaWQ7CiAgICAgIGludCBjbWQ7CiAgICAgIHN0cnVjdCBtc3Fp
ZF9kcyAqYnVmOwogewotICByZXR1cm4gX19pcGMgKElQQ09QX21zZ2N0bCwgbXNxaWQsIGNt
ZCwgMCwgYnVmKTsKKyAgaW50IHJjOworICBzd2l0Y2ggKGNtZCkKKyAgICB7CisgICAgY2Fz
ZSBNU0dfU1RBVDoKKyAgICBjYXNlIElQQ19TVEFUOgorICAgICAgcmMgPSBfX2lwYyAoSVBD
T1BfbXNnY3RsLCBtc3FpZCwgY21kLCAwLCBidWYpOworICAgICAgaWYgKF9fa2VybmVsX2xh
cmdlX21zcXF1ZXVlX3N1cHBvcnQgPT0gMCAmJiByYyA9PSAwKQorCXsKKwkgIGJ1Zi0+bXNn
X3FieXRlcyA9IGJ1Zi0+X19vbGRfbXNnX3FieXRlczsKKwkgIGJ1Zi0+X19tc2dfY2J5dGVz
ID0gYnVmLT5fX29sZF9tc2dfY2J5dGVzOworCX0KKyAgICAgIHJldHVybiByYzsKKyAgICBj
YXNlIElQQ19TRVQ6CisgICAgICBpZiAoIWJ1ZikgeworCV9fc2V0X2Vycm5vIChFRkFVTFQp
OworCXJldHVybiAtMTsKKyAgICAgIH0KKyAgICAgIC8qIFRoaXMgYWx0ZXJzIHRoZSBzZW1h
bnRpY3Mgb2YgdGhlIHN5c3RlbSBjYWxsIHNsaWdodGx5LCBhcyAKKyAgICAgICAqIGl0IHdv
dWxkIG5vdyBiZSBwb3NzaWJsZSB0byBnZXQgYSBzZWd2IGhlcmUgaWYgYnVmIGlzIGJhZCwg
CisgICAgICAgKiByYXRoZXIgdGhhbiBhIHBvbGl0ZSAtMSByZXR1cm4gY29kZSBhbmQgRUZB
VUxUIGVycm5vIHdoaWNoIHRoZSAKKyAgICAgICAqIGtlcm5lbCB3b3VsZCBoYXZlIHJldHVy
bmVkIGRpcmVjdGx5LgorICAgICAgICovCisgICAgICBpZiAoX19rZXJuZWxfbGFyZ2VfbXNx
cXVldWVfc3VwcG9ydCA9PSAwKQorCS8qIFRoaXMgaXMgd2hlcmUgdGhlIG9sZGVyIGtlcm5l
bCBleHBlY3RzIHRoZSBtc2dfcWJ5dGVzIGluZm8gdG8gYmUgKi8KKwlidWYtPl9fb2xkX21z
Z19xYnl0ZXMgPSBidWYtPm1zZ19xYnl0ZXM7CisgICAgICBlbHNlCisJLyogc2V0IHRoZSBv
bGQgbXNnX3FieXRlcyBmaWVsZCB0byB6ZXJvIHRvICJ0ZWxsIiBrZXJuZWwgdG8gZ2V0IHRo
ZSAKKwkgKiBmcm9tIHRoZSBuZXcgbXNnX2J5dGVzIGZpZWxkIGluc3RlYWQgKi8KKwlidWYt
Pl9fb2xkX21zZ19xYnl0ZXMgPSAwOworCisgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAg
ICBkZWZhdWx0OgorICAgICAgcmV0dXJuIF9faXBjIChJUENPUF9tc2djdGwsIG1zcWlkLCBj
bWQsIDAsIGJ1Zik7CisgICAgfQogfQo=

-----

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:46    [W:0.314 / U:0.184 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site