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

Reply via email to