Hello,
we have to make some trade-offs in the implementation with respect to
the error checking. The operations get a pointer to the synchronization
object, e.g.
int sem_post(sem_t *sem);
int pthread_mutex_lock(pthread_mutex_t *mutex);
Do we want to check for NULL pointers?
Do we want to check for other obviously invalid pointer values, e.g.
SEM_FAILED?
Do we want to check if the object has been initialized?
glibc uses no checks at all.
FreeBSD checks that the object has been initialized. For this purpose it
embeds a magic value field in the object structure. The drawback is that
if we also do this, the objects are not zero-initialized and thus cannot
reside in the BSS section.
Destruction of synchronization objects in use is undefined behaviour
according to POSIX. Do we want to flush waiting threads during
destruction? This is a complex operation.
What you think?
--
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 : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel