Another update to the coding standard; Add some comments detailing the POSIX non-compliance in include/signal.h

This commit is contained in:
Gregory Nutt 2018-08-21 15:27:37 -06:00
parent 30d7dbd9a6
commit 07ef3fe018
2 changed files with 107 additions and 2 deletions

View File

@ -2022,8 +2022,11 @@ ptr = (FAR struct somestruct_s *)value;
</li>
<li>
<b>Local variables first</b>.
Because NuttX conforms to the older C89 standard, all variables that have scope over the entire compound statement must be defined at the beginning of the compound statement.
A single blank line must follow the local variable definitions.
Because NuttX conforms to the older C89 standard, all variables that have scope over the compound statement must be defined at the beginning of the compound statement prior to any executable statements.
Local variable definitions intermixed within the following sequence of executable statements are forbidden.
A single blank line must follow the local variable definitions separating the local variable definitions from the following executable statements.
<b>NOTE</b> that a function body consists of a compound statement, but typically so does the statement following <code>if</code>, <code>else</code>, <code>for</code>, <code>while</code>, <code>do</code>.
Local variable definitions are also acceptable at the beginning of these compound statements as with any other.
</li>
<li>
<b>Long functions are discouraged</b>.
@ -2035,6 +2038,52 @@ ptr = (FAR struct somestruct_s *)value;
</li>
</ul>
<center><table width="60%" border=1>
<tr><td bgcolor="white">
<p><font color="red"><b>Incorrect</b></p>
<ul><pre>
int myfunction(int a, int b)
{
int c, d;
c = a
d = b;
int e = c + d;
for (int i = 0; i &lt; b; i++)
{
e += d;
}
return e / a;
}
</ul></pre></font>
</td></tr>
<tr><td bgcolor="white">
<p><font color="green"><b>Correct</b></p>
<ul><pre>
int myfunction(int a, int b)
{
int c;
int d;
int e;
int i;
c = a
d = b;
e = c + d;
for (i = 0; i &lt; b; i++)
{
e += d;
}
return e / a;
}
</ul></pre></font>
</td></tr>
</table></center>
<h2><a name="retvalues">Returned Values</a></h2>
<p>

View File

@ -68,6 +68,62 @@
#define SIGRTMIN MIN_SIGNO /* First real time signal */
#define SIGRTMAX MAX_SIGNO /* Last real time signal */
/* NuttX does not support standard signal actions. NuttX supports only what
* are referred to as "real time" signals. The default action of all NuttX
* signals is to simply ignore the signal.
*
* This is not POSIX compliant. Per OpenGroup.org: The following signals
* and default signal action s must be supported on all implementations:
*
* ---------- ------- ----------------------------------------------------
* Signal Default Description
* Name Action
* ---------- ------- ----------------------------------------------------
* SIGABRT A Process abort signal
* SIGALRM T Alarm clock
* SIGBUS A Access to an undefined portion of a memory object
* SIGCHLD I Child process terminated, stopped
* (or continued XSI extension)
* SIGCONT C Continue executing, if stopped
* SIGFPE A Erroneous arithmetic operation
* SIGHUP T Hangup
* SIGILL A Illegal instruction
* SIGINT T Terminal interrupt signal
* SIGKILL T Kill (cannot be caught or ignored)
* SIGPIPE T Write on a pipe with no one to read it
* SIGQUIT A Terminal quit signal
* SIGSEGV A Invalid memory reference
* SIGSTOP S Stop executing (cannot be caught or ignored)
* SIGTERM T Termination signal
* SIGTSTP S Terminal stop signal
* SIGTTIN S Background process attempting read
* SIGTTOU S Background process attempting write
* SIGUSR1 T User-defined signal 1
* SIGUSR2 T User-defined signal 2
* SIGPOLL T Poll-able event (XSI extension)
* SIGPROF T Profiling timer expired (XSI extension)
* SIGSYS A Bad system call (XSI extension)
* SIGTRAP A Trace/breakpoint trap (XSI extension)
* SIGURG I High bandwidth data is available at a socket
* SIGVTALRM T Virtual timer expired (XSI extension)
* SIGXCPU A CPU time limit exceeded (XSI extension)
* SIGXFSZ A File size limit exceeded (XSI extension)
* ---------- ------- ----------------------------------------------------
*
* Where default action codes are:
*
* T Abnormal termination of the process. The process is terminated with
* all the consequences of _exit() except that the status made available
* to wait() and waitpid() indicates abnormal termination by the
* specified signal.
* A Abnormal termination of the process. Additionally ith the XSI
* extension, implementation-defined abnormal termination actions, such
* as creation of a core file, may occur.
* I Ignore the signal.
* S Stop the process.
* C Continue the process, if it is stopped; otherwise, ignore the signal.
*/
/* A few of the real time signals are used within the OS. They have
* default values that can be overridden from the configuration file. The
* rest are all user signals.