libc changes for large message queue support on Linux

Matthias Hanisch (peeter_joot@VNET.IBM.COM)
Wed, 9 Dec 1998 02:00:39 -0500 (EST)


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/