From owner-freebsd-multimedia Mon Sep 1 00:25:27 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id AAA12100 for multimedia-outgoing; Mon, 1 Sep 1997 00:25:27 -0700 (PDT) Received: from rah.star-gate.com (rah.star-gate.com [204.188.121.18]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id AAA12092 for ; Mon, 1 Sep 1997 00:25:21 -0700 (PDT) Received: from rah.star-gate.com (localhost.star-gate.com [127.0.0.1]) by rah.star-gate.com (8.8.7/8.8.5) with ESMTP id AAA00272; Mon, 1 Sep 1997 00:25:17 -0700 (PDT) Message-Id: <199709010725.AAA00272@rah.star-gate.com> X-Mailer: exmh version 2.0gamma 1/27/96 To: Denis DeLaRoca cc: multimedia@FREEBSD.ORG Subject: fix for multiple vats, was( Re: guspnp18 and vat ) In-reply-to: Your message of "Sun, 31 Aug 1997 20:16:00 PDT." <199709010356.UAA00289@rah.star-gate.com> Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="==_Exmh_2165216400" Date: Mon, 01 Sep 1997 00:25:16 -0700 From: Amancio Hasty Sender: owner-freebsd-multimedia@FREEBSD.ORG X-Loop: FreeBSD.org Precedence: bulk This is a multipart MIME message. --==_Exmh_2165216400 Content-Type: text/plain; charset=us-ascii >From The Desk Of Denis DeLaRoca : > The other outstanding problem is with passing the audio device among > multiple active vats. That is completely broken and I think we have > to wrestle with vat's code to find out how that is supposed to work. The problem was in audio-voxare.cc. A separate problem is group-ipc.cc which needs to enable local ipc multicast. So here are both modules for vat-4.0b2 Amancio --==_Exmh_2165216400 Content-Type: application/octet-stream ; name="audio-voxware.cc" Content-Description: audio-voxware.cc Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="audio-voxware.cc" LyoKICogQ29weXJpZ2h0IChjKSAxOTkxLTE5OTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg ZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAgbXVzdCBkaXNwbGF5 IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKglUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBDb21wdXRlciBTeXN0ZW1zCiAqCUVuZ2lu ZWVyaW5nIEdyb3VwIGF0IExhd3JlbmNlIEJlcmtlbGV5IExhYm9yYXRvcnkuCiAqIDQuIE5l aXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIG9mIHRoZSBMYWJvcmF0b3J5 IG1heSBiZSB1c2VkCiAqICAgIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CiAqICAgIHNwZWNpZmljIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKICogQU5ZIEVYUFJF U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiAqIEFSRSBESVNDTEFJTUVELiAgSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQog KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTAogKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwogKiBPUiBTRVJW SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKICogTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB WQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg T0YgVEhFIFBPU1NJQklMSVRZIE9GCiAqIFNVQ0ggREFNQUdFLgogKi8KCgovKiBGdWxsIER1 cGxleCBhdWRpbyBtb2R1bGUgZm9yIHZveHdhcmUgMy41IHNvdW5kIGRyaXZlcnMgb3IgaGln aGVyIAogICBUaGlzIG1vZHVsZSBoYXMgYmVlbiB0ZXN0ZWQgb24gRnJlZUJTRCAyLjEtU3Rh YmxlLCBzb3VuZCBkcml2ZXIgCiAgIDMuNSBhbmQgYSBHVVMgUG5QLiBJZiB0aGUgc291bmQg Y2FyZCBpcyBub3QgZnVsbCBkdXBsZXggdGhpcwogICBtb2R1bGUgd2lsbCBub3Qgd29yay4K ICAgQW1hbmNpbyBIYXN0eQoKICovCgoKI2lmbmRlZiBsaW50CnN0YXRpYyBjb25zdCBjaGFy IHJjc2lkW10gPQogICAgIkAoIykgJEhlYWRlcjogbGludXhfYXVkaW8uY2MsdiAxLjQgOTUv MTAvMTQgMTc6NDQ6MjEgbWNjYW5uZSBFeHAgJCAoTEJMKSI7CiNlbmRpZgoKI2luY2x1ZGUg PG9zZmNuLmg+CiNpbmNsdWRlIDxtYWNoaW5lL3NvdW5kY2FyZC5oPgojaW5jbHVkZSAiYXVk aW8uaCIKI2luY2x1ZGUgIlRjbC5oIgoKI2RlZmluZSBVTEFXX1pFUk8gMHg3ZgojZGVmaW5l IEFCVUZMT0cyIDgKI2RlZmluZSBBQlVGTEVOICgxIDw8IEFCVUZMT0cyKSAKLyojZGVmaW5l IEFCVUZMRU4gMTYwKjIwKi8KI2RlZmluZSBORlJBRyA0CgppbnQgZm9vX2NvdW50ID0gMDsK Y2xhc3MgVm94V2FyZSA6IHB1YmxpYyBBdWRpbyB7CiAgICBwdWJsaWM6CglWb3hXYXJlKCk7 Cgl2aXJ0dWFsIGludCBGcmFtZVJlYWR5KCk7Cgl2aXJ0dWFsIHVfY2hhciogUmVhZCgpOwoJ dmlydHVhbAl2b2lkIFdyaXRlKHVfY2hhciAqKTsKCXZpcnR1YWwgdm9pZCBTZXRSR2Fpbihp bnQpOwoJdmlydHVhbCB2b2lkIFNldFBHYWluKGludCk7Cgl2aXJ0dWFsIHZvaWQgT3V0cHV0 UG9ydChpbnQpOwoJdmlydHVhbCB2b2lkIElucHV0UG9ydChpbnQpOwoJdmlydHVhbCB2b2lk IE9idGFpbigpOwoJdmlydHVhbCB2b2lkIFJlbGVhc2UoKTsKCXZpcnR1YWwgdm9pZCBSTXV0 ZSgpOwoJdmlydHVhbCB2b2lkIFJVbm11dGUoKTsKICAgIHByb3RlY3RlZDoKCgl1X2NoYXIq IHJlYWRwdHI7Cgl1X2NoYXIqIHJlYWRidWZlbmQ7Cgl1X2NoYXIqIHJlYWRidWY7CiAgICAg ICAgaW50ICAgICByZWFkX2xlbjsKCXVfY2hhciogdWJ1ZnB0cjsKCXVfY2hhciogdWJ1ZmVu ZDsKCXVfY2hhciogdWJ1ZjsKCgl1X2NoYXIqIHdyaXRlcHRyOwoJdV9jaGFyKiB3cml0ZWJ1 ZmVuZDsKCXVfY2hhciogd3JpdGVidWY7CiAgICAgICAgaW50IG1peGVyZmQ7CiAgICAgICAg aW50IHRlc3RmZDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBjdXIsIG5vdywgd3JpdGVfbGFz dDsKICAgICAgICBpbnQgZnJhbWVfcmVhZHk7ICAgCiAgICAgICAgY2hhciBvYnVmZlsyMDQ4 XTsKICAgICAgICBpbnQgIG9idWZmX3B0cjsKCXVfY2hhciogemJ1ZjsKICAgICAgICBpbnQg cmdhaW47CiAgICAgICAgaW50IHBnYWluOwogICAgICAgIGludCBpbnB1dHBvcnQ7CiAgCn07 CgpzdGF0aWMgY2xhc3MgVm94V2FyZU1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlciB7CnB1Ymxp YzoKCVZveFdhcmVNYXRjaGVyKCkgOiBNYXRjaGVyKCJhdWRpbyIpIHt9CglUY2xPYmplY3Qq IG1hdGNoKGNvbnN0IGNoYXIqIGZtdCkgewoJCWlmIChzdHJjbXAoZm10LCAidm94d2FyZSIp ID09IDApCgkJCXJldHVybiAobmV3IFZveFdhcmUpOwoJCXJldHVybiAoMCk7Cgl9Cn0gbGlu dXhfYXVkaW9fbWF0Y2hlcjsKZXh0ZXJuIGNvbnN0IHNob3J0IG11bGF3dG9saW5bXTsKZXh0 ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbGludG9tdWxhd1tdOwpleHRlcm4gY29uc3QgdW5z aWduZWQgY2hhciBsaW50b211bGF3WFtdOwoKClZveFdhcmU6OlZveFdhcmUoKQp7CglyZWFk YnVmID0gbmV3IHVfY2hhcltBQlVGTEVOXTsKCXJlYWRwdHIgPSByZWFkYnVmZW5kID0gcmVh ZGJ1ZiArIEFCVUZMRU47CgoJd3JpdGVwdHIgPSB3cml0ZWJ1ZiA9IG5ldyB1X2NoYXJbQUJV RkxFTl07Cgl3cml0ZWJ1ZmVuZCA9IHdyaXRlYnVmICsgQUJVRkxFTjsKCgl1YnVmcHRyID0g dWJ1ZiA9IG5ldyB1X2NoYXJbYmxrc2l6ZV07Cgl1YnVmZW5kID0gdWJ1ZiArIGJsa3NpemU7 CgltZW1zZXQodWJ1ZiwgVUxBV19aRVJPLCBibGtzaXplKTsKCgl6YnVmID0gbmV3IHVfY2hh cltibGtzaXplXTsKCW1lbXNldCh6YnVmLCBVTEFXX1pFUk8sIGJsa3NpemUpOwoJaXBvcnRz ID0gMjsKCXJnYWluID0gLTE7CglwZ2FpbiA9IC0xOwoJaW5wdXRwb3J0ID0gLTE7CgkKfQoK Cgp2b2lkIFZveFdhcmU6Ok9idGFpbigpCnsKICBpbnQgc3BlZWQgPSA4MDAwOwoKCWlmIChI YXZlQXVkaW8oKSkKCQlhYm9ydCgpOwoJZnJhbWVfcmVhZHkgPSAwOwoJb2J1ZmZfcHRyID0g MDsKCWZkID0gb3BlbigiL2Rldi9hdWRpbyIsIE9fUkRXUnxPX05ERUxBWSk7CglpZiAoZmQg Pj0gMCkgewoJCWludCBvbiA9IDE7CgkJaW50IGZyYWcgOwogICAgICAgICAgICAgICAgcmVh ZF9sZW4gPSAwOwoJCWlvY3RsKGZkLFNORENUTF9EU1BfTk9OQkxPQ0sgLCAmb24pOyAgCgkJ ZnJhZyA9ICAxNjA7CgkgICAgICAgIGlvY3RsKGZkLCBTTkRDVExfRFNQX1NFVEJMS1NJWkUs ICZmcmFnKTsKCQlBdWRpbzo6T2J0YWluKCk7CgkJbWl4ZXJmZCA9IG9wZW4oIi9kZXYvbWl4 ZXIiLCBPX1JEV1IpOwoJCWlmIChpbnB1dHBvcnQgPj0gMCApIHsKCQkgIFZveFdhcmU6Oklu cHV0UG9ydChpbnB1dHBvcnQpOwoJCSAgVm94V2FyZTpTZXRSR2FpbihyZ2Fpbik7CgkJICBW b3hXYXJlOjpTZXRQR2FpbihwZ2Fpbik7CgkJfQoJCQoJfQp9Cgp2b2lkIFZveFdhcmU6OlJl bGVhc2UoKQp7CgkgIAoJaWYgKEhhdmVBdWRpbygpKSB7CgkgIGNsb3NlKG1peGVyZmQpOwoJ ICBtaXhlcmZkID0gLTE7CgkgIEF1ZGlvOjpSZWxlYXNlKCk7Cgl9Cgp9Cgp2b2lkIFZveFdh cmU6OldyaXRlKHVfY2hhciAqY3ApCnsKICBpbnQgZm9vLCBibG9ja19zb3VuZDsKICBpbnQg bXNlYywgZGVsdGE7CgogIHN0cnVjdCB0aW1ldmFsIHdyaXRlX2RlbHRhOwogIGNvdW50X2lu Zm8gaW5mbzsKCiAgZ2V0dGltZW9mZGF5KCZ3cml0ZV9kZWx0YSwgTlVMTCk7CiAgaW9jdGwo ZmQsIFNORENUTF9EU1BfR0VUT1BUUiwgJmluZm8pOwogIGJsb2NrX3NvdW5kID0gaW5mby5i bG9ja3M7CiAgd2hpbGUgKGluZm8uYmxvY2tzID4gMiAgKSB7CiAgICAKICAgIGlvY3RsKGZk LCBTTkRDVExfRFNQX0dFVE9QVFIsICZpbmZvKTsKICAgIHVzbGVlcCgxKTsKICB9IAogICAg Zm9vID0gd3JpdGUoZmQsIGNwLCBibGtzaXplKTsgCiAgCiAgCgogIGdldHRpbWVvZmRheSgm bm93LCBOVUxMKTsKICBkZWx0YSA9ICgoMTAwMCAqIG5vdy50dl9zZWMpICsgbm93LnR2X3Vz ZWMgLyAxMDAwKSAgLQogICAgKCgxMDAwICogd3JpdGVfZGVsdGEudHZfc2VjKSArIHdyaXRl X2RlbHRhLnR2X3VzZWMgLyAxMDAwKTsKCiAgbXNlYyA9ICgoMTAwMCAqIG5vdy50dl9zZWMp ICsgbm93LnR2X3VzZWMgLyAxMDAwKSAgLQogICAgKCgxMDAwICogd3JpdGVfbGFzdC50dl9z ZWMpICsgd3JpdGVfbGFzdC50dl91c2VjIC8gMTAwMCk7CgogLyogIHByaW50Zigid3JpdGUg IG1zZWMgJWQgZGVsdGEgICVkICBieXRlICVkICBcbiIsIG1zZWMsIGRlbHRhLCBpbmZvLmJ5 dGVzKTsgKi8KICB3cml0ZV9sYXN0ID0gbm93OwoKCgp9CgoKCnVfY2hhciogVm94V2FyZTo6 UmVhZCgpCnsKCXVfY2hhciogY3A7CglpbnQgaSA9IHJlYWRfbGVuOwoJaW50IG1zZWM7CgoJ Y3AgPSByZWFkYnVmOyAKCWkgPSAwOwoKCXdoaWxlIChpID09IDAgKSB7CgkgIGkgPSByZWFk KGZkLCBjcCwgYmxrc2l6ZSk7Cgl9CglpZiAoaSAgPCAxNTAgKSBwcmludGYoInJlYWQgIHh4 eCAlZCBcbiIsIGkpOwogICAgICAgIGN1ciA9IG5vdzsKCglyZXR1cm4gY3A7Cn0KCnZvaWQg Vm94V2FyZTo6U2V0UkdhaW4oaW50IGxldmVsKQp7ICAgIAogIGZsb2F0IHggPSBsZXZlbDsK ICByZ2FpbiA9IGxldmVsOwogIGxldmVsID0gKGludCkgKHgvMi41Nik7CiAgaW50IGZvbyA9 IGxldmVsPDw4IHwgbGV2ZWw7CiAgaW50IHplcm87CgogIGlmICghSGF2ZUF1ZGlvKCkgKSB7 CiAgICByZXR1cm47CiAgfQoKICBpZiAoaXBvcnQpIHsKCiAgICAvKiBmb3IgdGhlIGd1cyBw bnAgbGluZTMgaXMgbGluZSBpbnB1dCA6KCAqLwoKICAgIGlmIChpb2N0bChtaXhlcmZkLCBN SVhFUl9XUklURShTT1VORF9NSVhFUl9MSU5FMSksICZmb28pID09IC0xKSB7CiAgICAgIHBy aW50ZigiZmFpbGVkIHNldCBpbnB1dCBsaW5lIHZvbHVtZSBcbiIpOwogICAgfQogIH0gZWxz ZSB7CgogICAgaWYgKGlvY3RsKG1peGVyZmQsIE1JWEVSX1dSSVRFKFNPVU5EX01JWEVSX01J QyksICZmb28pID09IC0xKSB7CiAgICAgIHByaW50ZigiZmFpbGVkIHRvIHNldCBtaWMgdm9s dW1lIFxuIik7CiAgICB9CiAgfQoKCiAgICAgICAgCn0KCnZvaWQgVm94V2FyZTo6U2V0UEdh aW4oaW50IGxldmVsKQp7CiAgZmxvYXQgeCA9IGxldmVsOwogIHBnYWluID0gbGV2ZWw7CiAg bGV2ZWwgPSAoaW50KSAoeC8yLjU2KTsKICBpbnQgZm9vID0gbGV2ZWw8PDggfCBsZXZlbDsK ICBpZiAoIUhhdmVBdWRpbygpICkgewogICAgcmV0dXJuOwogIH0KCiAgaWYgKGlvY3RsKG1p eGVyZmQsIE1JWEVSX1dSSVRFKFNPVU5EX01JWEVSX1BDTSksICZmb28pID09IC0xKSB7CiAg IHByaW50ZigiZmFpbGVkIHRvIG91dHB1dCBsZXZlbCAleCBcbiIsIGxldmVsKTsKICB9Cn0K CnZvaWQgVm94V2FyZTo6T3V0cHV0UG9ydChpbnQgcCkKewoJb3BvcnQgPSBwOwp9Cgp2b2lk IFZveFdhcmU6OklucHV0UG9ydChpbnQgcCkKewogIGludCAgIHplcm8gPSAwOwogIGludCBm b28gPSByZ2Fpbjw8OCB8IHJnYWluOwogIGlucHV0cG9ydCA9IHA7CgogIGlmICghSGF2ZUF1 ZGlvKCkgKSB7CiAgICByZXR1cm47CiAgfQoKICBpZiAocCkgewogICAgLyogZm9yIHRoZSBn dXMgcG5wIGxpbmUgaW5wdXQgaXMgbGluZTMgOiggKi8KICAgIHplcm8gPSAxIDw8IFNPVU5E X01JWEVSX0xJTkUzOwogICAgaWYgKGlvY3RsKG1peGVyZmQsIFNPVU5EX01JWEVSX1dSSVRF X1JFQ1NSQywgJnplcm8pID09IC0xKSB7CiAgICAgIHByaW50ZigiZmFpbGVkIHRvIHNlbGVj dCBsaW5lIGlucHV0IFxuIik7CiAgICB9CgogIH0gZWxzZSB7CgogICAgemVybyA9IDEgPDwg U09VTkRfTUlYRVJfTUlDOwogICAgaWYgKCBpb2N0bChtaXhlcmZkLCBTT1VORF9NSVhFUl9X UklURV9SRUNTUkMsICZ6ZXJvKSA9PSAtMSApIHsKICAgICAgcHJpbnRmKCJmYWlsZWQgdG8g c2VsZWN0IG1pYyBpbnB1dCBcbiIpOwogICAgfQogIH0KCWlwb3J0ID0gcDsKfQoKCgoKdm9p ZCBWb3hXYXJlOjpSTXV0ZSgpCnsKCXJtdXRlIHw9IDE7Cgp9Cgp2b2lkIFZveFdhcmU6OlJV bm11dGUoKQp7CglybXV0ZSAmPX4gMTsKCn0KCgppbnQgVm94V2FyZTo6RnJhbWVSZWFkeSgp CnsKICBpbnQgaSwgaW87CiAgY291bnRfaW5mbyBpbmZvOwoKCiAgaW8gPSAgaW9jdGwoZmQs IFNORENUTF9EU1BfR0VUSVBUUiwgJmluZm8pOwoKICBpZiAoaW5mby5ibG9ja3MgPiAwICkg CiAgICBmcmFtZV9yZWFkeSA9IDE7CiAgZWxzZSBmcmFtZV9yZWFkeSA9IDA7CgogIHJldHVy biBmcmFtZV9yZWFkeTsKCgp9CgoKCg== --==_Exmh_2165216400 Content-Type: application/octet-stream ; name="group-ipc.cc" Content-Description: group-ipc.cc Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="group-ipc.cc" LyoKICogQ29weXJpZ2h0IChjKSAxOTkxLTE5OTQgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg ZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAgbXVzdCBkaXNwbGF5 IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKiAgICAgIFRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKICogICAg ICBDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgdGhlIE5ldHdvcmsgUmVzZWFyY2ggR3JvdXAg YXQKICogICAgICBMYXdyZW5jZSBCZXJrZWxleSBMYWJvcmF0b3J5LgogKiA0LiBOZWl0aGVy IHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciBvZiB0aGUgTGFib3JhdG9yeSBtYXkg YmUgdXNlZAogKiAgICB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAogKiAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJF R0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECiAqIEFOWSBFWFBSRVNTIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICogRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwKICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKICogT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ T04pCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKICog T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI RSBQT1NTSUJJTElUWSBPRgogKiBTVUNIIERBTUFHRS4KICovCgojaWZuZGVmIGxpbnQKc3Rh dGljIGNvbnN0IGNoYXIgcmNzaWRbXSA9CiAgICAiQCgjKSAkSGVhZGVyOiBncm91cC1pcGMu Y2MsdiAxLjIxIDk2LzAyLzA2IDE0OjQzOjMwIG1jY2FubmUgRXhwICQgKExCTCkiOwojZW5k aWYKCiNpZm5kZWYgV0lOMzIKI2luY2x1ZGUgPHVuaXN0ZC5oPgojZW5kaWYKI2luY2x1ZGUg PHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpZmRlZiBXSU4zMgojaW5jbHVkZSA8 d2luc29jay5oPgojZGVmaW5lIGNsb3NlIGNsb3Nlc29ja2V0CiNlbHNlCiNpbmNsdWRlIDxz eXMvcGFyYW0uaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHN5cy9pb2N0 bC5oPgojaW5jbHVkZSA8c3lzL3Vpby5oPgojZW5kaWYKI2luY2x1ZGUgPGZjbnRsLmg+Cgoj aW5jbHVkZSAiZ3JvdXAtaXBjLmgiCgojZGVmaW5lIEdST1VQX0lQQ19BRERSIDB4ZTBmZmRl ZWYKI2RlZmluZSBHUk9VUF9JUENfUE9SVCAweGRlYWYKCnN0YXRpYyB2b2lkIG5vbmJsb2Nr KGludCBmZCkKeyAgICAgICAKI2lmZGVmIFdJTjMyCgl1X2xvbmcgZmxhZyA9IDE7CglpZiAo aW9jdGxzb2NrZXQoZmQsIEZJT05CSU8sICZmbGFnKSA9PSAtMSkgewoJCWZwcmludGYoc3Rk ZXJyLCAiaW9jdGxzb2NrZXQ6IEZJT05CSU86ICVsdVxuIiwgR2V0TGFzdEVycm9yKCkpOwoJ CWV4aXQoMSk7Cgl9CiNlbHNlCiAgICAgICBpbnQgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRG TCwgMCk7CiNpZiBkZWZpbmVkKGhwdXgpIHx8IGRlZmluZWQoX19ocHV4KQogICAgICAgIGZs YWdzIHw9IE9fTk9OQkxPQ0s7CiNlbHNlCiAgICAgICAgZmxhZ3MgfD0gT19OT05CTE9DS3xP X05ERUxBWTsKI2VuZGlmCiAgICAgICAgaWYgKGZjbnRsKGZkLCBGX1NFVEZMLCBmbGFncykg PT0gLTEpIHsKICAgICAgICAgICAgICAgIHBlcnJvcigiZmNudGw6IEZfU0VURkwiKTsKICAg ICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgfQojZW5kaWYKfQoKSVBDSGFuZGxlcjo6 SVBDSGFuZGxlcihpbnQgbWFzaykgOiBtYXNrXyhtYXNrKSB7IH0KCiNpZmRlZiBJUF9BRERf TUVNQkVSU0hJUApHcm91cElQQzo6R3JvdXBJUEMoaW50IGNoYW5uZWwpIDogaGFuZGxlcnNf KDApCnsKCXJzb2NrXyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKCWlmIChy c29ja18gPCAwKSB7CgkJcGVycm9yKCJzb2NrZXQiKTsKCQlleGl0KDEpOwoJfQoJaW50IG9u ID0gMTsKCWlmIChzZXRzb2Nrb3B0KHJzb2NrXywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERS LCAoY2hhciAqKSZvbiwKCQkgICAgICAgc2l6ZW9mKG9uKSkgPCAwKSB7CgkJcGVycm9yKCJT T19SRVVTRUFERFIiKTsKCQlleGl0KDEpOwoJfQojaWZkZWYgU09fUkVVU0VQT1JUCglvbiA9 IDE7CglpZiAoc2V0c29ja29wdChyc29ja18sIFNPTF9TT0NLRVQsIFNPX1JFVVNFUE9SVCwg KGNoYXIgKikmb24sCgkJICAgICAgIHNpemVvZihvbikpIDwgMCkgewoJCXBlcnJvcigiU09f UkVVU0VQT1JUIik7CgkJZXhpdCgxKTsKCX0KI2VuZGlmCglzb2NrYWRkcl9pbiBzaW47Cglt ZW1zZXQoKGNoYXIgKikmc2luLCAwLCBzaXplb2Yoc2luKSk7CglzaW4uc2luX2ZhbWlseSA9 IEFGX0lORVQ7CglpbnQgcG9ydCA9IGh0b25zKEdST1VQX0lQQ19QT1JUICsgY2hhbm5lbCk7 CglzaW4uc2luX3BvcnQgPSBwb3J0OwoJc2luLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKEdS T1VQX0lQQ19BRERSKTsKCWlmIChiaW5kKHJzb2NrXywgKHN0cnVjdCBzb2NrYWRkciAqKSZz aW4sIHNpemVvZihzaW4pKSA8IDApIHsKCQlzaW4uc2luX2FkZHIuc19hZGRyID0gSU5BRERS X0FOWTsKCQlpZiAoYmluZChyc29ja18sIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXpl b2Yoc2luKSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEMgYmluZCIpOwoJCQljbG9zZShy c29ja18pOwoJCQlyc29ja18gPSAtMTsKCQkJc3NvY2tfID0gLTE7CgkJfQoJfQoJaWYgKHJz b2NrXyA+PSAwKSB7CgkJbm9uYmxvY2socnNvY2tfKTsKCgkJc3RydWN0IGlwX21yZXEgbXI7 CgkJbXIuaW1yX211bHRpYWRkci5zX2FkZHIgPSBodG9ubChHUk9VUF9JUENfQUREUik7CgkJ bXIuaW1yX2ludGVyZmFjZS5zX2FkZHIgPSBodG9ubChJTkFERFJfTE9PUEJBQ0spOwoJCWlm IChzZXRzb2Nrb3B0KHJzb2NrXywgSVBQUk9UT19JUCwgSVBfQUREX01FTUJFUlNISVAsIAoJ CQkgICAgICAgKGNoYXIgKikmbXIsIHNpemVvZihtcikpIDwgMCkgewoJCQkvKgoJCQkgKiBo b3N0IHByb2JhYmx5IGRvZXNuJ3QgaGF2ZSBtdWx0aWNhc3QKCQkJICovCgkJCWNsb3NlKHJz b2NrXyk7CgkJCXJzb2NrXyA9IC0xOwoJCQlzc29ja18gPSAtMTsKCQl9Cgl9IAoJaWYgKHJz b2NrXyA+PSAwKSB7CgkJbGluayhyc29ja18sIFRLX1JFQURBQkxFKTsKCQlzc29ja18gPSBz b2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CgkJaWYgKHNzb2NrXyA8IDApIHsKCQkJ cGVycm9yKCJHcm91cElQQyBzb2NrZXQiKTsKCQkJZXhpdCgxKTsKCQl9CgkJc2luLnNpbl9w b3J0ID0gMDsKCQlzaW4uc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNL KTsKCQlpZiAoYmluZChzc29ja18sIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yo c2luKSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEMgYmluZCIpOwoJCQlleGl0KDEpOwoJ CX0KCQlzaW4uc2luX3BvcnQgPSBwb3J0OwoJCXNpbi5zaW5fYWRkci5zX2FkZHIgPSBodG9u bChHUk9VUF9JUENfQUREUik7CgkJaWYgKGNvbm5lY3Qoc3NvY2tfLCAoc3RydWN0IHNvY2th ZGRyKikmc2luLCBzaXplb2Yoc2luKSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEMgY29u bmVjdCIpOwoJCQlleGl0KDEpOwoJCX0KCQljaGFyIHR0bCA9IDA7CgkJaWYgKHNldHNvY2tv cHQoc3NvY2tfLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfVFRMLAoJCQkgICAgICAgJnR0 bCwgMSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEM6IElQX01VTFRJQ0FTVF9UVEwiKTsK CQkJZXhpdCgxKTsKCQl9CgkJdV9pbnQzMl90IGFkZHIgPSBodG9ubChJTkFERFJfTE9PUEJB Q0spOwoJCWlmIChzZXRzb2Nrb3B0KHNzb2NrXywgSVBQUk9UT19JUCwgSVBfTVVMVElDQVNU X0lGLAoJCQkJKGNoYXIgKikmYWRkciwgNCkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEM6 IElQX01VTFRJQ0FTVF9JRiIpOwoJCQlleGl0KDEpOwoJCX0KI2lmIGRlZmluZWQodWx0cml4 KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQoJCXR0bCA9IDE7CgkJaWYgKHNldHNvY2tvcHQo c3NvY2tfLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfTE9PUCwKCQkJCSZ0dGwsIDEpIDwg MCkgewoJCQlwZXJyb3IoIkdyb3VwSVBDOiBJUF9NVUxUSUNBU1RfTE9PUCIpOwoJCQlleGl0 KDEpOwoJCX0KI2VuZGlmCgl9CglwaWRfID0gZ2V0cGlkKCk7Cn0KI2Vsc2UKR3JvdXBJUEM6 Okdyb3VwSVBDKGludCBjaGFubmVsKSA6IGhhbmRsZXJzXygwKSwgcnNvY2tfKC0xKSwgc3Nv Y2tfKC0xKQp7Cn0KI2VuZGlmCgpHcm91cElQQzo6fkdyb3VwSVBDKCkKewoJaWYgKHJzb2Nr XyA+PSAwKQoJCSh2b2lkKWNsb3NlKHJzb2NrXyk7CglpZiAoc3NvY2tfID49IDApCgkJKHZv aWQpY2xvc2Uoc3NvY2tfKTsKfQoKdm9pZCBHcm91cElQQzo6c2VuZChpbnQgdHlwZSwgaW50 IGxlbikKewoJaXBjaGRyKiBoID0gKGlwY2hkciopYnVmZmVyXzsKCWgtPnR5cGUgPSB0eXBl OwoJaC0+cGlkID0gcGlkXzsKCWgtPm1hZ2ljID0gR0lQQ19NQUdJQzsKCWxlbiArPSBzaXpl b2YoKmgpOwoJaWYgKHNzb2NrXyA+PSAwICYmIDo6c2VuZChzc29ja18sIChjaGFyKilidWZm ZXJfLCBsZW4sIDApIDwgMCkKCQlwZXJyb3IoIkdyb3VwSVBDIHNlbmQiKTsKfQoKdm9pZCBH cm91cElQQzo6c2VuZChpbnQgdHlwZSwgY29uc3QgY2hhciogbXNnKQp7CglzdHJjcHkoKGNo YXIqKWJ1ZmZlcigpLCBtc2cpOwoJLyogaW5jbHVkZSBudWxsIHRlcm1pbmF0b3IgKi8KCXNl bmQodHlwZSwgc3RybGVuKG1zZykgKyAxKTsKfQoKdm9pZCBHcm91cElQQzo6YXR0YWNoKElQ Q0hhbmRsZXIgKmgpCnsKCWgtPm5leHRfID0gaGFuZGxlcnNfOwoJaGFuZGxlcnNfID0gaDsK fQoKdm9pZCBHcm91cElQQzo6ZGlzcGF0Y2goaW50KQp7CglpbnQgY2MgPSByZWN2KHJzb2Nr XywgKGNoYXIqKWJ1ZmZlcl8sIHNpemVvZihidWZmZXJfKSwgMCk7CglpZiAoY2MgPCAwKSB7 CgkJcGVycm9yKCJHcm91cElQQzogcmVjdiIpOwoJCXJldHVybjsKCX0KCWNjIC09IHNpemVv ZihpcGNoZHIpOwoJaWYgKGNjIDwgMCkKCQlyZXR1cm47CgoJaXBjaGRyKiBoID0gKGlwY2hk ciopYnVmZmVyXzsKCWlmIChoLT5waWQgPT0gcGlkXykKCQlyZXR1cm47CgkJCglpbnQgYml0 ID0gMSA8PCBoLT50eXBlOwoJZm9yIChJUENIYW5kbGVyKiBwID0gaGFuZGxlcnNfOyBwICE9 IDA7IHAgPSBwLT5uZXh0XykgewoJCWlmIChwLT5tYXNrKCkgJiBiaXQpCgkJCXAtPmlwY19p bnB1dChoLT50eXBlLCBoLT5waWQsICh1X2NoYXIqKShoICsgMSksIGNjKTsKCX0KfQo= --==_Exmh_2165216400--