From: Alexander Clouter <alex@digriz.org.uk>
To: linux-kernel@vger.kernel.org
Subject: Re: [PATCH]exit.c: support larger exit code
Date: Sat, 7 Aug 2010 11:41:33 +0100 [thread overview]
Message-ID: <trpvi7-qh6.ln1@chipmunk.wormnet.eu> (raw)
In-Reply-To: 20100806124456.GA9107@redhat.com
Oleg Nesterov <oleg@redhat.com> wrote:
>>
>> Nowadays userspace application use systemcall exit/exit_group only
>> support one byte exit code.
>> In some cases this exit code range is too small for some "big
>> application"(like telecom software, 255 is not enough).
>>
>> So we can give some "big application" a chance to get larger exit code
>> from child process.
>> For other application don't want use larger exit code, they can use
>> marco WEXITSTATUS to get lower one byte exit code.
>>
>> #define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status))
>> --- stdlib.h
>> #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
>> --- usrbits/waitstatus.h
>>
>>
>> diff --git a/kernel/exit.c b/kernel/exit.c
>> index ceffc67..8b13676 100644
>> --- a/kernel/exit.c
>> +++ b/kernel/exit.c
>> @@ -1045,7 +1045,7 @@ EXPORT_SYMBOL(complete_and_exit);
>>
>> SYSCALL_DEFINE1(exit, int, error_code)
>> {
>> - do_exit((error_code&0xff)<<8);
>> + do_exit(error_code << 8);
>> }
>>
>> /*
>> @@ -1086,7 +1086,7 @@ do_group_exit(int exit_code)
>> */
>> SYSCALL_DEFINE1(exit_group, int, error_code)
>> {
>> - do_group_exit((error_code & 0xff) << 8);
>> + do_group_exit(error_code << 8);
>> /* NOTREACHED */
>> return 0;
>> }
>
> Hmm. Looking at this patch, I am wondering what was the reason for the
> current one-byte limitation.
>
The one byte limitation I think is all that is needed to give an
impression and *hint* of what went wrong, it was not ever meant to cover
every possible error that the child process could report. Even "small
programs" could generate $BIGNUM error codes it could be argued.
Looking at the list for reserved exitcodes[1] everything covers
operational use and then if you look to /usr/include/sysexits.h for an
idea of the 'spirit' behind exitcodes, it is pretty clear it is all
rather 'generic' and vague to the precise reason, but it categorises
the type of error to maybe something the parent could gracefully handle.
It is not a freetext communications channel :)
If you have $BIGNUM outcomes of errors, you probably should not be using
the exitcode path to communicate this information back up, although I
would agree it looks like very natural solution. I would be more
inclined to pass up to the parent this information via a pipe (whether
that is via stdout, stderr or even a filesystem located pipe). No doubt
if you are trying to return $BIGNUM error codes, you probably want to
look more to an approach based on the one covered in RFC3463; there if
you return a sysexits.h type code then the child's STDOUT is consulted
for the extended error code reason...I think this approach is *very*
nice.
Cheers
[1] http://tldp.org/LDP/abs/html/exitcodes.html#EXITCODESREF
[2] http://tools.ietf.org/html/rfc3463
--
Alexander Clouter
.sigmonster says: If in doubt, mumble.
next prev parent reply other threads:[~2010-08-07 12:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <14414B36FFA0F1418CB707361EAA199A0194F7D2@CNBEEXC006.nsn-intra.net>
2010-08-06 12:44 ` [PATCH]exit.c: support larger exit code Oleg Nesterov
2010-08-07 10:41 ` Alexander Clouter [this message]
2010-08-25 21:49 ` Andrew Morton
2010-08-25 22:23 ` Tony Luck
2010-08-09 3:14 Zhang, Wei-Jovi (NSN - CN/Hangzhou)
2010-08-09 8:25 ` Alexander Clouter
2010-08-09 10:57 ` Alan Cox
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=trpvi7-qh6.ln1@chipmunk.wormnet.eu \
--to=alex@digriz.org.uk \
--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