From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3AF4EC4360C for ; Fri, 4 Oct 2019 10:58:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 15B2D20867 for ; Fri, 4 Oct 2019 10:58:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730507AbfJDK6J (ORCPT ); Fri, 4 Oct 2019 06:58:09 -0400 Received: from mx2.suse.de ([195.135.220.15]:55162 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729065AbfJDK6G (ORCPT ); Fri, 4 Oct 2019 06:58:06 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 56368AD12; Fri, 4 Oct 2019 10:58:04 +0000 (UTC) From: =?UTF-8?q?Michal=20Koutn=C3=BD?= To: cgroups@vger.kernel.org Cc: Tejun Heo , linux-kernel@vger.kernel.org, Li Zefan , Johannes Weiner Subject: [PATCH 3/5] selftests: cgroup: Simplify task self migration Date: Fri, 4 Oct 2019 12:57:41 +0200 Message-Id: <20191004105743.363-4-mkoutny@suse.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191004105743.363-1-mkoutny@suse.com> References: <20191004105743.363-1-mkoutny@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Simplify task migration by being oblivious about its PID during migration. This allows to easily migrate individual threads as well. This change brings no functional change and prepares grounds for thread granularity migrating tests. Signed-off-by: Michal Koutný --- tools/testing/selftests/cgroup/cgroup_util.c | 16 +++++++++++----- tools/testing/selftests/cgroup/cgroup_util.h | 4 +++- tools/testing/selftests/cgroup/test_freezer.c | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/cgroup/cgroup_util.c b/tools/testing/selftests/cgroup/cgroup_util.c index bdb69599c4bd..f6573eac1365 100644 --- a/tools/testing/selftests/cgroup/cgroup_util.c +++ b/tools/testing/selftests/cgroup/cgroup_util.c @@ -282,10 +282,12 @@ int cg_enter(const char *cgroup, int pid) int cg_enter_current(const char *cgroup) { - char pidbuf[64]; + return cg_write(cgroup, "cgroup.procs", "0"); +} - snprintf(pidbuf, sizeof(pidbuf), "%d", getpid()); - return cg_write(cgroup, "cgroup.procs", pidbuf); +int cg_enter_current_thread(const char *cgroup) +{ + return cg_write(cgroup, "cgroup.threads", "0"); } int cg_run(const char *cgroup, @@ -410,11 +412,15 @@ int set_oom_adj_score(int pid, int score) return 0; } -char proc_read_text(int pid, const char *item, char *buf, size_t size) +ssize_t proc_read_text(int pid, bool thread, const char *item, char *buf, size_t size) { char path[PATH_MAX]; - snprintf(path, sizeof(path), "/proc/%d/%s", pid, item); + if (!pid) + snprintf(path, sizeof(path), "/proc/%s/%s", + thread ? "thread-self" : "self", item); + else + snprintf(path, sizeof(path), "/proc/%d/%s", pid, item); return read_text(path, buf, size); } diff --git a/tools/testing/selftests/cgroup/cgroup_util.h b/tools/testing/selftests/cgroup/cgroup_util.h index c72f28046bfa..27ff21d82af1 100644 --- a/tools/testing/selftests/cgroup/cgroup_util.h +++ b/tools/testing/selftests/cgroup/cgroup_util.h @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#include #include #define PAGE_SIZE 4096 @@ -35,6 +36,7 @@ extern int cg_run(const char *cgroup, void *arg); extern int cg_enter(const char *cgroup, int pid); extern int cg_enter_current(const char *cgroup); +extern int cg_enter_current_thread(const char *cgroup); extern int cg_run_nowait(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg); @@ -45,4 +47,4 @@ extern int is_swap_enabled(void); extern int set_oom_adj_score(int pid, int score); extern int cg_wait_for_proc_count(const char *cgroup, int count); extern int cg_killall(const char *cgroup); -extern char proc_read_text(int pid, const char *item, char *buf, size_t size); +extern ssize_t proc_read_text(int pid, bool thread, const char *item, char *buf, size_t size); diff --git a/tools/testing/selftests/cgroup/test_freezer.c b/tools/testing/selftests/cgroup/test_freezer.c index 8219a30853d2..5896e35168cd 100644 --- a/tools/testing/selftests/cgroup/test_freezer.c +++ b/tools/testing/selftests/cgroup/test_freezer.c @@ -648,7 +648,7 @@ static int proc_check_stopped(int pid) char buf[PAGE_SIZE]; int len; - len = proc_read_text(pid, "stat", buf, sizeof(buf)); + len = proc_read_text(pid, 0, "stat", buf, sizeof(buf)); if (len == -1) { debug("Can't get %d stat\n", pid); return -1; -- 2.21.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Michal=20Koutn=C3=BD?= Subject: [PATCH 3/5] selftests: cgroup: Simplify task self migration Date: Fri, 4 Oct 2019 12:57:41 +0200 Message-ID: <20191004105743.363-4-mkoutny@suse.com> References: <20191004105743.363-1-mkoutny@suse.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191004105743.363-1-mkoutny@suse.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="macroman" To: cgroups@vger.kernel.org Cc: Tejun Heo , linux-kernel@vger.kernel.org, Li Zefan , Johannes Weiner U2ltcGxpZnkgdGFzayBtaWdyYXRpb24gYnkgYmVpbmcgb2JsaXZpb3VzIGFib3V0IGl0cyBQSUQg ZHVyaW5nCm1pZ3JhdGlvbi4gVGhpcyBhbGxvd3MgdG8gZWFzaWx5IG1pZ3JhdGUgaW5kaXZpZHVh bCB0aHJlYWRzIGFzIHdlbGwuClRoaXMgY2hhbmdlIGJyaW5ncyBubyBmdW5jdGlvbmFsIGNoYW5n ZSBhbmQgcHJlcGFyZXMgZ3JvdW5kcyBmb3IgdGhyZWFkCmdyYW51bGFyaXR5IG1pZ3JhdGluZyB0 ZXN0cy4KClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBLb3V0bsO9IDxta291dG55QHN1c2UuY29tPgot LS0KIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC9jZ3JvdXBfdXRpbC5jICB8IDE2ICsr KysrKysrKysrLS0tLS0KIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC9jZ3JvdXBfdXRp bC5oICB8ICA0ICsrKy0KIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC90ZXN0X2ZyZWV6 ZXIuYyB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2dyb3VwL2Nncm91 cF91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvY2dyb3VwX3V0aWwuYwpp bmRleCBiZGI2OTU5OWM0YmQuLmY2NTczZWFjMTM2NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvY2dyb3VwL2Nncm91cF91dGlsLmMKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvY2dyb3VwL2Nncm91cF91dGlsLmMKQEAgLTI4MiwxMCArMjgyLDEyIEBAIGludCBjZ19l bnRlcihjb25zdCBjaGFyICpjZ3JvdXAsIGludCBwaWQpCiAKIGludCBjZ19lbnRlcl9jdXJyZW50 KGNvbnN0IGNoYXIgKmNncm91cCkKIHsKLQljaGFyIHBpZGJ1Zls2NF07CisJcmV0dXJuIGNnX3dy aXRlKGNncm91cCwgImNncm91cC5wcm9jcyIsICIwIik7Cit9CiAKLQlzbnByaW50ZihwaWRidWYs IHNpemVvZihwaWRidWYpLCAiJWQiLCBnZXRwaWQoKSk7Ci0JcmV0dXJuIGNnX3dyaXRlKGNncm91 cCwgImNncm91cC5wcm9jcyIsIHBpZGJ1Zik7CitpbnQgY2dfZW50ZXJfY3VycmVudF90aHJlYWQo Y29uc3QgY2hhciAqY2dyb3VwKQoreworCXJldHVybiBjZ193cml0ZShjZ3JvdXAsICJjZ3JvdXAu dGhyZWFkcyIsICIwIik7CiB9CiAKIGludCBjZ19ydW4oY29uc3QgY2hhciAqY2dyb3VwLApAQCAt NDEwLDExICs0MTIsMTUgQEAgaW50IHNldF9vb21fYWRqX3Njb3JlKGludCBwaWQsIGludCBzY29y ZSkKIAlyZXR1cm4gMDsKIH0KIAotY2hhciBwcm9jX3JlYWRfdGV4dChpbnQgcGlkLCBjb25zdCBj aGFyICppdGVtLCBjaGFyICpidWYsIHNpemVfdCBzaXplKQorc3NpemVfdCBwcm9jX3JlYWRfdGV4 dChpbnQgcGlkLCBib29sIHRocmVhZCwgY29uc3QgY2hhciAqaXRlbSwgY2hhciAqYnVmLCBzaXpl X3Qgc2l6ZSkKIHsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwogCi0Jc25wcmludGYocGF0aCwgc2l6 ZW9mKHBhdGgpLCAiL3Byb2MvJWQvJXMiLCBwaWQsIGl0ZW0pOworCWlmICghcGlkKQorCQlzbnBy aW50ZihwYXRoLCBzaXplb2YocGF0aCksICIvcHJvYy8lcy8lcyIsCisJCQkgdGhyZWFkID8gInRo cmVhZC1zZWxmIiA6ICJzZWxmIiwgaXRlbSk7CisJZWxzZQorCQlzbnByaW50ZihwYXRoLCBzaXpl b2YocGF0aCksICIvcHJvYy8lZC8lcyIsIHBpZCwgaXRlbSk7CiAKIAlyZXR1cm4gcmVhZF90ZXh0 KHBhdGgsIGJ1Ziwgc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9jZ3JvdXAvY2dyb3VwX3V0aWwuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC9j Z3JvdXBfdXRpbC5oCmluZGV4IGM3MmYyODA0NmJmYS4uMjdmZjIxZDgyYWYxIDEwMDY0NAotLS0g YS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvY2dyb3VwX3V0aWwuaAorKysgYi90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvY2dyb3VwX3V0aWwuaApAQCAtMSw0ICsxLDUgQEAK IC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisjaW5jbHVkZSA8c3RkYm9v bC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjZGVmaW5lIFBBR0VfU0laRSA0MDk2CkBAIC0z NSw2ICszNiw3IEBAIGV4dGVybiBpbnQgY2dfcnVuKGNvbnN0IGNoYXIgKmNncm91cCwKIAkJICB2 b2lkICphcmcpOwogZXh0ZXJuIGludCBjZ19lbnRlcihjb25zdCBjaGFyICpjZ3JvdXAsIGludCBw aWQpOwogZXh0ZXJuIGludCBjZ19lbnRlcl9jdXJyZW50KGNvbnN0IGNoYXIgKmNncm91cCk7Citl eHRlcm4gaW50IGNnX2VudGVyX2N1cnJlbnRfdGhyZWFkKGNvbnN0IGNoYXIgKmNncm91cCk7CiBl eHRlcm4gaW50IGNnX3J1bl9ub3dhaXQoY29uc3QgY2hhciAqY2dyb3VwLAogCQkJIGludCAoKmZu KShjb25zdCBjaGFyICpjZ3JvdXAsIHZvaWQgKmFyZyksCiAJCQkgdm9pZCAqYXJnKTsKQEAgLTQ1 LDQgKzQ3LDQgQEAgZXh0ZXJuIGludCBpc19zd2FwX2VuYWJsZWQodm9pZCk7CiBleHRlcm4gaW50 IHNldF9vb21fYWRqX3Njb3JlKGludCBwaWQsIGludCBzY29yZSk7CiBleHRlcm4gaW50IGNnX3dh aXRfZm9yX3Byb2NfY291bnQoY29uc3QgY2hhciAqY2dyb3VwLCBpbnQgY291bnQpOwogZXh0ZXJu IGludCBjZ19raWxsYWxsKGNvbnN0IGNoYXIgKmNncm91cCk7Ci1leHRlcm4gY2hhciBwcm9jX3Jl YWRfdGV4dChpbnQgcGlkLCBjb25zdCBjaGFyICppdGVtLCBjaGFyICpidWYsIHNpemVfdCBzaXpl KTsKK2V4dGVybiBzc2l6ZV90IHByb2NfcmVhZF90ZXh0KGludCBwaWQsIGJvb2wgdGhyZWFkLCBj b25zdCBjaGFyICppdGVtLCBjaGFyICpidWYsIHNpemVfdCBzaXplKTsKZGlmZiAtLWdpdCBhL3Rv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC90ZXN0X2ZyZWV6ZXIuYyBiL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL2Nncm91cC90ZXN0X2ZyZWV6ZXIuYwppbmRleCA4MjE5YTMwODUzZDIuLjU4 OTZlMzUxNjhjZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2dyb3VwL3Rl c3RfZnJlZXplci5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC90ZXN0X2Zy ZWV6ZXIuYwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBpbnQgcHJvY19jaGVja19zdG9wcGVk KGludCBwaWQpCiAJY2hhciBidWZbUEFHRV9TSVpFXTsKIAlpbnQgbGVuOwogCi0JbGVuID0gcHJv Y19yZWFkX3RleHQocGlkLCAic3RhdCIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCWxlbiA9IHByb2Nf cmVhZF90ZXh0KHBpZCwgMCwgInN0YXQiLCBidWYsIHNpemVvZihidWYpKTsKIAlpZiAobGVuID09 IC0xKSB7CiAJCWRlYnVnKCJDYW4ndCBnZXQgJWQgc3RhdFxuIiwgcGlkKTsKIAkJcmV0dXJuIC0x OwotLSAKMi4yMS4wCgo=