From: Wedson Almeida Filho <wedsonaf@google.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Tejun Heo <tj@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Christian Brauner <brauner@kernel.org>,
Petr Mladek <pmladek@suse.com>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Michal Hocko <mhocko@suse.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Oleg Nesterov <oleg@redhat.com>
Subject: Re: [PATCH 3/3] kthread: Stop abusing TASK_UNINTERRUPTIBLE (INCOMPLETE)
Date: Mon, 27 Jun 2022 22:45:29 +0000 [thread overview]
Message-ID: <YrozCRfBRMCi88Yr@google.com> (raw)
In-Reply-To: <Yrop5Wzc72GIREVv@hirez.programming.kicks-ass.net>
On Tue, Jun 28, 2022 at 12:06:29AM +0200, Peter Zijlstra wrote:
> On Mon, Jun 27, 2022 at 06:04:12PM +0000, Wedson Almeida Filho wrote:
>
> > let new_thread = task::new_paused(|| pr_info!("Hello world\n"))?;
>
> I'm still having a really hard time with this Rust stuff, the above
> looks like a syntax error and random characters to me :/
Fair enough, there are a few things going on there. The code above could
be expanded to the following:
fn thread_func() {
pr_info!("Hello world\n");
}
let retval = task::new_paused(thread_func);
if retval.is_err() {
return retval.unwrap_err();
}
let new_thread = retval.unwrap();
I hope the above is clearer. The question-mark operator is just
syntax-sugar for the error handling above, the pipes indicate a closure,
the full syntax is: |args| -> ret_type { statement1; statement2; etc. }
-- the line you quote has the compiler infer the type (so it's omitted),
there are no args (so the nothing between the pipes), and when there's a
single statement that is an expression whose type matches the return
type, the curly braces can thus be omitted, so we end up with "|| x" as
the closure.
I'm confident people can get used to this. It's in the rare cases when
one has to think about say subtyping, invariance, covariance, and
contravriance that things may get hairy (or exciting for the more
math-inclined).
next prev parent reply other threads:[~2022-06-27 22:45 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-22 14:08 [PATCH] workqueue: Make create_worker() safe against spurious wakeups Petr Mladek
2022-06-23 7:00 ` Petr Mladek
2022-06-23 7:14 ` Michal Hocko
2022-06-25 5:00 ` re. Spurious wakeup on a newly created kthread Tejun Heo
2022-06-25 17:01 ` Linus Torvalds
2022-06-25 17:36 ` Eric W. Biederman
2022-06-25 18:25 ` Linus Torvalds
2022-06-25 18:43 ` Linus Torvalds
2022-06-25 23:28 ` Eric W. Biederman
2022-06-25 23:41 ` Eric W. Biederman
2022-06-25 23:43 ` Linus Torvalds
2022-06-25 23:48 ` Linus Torvalds
2022-06-26 0:19 ` Eric W. Biederman
2022-06-27 0:01 ` Wedson Almeida Filho
2022-06-27 7:11 ` Peter Zijlstra
2022-06-27 18:23 ` Wedson Almeida Filho
2022-06-27 18:45 ` Linus Torvalds
2022-06-26 19:14 ` [PATCH 0/3] kthread: Stop using TASK_UNINTERRUPTIBLE Eric W. Biederman
2022-06-26 19:15 ` [PATCH 1/3] kthread: Remove the flags argument from kernel_thread Eric W. Biederman
2022-06-26 21:20 ` Linus Torvalds
2022-06-26 19:16 ` [PATCH 2/3] kthread: Replace kernel_thread with new_kthread Eric W. Biederman
2022-06-26 19:16 ` [PATCH 3/3] kthread: Stop abusing TASK_UNINTERRUPTIBLE (INCOMPLETE) Eric W. Biederman
2022-06-26 19:59 ` Linus Torvalds
2022-06-26 20:23 ` Tejun Heo
2022-06-26 20:55 ` Linus Torvalds
2022-06-27 7:22 ` Peter Zijlstra
2022-06-27 8:11 ` Tejun Heo
2022-06-27 18:04 ` Wedson Almeida Filho
2022-06-27 22:06 ` Peter Zijlstra
2022-06-27 22:34 ` Linus Torvalds
2022-06-27 22:45 ` Wedson Almeida Filho [this message]
2022-06-28 0:32 ` Wedson Almeida Filho
2022-06-28 7:58 ` Peter Zijlstra
2022-06-30 0:57 ` Wedson Almeida Filho
2022-06-26 22:14 ` kernel test robot
2022-06-26 22:34 ` kernel test robot
2022-06-26 0:21 ` re. Spurious wakeup on a newly created kthread Eric W. Biederman
2022-06-28 14:16 ` Christian Brauner
2022-06-26 0:26 ` Eric W. Biederman
2022-06-26 1:58 ` Tejun Heo
2022-06-26 2:53 ` Linus Torvalds
2022-06-26 6:09 ` Tejun Heo
2022-06-27 12:04 ` Michal Hocko
2022-06-28 9:51 ` Petr Mladek
2022-06-28 10:07 ` Tejun Heo
2022-06-27 8:07 ` Michal Hocko
2022-06-27 8:21 ` Tejun Heo
2022-06-27 10:18 ` Michal Hocko
2022-06-28 15:08 ` Petr Mladek
2022-08-04 8:57 ` [PATCH] workqueue: Make create_worker() safe against spurious wakeups Lai Jiangshan
2022-08-04 10:19 ` Lai Jiangshan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YrozCRfBRMCi88Yr@google.com \
--to=wedsonaf@google.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=ebiederm@xmission.com \
--cc=jiangshanlai@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox