From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [PATCH v10 02/18] thread_info: Add update_thread_flag() helpers Date: Wed, 23 May 2018 14:46:52 +0100 Message-ID: <87po1mtrg3.fsf@linaro.org> References: <1527005119-6842-1-git-send-email-Dave.Martin@arm.com> <1527005119-6842-3-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1527005119-6842-3-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Dave Martin Cc: Christoffer Dall , Ard Biesheuvel , Marc Zyngier , Catalin Marinas , Will Deacon , Oleg Nesterov , Peter Zijlstra , Ingo Molnar , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org List-Id: kvmarm@lists.cs.columbia.edu CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IFRoZXJlIGFyZSBh IG51bWJlciBvZiBiaXRzIG9mIGNvZGUgc3ByaW5rbGVkIGFyb3VuZCB0aGUga2VybmVsIHRvCj4g c2V0IGEgdGhyZWFkIGZsYWcgaWYgYSBjZXJ0YWluIGNvbmRpdGlvbiBpcyB0cnVlLCBhbmQgY2xl YXIgaXQKPiBvdGhlcndpc2UuCj4KPiBUbyBoZWxwIG1ha2UgdGhvc2UgY2FsbCBzaXRlcyB0ZXJz ZXIgYW5kIGxlc3MgY3VtYmVyc29tZSwgdGhpcwo+IHBhdGNoIGFkZHMgYSBuZXcgZmFtaWx5IG9m IHRocmVhZCBmbGFnIG1hbmlwdWxhdG9ycwo+Cj4gCXVwZGF0ZSpfdGhyZWFkX2ZsYWcoWy4uLixd IGZsYWcsIGNvbmQpCj4KPiB3aGljaCBkbyB0aGUgZXF1aXZhbGVudCBvZjoKPgo+IAlpZiAoY29u ZCkKPiAJCXNldCpfdGhyZWFkX2ZsYWcoWy4uLixdIGZsYWcpOwo+IAllbHNlCj4gCQljbGVhcipf dGhyZWFkX2ZsYWcoWy4uLixdIGZsYWcpOwo+Cj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBNYXJ0aW4g PERhdmUuTWFydGluQGFybS5jb20+Cj4gQWNrZWQtYnk6IFN0ZXZlbiBSb3N0ZWR0IChWTXdhcmUp IDxyb3N0ZWR0QGdvb2RtaXMub3JnPgo+IEFja2VkLWJ5OiBNYXJjIFp5bmdpZXIgPG1hcmMuenlu Z2llckBhcm0uY29tPgo+IEFja2VkLWJ5OiBDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFyaW5h c0Bhcm0uY29tPgo+IENjOiBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KPiBDYzogUGV0 ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgo+IENjOiBPbGVnIE5lc3Rlcm92IDxv bGVnQHJlZGhhdC5jb20+Cj4gLS0tCj4gIGluY2x1ZGUvbGludXgvc2NoZWQuaCAgICAgICB8ICA2 ICsrKysrKwo+ICBpbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmggfCAxMSArKysrKysrKysrKwo+ ICAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKPiBpbmRleCBiM2Q2OTdm Li5jMmMzMDUxIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaAo+ICsrKyBiL2lu Y2x1ZGUvbGludXgvc2NoZWQuaAo+IEBAIC0xNTc4LDYgKzE1NzgsMTIgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGNsZWFyX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50 IGZsYWcpCj4gIAljbGVhcl90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZvKHRzayksIGZs YWcpOwo+ICB9Cj4KPiArc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZV90c2tfdGhyZWFkX2ZsYWco c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnLAo+ICsJCQkJCSAgYm9vbCB2YWx1ZSkK PiArewo+ICsJdXBkYXRlX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxh ZywgdmFsdWUpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW5saW5lIGludCB0ZXN0X2FuZF9zZXRfdHNr X3RocmVhZF9mbGFnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKPiAgewo+ICAJ cmV0dXJuIHRlc3RfYW5kX3NldF90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZvKHRzayks IGZsYWcpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmggYi9pbmNs dWRlL2xpbnV4L3RocmVhZF9pbmZvLmgKPiBpbmRleCBjZjI4NjJiLi44ZDg4MjFiIDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaAo+ICsrKyBiL2luY2x1ZGUvbGludXgv dGhyZWFkX2luZm8uaAo+IEBAIC02MCw2ICs2MCwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xl YXJfdGlfdGhyZWFkX2ZsYWcoc3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCj4gIAlj bGVhcl9iaXQoZmxhZywgKHVuc2lnbmVkIGxvbmcgKikmdGktPmZsYWdzKTsKPiAgfQo+Cj4gK3N0 YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfdGlfdGhyZWFkX2ZsYWcoc3RydWN0IHRocmVhZF9pbmZv ICp0aSwgaW50IGZsYWcsCj4gKwkJCQkJIGJvb2wgdmFsdWUpCj4gK3sKPiArCWlmICh2YWx1ZSkK PiArCQlzZXRfdGlfdGhyZWFkX2ZsYWcodGksIGZsYWcpOwo+ICsJZWxzZQo+ICsJCWNsZWFyX3Rp X3RocmVhZF9mbGFnKHRpLCBmbGFnKTsKPiArfQo+ICsKCnZhbHVlIGRvZXMgc2VlbSBhIGJpdCBv ZiB2YW5pbGxhIG5vbi1pbmZvcm1hdGl2ZSBuYW1lIGZvciBhIGNvbmRpdGlvbgpmbGFnIGJ1dCB3 aGF0ZXZlcjoKClJldmlld2VkLWJ5OiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFyby5v cmc+CgoKPiAgc3RhdGljIGlubGluZSBpbnQgdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBmbGFnKQo+ICB7Cj4gIAlyZXR1cm4gdGVzdF9hbmRf c2V0X2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+ZmxhZ3MpOwo+IEBAIC03OSw2ICs4 OCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHRlc3RfdGlfdGhyZWFkX2ZsYWcoc3RydWN0IHRocmVh ZF9pbmZvICp0aSwgaW50IGZsYWcpCj4gIAlzZXRfdGlfdGhyZWFkX2ZsYWcoY3VycmVudF90aHJl YWRfaW5mbygpLCBmbGFnKQo+ICAjZGVmaW5lIGNsZWFyX3RocmVhZF9mbGFnKGZsYWcpIFwKPiAg CWNsZWFyX3RpX3RocmVhZF9mbGFnKGN1cnJlbnRfdGhyZWFkX2luZm8oKSwgZmxhZykKPiArI2Rl ZmluZSB1cGRhdGVfdGhyZWFkX2ZsYWcoZmxhZywgdmFsdWUpIFwKPiArCXVwZGF0ZV90aV90aHJl YWRfZmxhZyhjdXJyZW50X3RocmVhZF9pbmZvKCksIGZsYWcsIHZhbHVlKQo+ICAjZGVmaW5lIHRl c3RfYW5kX3NldF90aHJlYWRfZmxhZyhmbGFnKSBcCj4gIAl0ZXN0X2FuZF9zZXRfdGlfdGhyZWFk X2ZsYWcoY3VycmVudF90aHJlYWRfaW5mbygpLCBmbGFnKQo+ICAjZGVmaW5lIHRlc3RfYW5kX2Ns ZWFyX3RocmVhZF9mbGFnKGZsYWcpIFwKCgotLQpBbGV4IEJlbm7DqWUKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: alex.bennee@linaro.org (Alex =?utf-8?Q?Benn=C3=A9e?=) Date: Wed, 23 May 2018 14:46:52 +0100 Subject: [PATCH v10 02/18] thread_info: Add update_thread_flag() helpers In-Reply-To: <1527005119-6842-3-git-send-email-Dave.Martin@arm.com> References: <1527005119-6842-1-git-send-email-Dave.Martin@arm.com> <1527005119-6842-3-git-send-email-Dave.Martin@arm.com> Message-ID: <87po1mtrg3.fsf@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Dave Martin writes: > There are a number of bits of code sprinkled around the kernel to > set a thread flag if a certain condition is true, and clear it > otherwise. > > To help make those call sites terser and less cumbersome, this > patch adds a new family of thread flag manipulators > > update*_thread_flag([...,] flag, cond) > > which do the equivalent of: > > if (cond) > set*_thread_flag([...,] flag); > else > clear*_thread_flag([...,] flag); > > Signed-off-by: Dave Martin > Acked-by: Steven Rostedt (VMware) > Acked-by: Marc Zyngier > Acked-by: Catalin Marinas > Cc: Ingo Molnar > Cc: Peter Zijlstra > Cc: Oleg Nesterov > --- > include/linux/sched.h | 6 ++++++ > include/linux/thread_info.h | 11 +++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/include/linux/sched.h b/include/linux/sched.h > index b3d697f..c2c3051 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -1578,6 +1578,12 @@ static inline void clear_tsk_thread_flag(struct task_struct *tsk, int flag) > clear_ti_thread_flag(task_thread_info(tsk), flag); > } > > +static inline void update_tsk_thread_flag(struct task_struct *tsk, int flag, > + bool value) > +{ > + update_ti_thread_flag(task_thread_info(tsk), flag, value); > +} > + > static inline int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag) > { > return test_and_set_ti_thread_flag(task_thread_info(tsk), flag); > diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h > index cf2862b..8d8821b 100644 > --- a/include/linux/thread_info.h > +++ b/include/linux/thread_info.h > @@ -60,6 +60,15 @@ static inline void clear_ti_thread_flag(struct thread_info *ti, int flag) > clear_bit(flag, (unsigned long *)&ti->flags); > } > > +static inline void update_ti_thread_flag(struct thread_info *ti, int flag, > + bool value) > +{ > + if (value) > + set_ti_thread_flag(ti, flag); > + else > + clear_ti_thread_flag(ti, flag); > +} > + value does seem a bit of vanilla non-informative name for a condition flag but whatever: Reviewed-by: Alex Benn?e > static inline int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) > { > return test_and_set_bit(flag, (unsigned long *)&ti->flags); > @@ -79,6 +88,8 @@ static inline int test_ti_thread_flag(struct thread_info *ti, int flag) > set_ti_thread_flag(current_thread_info(), flag) > #define clear_thread_flag(flag) \ > clear_ti_thread_flag(current_thread_info(), flag) > +#define update_thread_flag(flag, value) \ > + update_ti_thread_flag(current_thread_info(), flag, value) > #define test_and_set_thread_flag(flag) \ > test_and_set_ti_thread_flag(current_thread_info(), flag) > #define test_and_clear_thread_flag(flag) \ -- Alex Benn?e