@@ -1,4 +1,4 @@
-/* $NetBSD: pthread.c,v 1.129 2012/03/09 12:06:44 drochner Exp $ */
+/* $NetBSD: pthread.c,v 1.130 2012/03/10 18:01:10 joerg Exp $ */
/*-
* Copyright (c) 2001, 2002, 2003, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: pthread.c,v 1.129 2012/03/09 12:06:44 drochner Exp $");
+__RCSID("$NetBSD: pthread.c,v 1.130 2012/03/10 18:01:10 joerg Exp $");
#define __EXPOSE_STACK 1
@@ -339,7 +339,7 @@
return ENOMEM;
mapped_stack = true;
}
- newthread->pt_stack.ss_size = pthread__stacksize - pthread__pagesize;
+ newthread->pt_stack.ss_size = stacksize - pthread__pagesize;
newthread->pt_stack.ss_sp = stackbase;
#ifdef __MACHINE_STACK_GROWS_UP
redzone = (char *)stackbase + newthread->pt_stack.ss_size;
@@ -1,4 +1,4 @@
-/* $NetBSD: sem.c,v 1.23 2012/03/08 21:59:28 joerg Exp $ */
+/* $NetBSD: sem.c,v 1.24 2012/03/10 18:01:10 joerg Exp $ */
/*-
* Copyright (c) 2003, 2006, 2007 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: sem.c,v 1.23 2012/03/08 21:59:28 joerg Exp $");
+__RCSID("$NetBSD: sem.c,v 1.24 2012/03/10 18:01:10 joerg Exp $");
#include <sys/types.h>
#include <sys/ksem.h>
@@ -135,6 +135,7 @@
int
sem_destroy(sem_t *sem)
{
+ int error, save_errno;
#ifdef ERRORCHECK
if (sem == NULL || *sem == NULL || (*sem)->ksem_magic != KSEM_MAGIC) {
@@ -143,12 +144,12 @@
}
#endif
- if (_ksem_destroy((*sem)->ksem_semid) == -1)
- return (-1);
-
+ error = _ksem_destroy((*sem)->ksem_semid);
+ save_errno = errno;
sem_free(*sem);
+ errno = save_errno;
- return (0);
+ return error;
}
sem_t *
@@ -218,6 +219,7 @@
int
sem_close(sem_t *sem)
{
+ int error, save_errno;
#ifdef ERRORCHECK
if (sem == NULL || *sem == NULL || (*sem)->ksem_magic != KSEM_MAGIC) {
@@ -227,16 +229,14 @@
#endif
pthread_mutex_lock(&named_sems_mtx);
- if (_ksem_close((*sem)->ksem_semid) == -1) {
- pthread_mutex_unlock(&named_sems_mtx);
- return (-1);
- }
-
+ error = _ksem_close((*sem)->ksem_semid);
LIST_REMOVE((*sem), ksem_list);
+ save_errno = errno;
pthread_mutex_unlock(&named_sems_mtx);
sem_free(*sem);
free(sem);
- return (0);
+ errno = save_errno;
+ return error;
}
int