sched/pthread: Use -1 instead of 0 as PID for unclaimed mutexes

This commit is contained in:
Juha Niskanen 2015-06-16 08:27:38 -06:00 committed by Gregory Nutt
parent ba55e8c7d8
commit d16053c33c
6 changed files with 12 additions and 13 deletions

View File

@ -137,8 +137,8 @@
/* Definitions to map some non-standard, BSD thread management interfaces to
* the non-standard Linux-like prctl() interface. Since these are simple
* mappings to prctl, they will return 0 sucess and -1 on failure with the
* err number in errno. This is an inconsistency with out pthread interfaces.
* mappings to prctl, they will return 0 on success and -1 on failure with the
* err number in errno. This is an inconsistency with the pthread interfaces.
*/
#define pthread_setname_np(thread, name) \
@ -160,14 +160,13 @@ extern "C"
typedef int pthread_key_t;
typedef FAR void *pthread_addr_t;
typedef pthread_addr_t any_t;
typedef pthread_addr_t (*pthread_startroutine_t)(pthread_addr_t);
typedef pthread_startroutine_t pthread_func_t;
struct pthread_attr_s
{
size_t stacksize; /* Size of the stack allocated for the pthead */
size_t stacksize; /* Size of the stack allocated for the pthread */
int16_t priority; /* Priority of the pthread */
uint8_t policy; /* Pthread scheduler policy */
uint8_t inheritsched; /* Inherit parent prio/policy? */
@ -206,9 +205,9 @@ struct pthread_mutex_s
typedef struct pthread_mutex_s pthread_mutex_t;
#ifdef CONFIG_MUTEX_TYPES
# define PTHREAD_MUTEX_INITIALIZER {0, SEM_INITIALIZER(1), PTHREAD_MUTEX_DEFAULT, 0}
# define PTHREAD_MUTEX_INITIALIZER {-1, SEM_INITIALIZER(1), PTHREAD_MUTEX_DEFAULT, 0}
#else
# define PTHREAD_MUTEX_INITIALIZER {0, SEM_INITIALIZER(1)}
# define PTHREAD_MUTEX_INITIALIZER {-1, SEM_INITIALIZER(1)}
#endif
struct pthread_barrierattr_s
@ -307,7 +306,7 @@ void pthread_yield(void);
/* Compare two thread IDs. */
#define pthread_equal(t1,t2) (t1 == t2)
#define pthread_equal(t1,t2) ((t1) == (t2))
/* Thread scheduling parameters */

View File

@ -270,7 +270,7 @@ int pthread_cond_timedwait(FAR pthread_cond_t *cond, FAR pthread_mutex_t *mutex,
{
/* Give up the mutex */
mutex->pid = 0;
mutex->pid = -1;
ret = pthread_givesemaphore((sem_t*)&mutex->sem);
if (ret)
{

View File

@ -113,7 +113,7 @@ int pthread_cond_wait(FAR pthread_cond_t *cond, FAR pthread_mutex_t *mutex)
sdbg("Give up mutex / take cond\n");
sched_lock();
mutex->pid = 0;
mutex->pid = -1;
ret = pthread_givesemaphore((sem_t*)&mutex->sem);
/* Take the semaphore */
@ -127,7 +127,7 @@ int pthread_cond_wait(FAR pthread_cond_t *cond, FAR pthread_mutex_t *mutex)
ret |= pthread_takesemaphore((sem_t*)&mutex->sem);
if (!ret)
{
mutex->pid = getpid();;
mutex->pid = getpid();
}
}

View File

@ -108,7 +108,7 @@ int pthread_mutex_destroy(FAR pthread_mutex_t *mutex)
/* Is the semaphore available? */
if (mutex->pid != 0)
if (mutex->pid != -1)
{
ret = EBUSY;
}

View File

@ -115,7 +115,7 @@ int pthread_mutex_init(FAR pthread_mutex_t *mutex, FAR const pthread_mutexattr_t
/* Indicate that the semaphore is not held by any thread. */
mutex->pid = 0;
mutex->pid = -1;
/* Initialize the mutex like a semaphore with initial count = 1 */

View File

@ -148,7 +148,7 @@ int pthread_mutex_unlock(FAR pthread_mutex_t *mutex)
{
/* Nullify the pid and lock count then post the semaphore */
mutex->pid = 0;
mutex->pid = -1;
#ifdef CONFIG_MUTEX_TYPES
mutex->nlocks = 0;
#endif