From: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
To: David Hinds <dhinds@sonic.net>, linux-kernel@vger.kernel.org
Subject: Re: Worst recursion in the kernel
Date: Thu, 4 Dec 2003 15:14:40 +0100 [thread overview]
Message-ID: <20031204141440.GB7890@wohnheim.fh-wedel.de> (raw)
In-Reply-To: <20031203225743.A25889@flint.arm.linux.org.uk>
On Wed, 3 December 2003 22:57:43 +0000, Russell King wrote:
>
> Yes, but the condition of the /data/ is such that it will not recurse.
Yes, so?
> A pure "can this function call that function" analysis ignoring the
> state of the data will say this will infinitely recuse. Include
> the data, and you'll find it has a very definite recursion limit.
That is what I do. My program takes hints saying "this recursion can
only loop n times". But I don't want to add semantic checking of the
source itself, so a human has to give the hint. Also, the human has
to uniquely hint at a single recursion.
If you accept this approach, there is no way to deal with multiple
linked recursions like this:
a->b->c->d
`->b
The human would have to say something like "the big recursion can only
happen five times, unless the short recursion from c to b happened.
In this case...". No thanks.
In fact, most recursions in the kernel are functions calling itself
again, there are just a few over several functions. So I honestly
wonder if recursion over multiple functions should be handled by my
program at all, or if I should just warn when seeing them.
There might be valid cases for two or three functions involved, so I
am not sure yet. But I sure as hell won't handle those cases before
seeing a valid use first and the one causing this thread sure isn't.
Jörn
--
But this is not to say that the main benefit of Linux and other GPL
software is lower-cost. Control is the main benefit--cost is secondary.
-- Bruce Perens
next prev parent reply other threads:[~2003-12-04 14:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-03 14:31 Jörn Engel
2003-12-03 18:07 ` David Hinds
2003-12-03 19:04 ` Jörn Engel
2003-12-03 22:57 ` Russell King
2003-12-03 23:08 ` Mike Fedyk
2003-12-03 23:36 ` David Hinds
2003-12-04 14:14 ` Jörn Engel [this message]
2003-12-04 15:08 ` Martin Waitz
2003-12-04 18:40 ` Russell King
2003-12-04 18:46 ` Jörn Engel
2003-12-03 23:08 ` David Hinds
2003-12-04 13:47 ` Jörn Engel
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=20031204141440.GB7890@wohnheim.fh-wedel.de \
--to=joern@wohnheim.fh-wedel.de \
--cc=dhinds@sonic.net \
--cc=linux-kernel@vger.kernel.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
all inboxes | Powered by JetHome®