On 2013-08-14 10:37, Chris Johns wrote:
Sebastian Huber wrote:
On 2013-08-14 10:00, Chris Johns wrote:
+ r = pthread_mutex_init( &_POSIX_Once_Lock, &mattr );
+ if ( r != 0 )
+ rtems_fatal( RTEMS_FATAL_SOURCE_ASSERT, 0x80aa2000 | r );
This is a configuration error. We need a proper error code for this with
source INTERNAL_ERROR_POSIX_API.
Agree. I will change it to INTERNAL_ERROR_POSIX_API. I am not sure
what you
mean by proper error code.
I just realized that we need new enums for the RTEMS and POSIX API
errors. The fatal error handling in the RTEMS and POSIX API is currently
a hack due to the missing unique (source, code) pair identifying the
exact error location.
So we need enums similar to Internal_errors_Core_list for the RTEMS and
POSIX API associated with the error sources INTERNAL_ERROR_RTEMS_API and
INTERNAL_ERROR_POSIX_API.
In the case of the POSIX API it may pay to define values with the bottom 8 bits
an errno error code. This would match the current 2 uses in the internal error
in the POSIX. For example for the pthread_once mutex init it would be ...
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true,
_POSIX_Error( POSIX_PTHREAD_ONCE_ERROR, eno ));
Note, POSIX_PTHREAD_ONCE_ERROR can be whatever.
Chris
This looks good, but I would use
void _POSIX_Fatal_error( POSIX_Fatal_domain domain, int eno )
{
uint32_t code = ( domain << 8 ) | ( ( uint32_t ) eno & 0xffU );
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, false, code );
}
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : [email protected]
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
[email protected]
http://www.rtems.org/mailman/listinfo/rtems-devel