Change RTEMS_STRING() and RTEMS_XSTRING() to accept a variable number of
arguments which is stringified. This can be used for example to create
register lists for inline assembler statements.
- Add the bool flag no_regular_file_mknod to the mount table so a file
system can indicate creating regular files is not done by
use the mknod handler. The file system will handle creating a
file node in the open handler.
- Note, the mount option is an enum which means there is only one
exclusive option supported. As a result no encapsulation is
provided and file systems need to set no_regular_file_mknod directly.
Closes#4222
Add a "Constraints" paragraph to the documentation.
Provide prototypes for programming language bindings. Use the macro
implementation to implement the corresponding functions.
Update #3993.
The goal is to reduce false positive NULL_RETURNS,
PW.NORETURN_FUNCTION_DOES_RETURN, PW.SET_BUT_NOT_USED,
UNUSED_VALUE, etc. issues produced by Coverity.
Define RTEMS_STATIC_ANALYSIS if a static analysis run by Coverity is
performed.
Do not shadow the queue_context parameter with a local variable. Reuse
the queue context to reduce the required stack space.
This fix relates to a Coverity issue (PW.PARAMETER_HIDDEN).
We do not need all the checks if we have a valid indentifier to a thread
class object.
Using the new _Thread_Get_objects_information() instead of the inline
function _Thread_Get_objects_information_by_id() avoids dead code since
the identifier in a thread control is always valid and the return NULL
path in _Thread_Get_objects_information_by_id() would be dead code. The
_Thread_Get_objects_information_by_id() should be an inline function
since it is used by _Thread_Get() and thus performance critical. Static
analyzers which cannot derive that the identifier in a thread control is
always valid, may find a potential NULL pointer access (or otherwise
find dead code).
The identifier in an object control is always valid, see
_Objects_Initialize_information() and _Objects_Extend_information().
Move _RTEMS_tasks_Free() to the only source file which calls this
function.
Rename _Thread_Get_objects_information() in
_Thread_Get_objects_information_by_id() to emphasize that this thread
method uses an object identifier and not a thread control.
Return STATUS_DEADLOCK (RTEMS_INCORRECT_STATE) to indicate a nested
seize since this is a kind of deadlock. This status code is also used
for other deadlocks.
Update #4217.
This adds some commands that are usefull for debugging simple serial
interfaces.
Even if they are a complete re-implementation, the i2c* commands use a
simmilar call like the Linux i2c tools.
Expressions in static assertions must be integral constant expressions. In
integral constant expressions the use of address constant expressions is not
allowed.
In static initializers the address constant expressions are allowed. Introduce
a new macro _CONFIGURE_ASSERT_NOT_NULL() which leads to a compile time error if
the second parameter is NULL. It generates error messages like this if for
example
#define CONFIGURE_INIT_TASK_ENTRY_POINT NULL
is provided by the application:
cpukit/include/rtems/confdefs/inittask.h:51:26: error: size of unnamed array is negative
51 | ( _type ) sizeof( int[ ( _value ) != NULL ? 1 : -1 ] ) )
| ^
cpukit/include/rtems/confdefs/inittask.h:170:3: note: in expansion of macro '_CONFIGURE_ASSERT_NOT_NULL'
170 | _CONFIGURE_ASSERT_NOT_NULL(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
This fix relates to CID 1470570 (PARSE_ERROR).
Update #4181.