* commit 'ee8faa5e74eadc12231f59f2bbe13cfa644922cd': POSIX says pthread_mutex_trylock returns EBUSY, not EDEADLK.
This commit is contained in:
		@@ -578,15 +578,12 @@ int pthread_mutex_unlock(pthread_mutex_t* mutex) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int pthread_mutex_trylock(pthread_mutex_t* mutex) {
 | 
			
		||||
    int mvalue, mtype, tid, shared;
 | 
			
		||||
    int mvalue = mutex->value;
 | 
			
		||||
    int mtype  = (mvalue & MUTEX_TYPE_MASK);
 | 
			
		||||
    int shared = (mvalue & MUTEX_SHARED_MASK);
 | 
			
		||||
 | 
			
		||||
    mvalue = mutex->value;
 | 
			
		||||
    mtype  = (mvalue & MUTEX_TYPE_MASK);
 | 
			
		||||
    shared = (mvalue & MUTEX_SHARED_MASK);
 | 
			
		||||
 | 
			
		||||
    /* Handle common case first */
 | 
			
		||||
    if ( __predict_true(mtype == MUTEX_TYPE_BITS_NORMAL) )
 | 
			
		||||
    {
 | 
			
		||||
    // Handle common case first.
 | 
			
		||||
    if (__predict_true(mtype == MUTEX_TYPE_BITS_NORMAL)) {
 | 
			
		||||
        if (__bionic_cmpxchg(shared|MUTEX_STATE_BITS_UNLOCKED,
 | 
			
		||||
                             shared|MUTEX_STATE_BITS_LOCKED_UNCONTENDED,
 | 
			
		||||
                             &mutex->value) == 0) {
 | 
			
		||||
@@ -597,10 +594,14 @@ int pthread_mutex_trylock(pthread_mutex_t* mutex) {
 | 
			
		||||
        return EBUSY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Do we already own this recursive or error-check mutex ? */
 | 
			
		||||
    tid = __get_thread()->tid;
 | 
			
		||||
    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
 | 
			
		||||
    // Do we already own this recursive or error-check mutex?
 | 
			
		||||
    pid_t tid = __get_thread()->tid;
 | 
			
		||||
    if (tid == MUTEX_OWNER_FROM_BITS(mvalue)) {
 | 
			
		||||
        if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
 | 
			
		||||
            return EBUSY;
 | 
			
		||||
        }
 | 
			
		||||
        return _recursive_increment(mutex, mvalue, mtype);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Same as pthread_mutex_lock, except that we don't want to wait, and
 | 
			
		||||
     * the only operation that can succeed is a single cmpxchg to acquire the
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user