From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 05/11] ALSA: vsnd: Implement handling of shared buffers Date: Mon, 7 Aug 2017 10:43:10 +0300 Message-ID: <1502091796-14413-6-git-send-email-andr2000@gmail.com> References: <1502091796-14413-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1502091796-14413-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: alsa-devel@alsa-project.org, xen-devel@lists.xen.org, linux-kernel@vger.kernel.org Cc: andr2000@gmail.com, Oleksandr Andrushchenko , tiwai@suse.com, perex@perex.cz List-Id: alsa-devel@alsa-project.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSW1wbGVtZW50IHNoYXJlZCBidWZmZXIgaGFuZGxpbmcgYWNjb3JkaW5nIHRvIHRo ZQpwYXJhLXZpcnR1YWxpemVkIHNvdW5kIGRldmljZSBwcm90b2NvbCBhdCB4ZW4vaW50ZXJmYWNl L2lvL3NuZGlmLmg6Ci0gbWFuYWdlIGJ1ZmZlciBtZW1vcnkKLSBoYW5kbGUgZ3JhbnRlZCByZWZl cmVuY2VzCi0gaGFuZGxlIHBhZ2UgZGlyZWN0b3JpZXMKClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5k ciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KLS0tCiBz b3VuZC9kcml2ZXJzL3hlbi1mcm9udC5jIHwgMTc4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMveGVuLWZyb250LmMgYi9zb3VuZC9kcml2ZXJzL3hl bi1mcm9udC5jCmluZGV4IGE5MjQ1OWIyNzM3ZS4uMDRlYmMxNTc1N2Y0IDEwMDY0NAotLS0gYS9z b3VuZC9kcml2ZXJzL3hlbi1mcm9udC5jCisrKyBiL3NvdW5kL2RyaXZlcnMveGVuLWZyb250LmMK QEAgLTU4LDYgKzU4LDE0IEBAIHN0cnVjdCB4ZHJ2X2V2dGNobmxfaW5mbyB7CiAJdWludDE2X3Qg cmVzcF9pZDsKIH07CiAKK3N0cnVjdCBzaF9idWZfaW5mbyB7CisJaW50IG51bV9ncmVmczsKKwln cmFudF9yZWZfdCAqZ3JlZnM7CisJdWludDhfdCAqdmRpcmVjdG9yeTsKKwl1aW50OF90ICp2YnVm ZmVyOworCXNpemVfdCB2YnVmZmVyX3N6OworfTsKKwogc3RydWN0IGNmZ19zdHJlYW0gewogCWlu dCB1bmlxdWVfaWQ7CiAJY2hhciAqeGVuc3RvcmVfcGF0aDsKQEAgLTgyNSw2ICs4MzMsMTc2IEBA IHN0YXRpYyB2b2lkIHhkcnZfcmVtb3ZlX2ludGVybmFsKHN0cnVjdCB4ZHJ2X2luZm8gKmRydl9p bmZvKQogCXhkcnZfZXZ0Y2hubF9mcmVlX2FsbChkcnZfaW5mbyk7CiB9CiAKK3N0YXRpYyBpbmxp bmUgZ3JhbnRfcmVmX3Qgc2hfYnVmX2dldF9kaXJfc3RhcnQoc3RydWN0IHNoX2J1Zl9pbmZvICpi dWYpCit7CisJaWYgKCFidWYtPmdyZWZzKQorCQlyZXR1cm4gR1JBTlRfSU5WQUxJRF9SRUY7CisJ cmV0dXJuIGJ1Zi0+Z3JlZnNbMF07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzaF9idWZfY2xl YXIoc3RydWN0IHNoX2J1Zl9pbmZvICpidWYpCit7CisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpi dWYpKTsKK30KKworc3RhdGljIHZvaWQgc2hfYnVmX2ZyZWUoc3RydWN0IHNoX2J1Zl9pbmZvICpi dWYpCit7CisJaW50IGk7CisKKwlpZiAoYnVmLT5ncmVmcykgeworCQlmb3IgKGkgPSAwOyBpIDwg YnVmLT5udW1fZ3JlZnM7IGkrKykKKwkJCWlmIChidWYtPmdyZWZzW2ldICE9IEdSQU5UX0lOVkFM SURfUkVGKQorCQkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3MoYnVmLT5ncmVmc1tpXSwKKwkJ CQkJCTAsIDBVTCk7CisJCWtmcmVlKGJ1Zi0+Z3JlZnMpOworCX0KKwlrZnJlZShidWYtPnZkaXJl Y3RvcnkpOworCWZyZWVfcGFnZXNfZXhhY3QoYnVmLT52YnVmZmVyLCBidWYtPnZidWZmZXJfc3op OworCXNoX2J1Zl9jbGVhcihidWYpOworfQorCisvKgorICogbnVtYmVyIG9mIGdyYW50IHJlZmVy ZW5jZXMgYSBwYWdlIGNhbiBob2xkIHdpdGggcmVzcGVjdCB0byB0aGUKKyAqIHhlbmRpc3BsX3Bh Z2VfZGlyZWN0b3J5IGhlYWRlcgorICovCisjZGVmaW5lIFhFTlNORF9OVU1fR1JFRlNfUEVSX1BB R0UgKChYRU5fUEFHRV9TSVpFIC0gXAorCW9mZnNldG9mKHN0cnVjdCB4ZW5zbmRfcGFnZV9kaXJl Y3RvcnksIGdyZWYpKSAvIFwKKwlzaXplb2YoZ3JhbnRfcmVmX3QpKQorCitzdGF0aWMgdm9pZCBz aF9idWZfZmlsbF9wYWdlX2RpcihzdHJ1Y3Qgc2hfYnVmX2luZm8gKmJ1ZiwgaW50IG51bV9wYWdl c19kaXIpCit7CisJc3RydWN0IHhlbnNuZF9wYWdlX2RpcmVjdG9yeSAqcGFnZV9kaXI7CisJdW5z aWduZWQgY2hhciAqcHRyOworCWludCBpLCBjdXJfZ3JlZiwgZ3JlZnNfbGVmdCwgdG9fY29weTsK KworCXB0ciA9IGJ1Zi0+dmRpcmVjdG9yeTsKKwlncmVmc19sZWZ0ID0gYnVmLT5udW1fZ3JlZnMg LSBudW1fcGFnZXNfZGlyOworCS8qCisJICogc2tpcCBncmFudCByZWZlcmVuY2VzIGF0IHRoZSBi ZWdpbm5pbmcsIHRoZXkgYXJlIGZvciBwYWdlcyBncmFudGVkCisJICogZm9yIHRoZSBwYWdlIGRp cmVjdG9yeSBpdHNlbGYKKwkgKi8KKwljdXJfZ3JlZiA9IG51bV9wYWdlc19kaXI7CisJZm9yIChp ID0gMDsgaSA8IG51bV9wYWdlc19kaXI7IGkrKykgeworCQlwYWdlX2RpciA9IChzdHJ1Y3QgeGVu c25kX3BhZ2VfZGlyZWN0b3J5ICopcHRyOworCQlpZiAoZ3JlZnNfbGVmdCA8PSBYRU5TTkRfTlVN X0dSRUZTX1BFUl9QQUdFKSB7CisJCQl0b19jb3B5ID0gZ3JlZnNfbGVmdDsKKwkJCXBhZ2VfZGly LT5ncmVmX2Rpcl9uZXh0X3BhZ2UgPSBHUkFOVF9JTlZBTElEX1JFRjsKKwkJfSBlbHNlIHsKKwkJ CXRvX2NvcHkgPSBYRU5TTkRfTlVNX0dSRUZTX1BFUl9QQUdFOworCQkJcGFnZV9kaXItPmdyZWZf ZGlyX25leHRfcGFnZSA9IGJ1Zi0+Z3JlZnNbaSArIDFdOworCQl9CisJCW1lbWNweSgmcGFnZV9k aXItPmdyZWYsICZidWYtPmdyZWZzW2N1cl9ncmVmXSwKKwkJCXRvX2NvcHkgKiBzaXplb2YoZ3Jh bnRfcmVmX3QpKTsKKwkJcHRyICs9IFhFTl9QQUdFX1NJWkU7CisJCWdyZWZzX2xlZnQgLT0gdG9f Y29weTsKKwkJY3VyX2dyZWYgKz0gdG9fY29weTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgc2hfYnVm X2dyYW50X3JlZnMoc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhiX2RldiwKKwlzdHJ1Y3Qgc2hfYnVm X2luZm8gKmJ1ZiwKKwlpbnQgbnVtX3BhZ2VzX2RpciwgaW50IG51bV9wYWdlc192YnVmZmVyLCBp bnQgbnVtX2dyZWZzKQoreworCWdyYW50X3JlZl90IHByaXZfZ3JlZl9oZWFkOworCWludCByZXQs IGksIGosIGN1cl9yZWY7CisJaW50IG90aGVyZW5kX2lkOworCisJcmV0ID0gZ250dGFiX2FsbG9j X2dyYW50X3JlZmVyZW5jZXMobnVtX2dyZWZzLCAmcHJpdl9ncmVmX2hlYWQpOworCWlmIChyZXQp CisJCXJldHVybiByZXQ7CisKKwlidWYtPm51bV9ncmVmcyA9IG51bV9ncmVmczsKKwlvdGhlcmVu ZF9pZCA9IHhiX2Rldi0+b3RoZXJlbmRfaWQ7CisJaiA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwg bnVtX3BhZ2VzX2RpcjsgaSsrKSB7CisJCWN1cl9yZWYgPSBnbnR0YWJfY2xhaW1fZ3JhbnRfcmVm ZXJlbmNlKCZwcml2X2dyZWZfaGVhZCk7CisJCWlmIChjdXJfcmVmIDwgMCkgeworCQkJcmV0ID0g Y3VyX3JlZjsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCisJCWdudHRhYl9ncmFudF9mb3JlaWduX2Fj Y2Vzc19yZWYoY3VyX3JlZiwgb3RoZXJlbmRfaWQsCisJCQl4ZW5fcGFnZV90b19nZm4odmlydF90 b19wYWdlKGJ1Zi0+dmRpcmVjdG9yeSArCisJCQkJWEVOX1BBR0VfU0laRSAqIGkpKSwgMCk7CisJ CWJ1Zi0+Z3JlZnNbaisrXSA9IGN1cl9yZWY7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG51bV9w YWdlc192YnVmZmVyOyBpKyspIHsKKwkJY3VyX3JlZiA9IGdudHRhYl9jbGFpbV9ncmFudF9yZWZl cmVuY2UoJnByaXZfZ3JlZl9oZWFkKTsKKwkJaWYgKGN1cl9yZWYgPCAwKSB7CisJCQlyZXQgPSBj dXJfcmVmOworCQkJZ290byBmYWlsOworCQl9CisKKwkJZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNj ZXNzX3JlZihjdXJfcmVmLCBvdGhlcmVuZF9pZCwKKwkJCXhlbl9wYWdlX3RvX2dmbih2aXJ0X3Rv X3BhZ2UoYnVmLT52YnVmZmVyICsKKwkJCQlYRU5fUEFHRV9TSVpFICogaSkpLCAwKTsKKwkJYnVm LT5ncmVmc1tqKytdID0gY3VyX3JlZjsKKwl9CisKKwlnbnR0YWJfZnJlZV9ncmFudF9yZWZlcmVu Y2VzKHByaXZfZ3JlZl9oZWFkKTsKKwlzaF9idWZfZmlsbF9wYWdlX2RpcihidWYsIG51bV9wYWdl c19kaXIpOworCXJldHVybiAwOworCitmYWlsOgorCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5j ZXMocHJpdl9ncmVmX2hlYWQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgc2hfYnVm X2FsbG9jX2ludF9idWZmZXJzKHN0cnVjdCBzaF9idWZfaW5mbyAqYnVmLAorCQlpbnQgbnVtX3Bh Z2VzX2RpciwgaW50IG51bV9wYWdlc192YnVmZmVyLCBpbnQgbnVtX2dyZWZzKQoreworCWJ1Zi0+ Z3JlZnMgPSBrY2FsbG9jKG51bV9ncmVmcywgc2l6ZW9mKCpidWYtPmdyZWZzKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFidWYtPmdyZWZzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWJ1Zi0+dmRpcmVj dG9yeSA9IGtjYWxsb2MobnVtX3BhZ2VzX2RpciwgWEVOX1BBR0VfU0laRSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFidWYtPnZkaXJlY3RvcnkpCisJCWdvdG8gZmFpbDsKKworCWJ1Zi0+dmJ1ZmZlcl9z eiA9IG51bV9wYWdlc192YnVmZmVyICogWEVOX1BBR0VfU0laRTsKKwlidWYtPnZidWZmZXIgPSBh bGxvY19wYWdlc19leGFjdChidWYtPnZidWZmZXJfc3osIEdGUF9LRVJORUwpOworCWlmICghYnVm LT52YnVmZmVyKQorCQlnb3RvIGZhaWw7CisJcmV0dXJuIDA7CisKK2ZhaWw6CisJa2ZyZWUoYnVm LT5ncmVmcyk7CisJYnVmLT5ncmVmcyA9IE5VTEw7CisJa2ZyZWUoYnVmLT52ZGlyZWN0b3J5KTsK KwlidWYtPnZkaXJlY3RvcnkgPSBOVUxMOworCXJldHVybiAtRU5PTUVNOworfQorCitzdGF0aWMg aW50IHNoX2J1Zl9hbGxvYyhzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJfZGV2LAorCXN0cnVjdCBz aF9idWZfaW5mbyAqYnVmLCB1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemUpCit7CisJaW50IG51bV9w YWdlc192YnVmZmVyLCBudW1fcGFnZXNfZGlyLCBudW1fZ3JlZnM7CisJaW50IHJldDsKKworCXNo X2J1Zl9jbGVhcihidWYpOworCisJbnVtX3BhZ2VzX3ZidWZmZXIgPSBESVZfUk9VTkRfVVAoYnVm ZmVyX3NpemUsIFhFTl9QQUdFX1NJWkUpOworCS8qIG51bWJlciBvZiBwYWdlcyB0aGUgcGFnZSBk aXJlY3RvcnkgY29uc3VtZXMgaXRzZWxmICovCisJbnVtX3BhZ2VzX2RpciA9IERJVl9ST1VORF9V UChudW1fcGFnZXNfdmJ1ZmZlciwKKwkJWEVOU05EX05VTV9HUkVGU19QRVJfUEFHRSk7CisJbnVt X2dyZWZzID0gbnVtX3BhZ2VzX3ZidWZmZXIgKyBudW1fcGFnZXNfZGlyOworCisJcmV0ID0gc2hf YnVmX2FsbG9jX2ludF9idWZmZXJzKGJ1ZiwgbnVtX3BhZ2VzX2RpciwKKwkJbnVtX3BhZ2VzX3Zi dWZmZXIsIG51bV9ncmVmcyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQg PSBzaF9idWZfZ3JhbnRfcmVmcyh4Yl9kZXYsIGJ1ZiwKKwkJbnVtX3BhZ2VzX2RpciwgbnVtX3Bh Z2VzX3ZidWZmZXIsIG51bV9ncmVmcyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK KwlzaF9idWZfZmlsbF9wYWdlX2RpcihidWYsIG51bV9wYWdlc19kaXIpOworCXJldHVybiAwOwor fQorCiBzdGF0aWMgaW50IHhkcnZfYmVfb25faW5pdHdhaXQoc3RydWN0IHhkcnZfaW5mbyAqZHJ2 X2luZm8pCiB7CiAJaW50IHN0cmVhbV9pZHg7Ci0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=