mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Namespace scope mbed:: added for CriticalSectionLock used in Atomic templates
							parent
							
								
									7c17693c06
								
							
						
					
					
						commit
						3a05db8d98
					
				| 
						 | 
				
			
			@ -186,7 +186,7 @@ struct AtomicBaseRaw {
 | 
			
		|||
            T val;
 | 
			
		||||
        } ret;
 | 
			
		||||
        {
 | 
			
		||||
            CriticalSectionLock lock;
 | 
			
		||||
            mbed::CriticalSectionLock lock;
 | 
			
		||||
            memcpy(std::addressof(ret.val), const_cast<const T *>(std::addressof(data)), sizeof(T));
 | 
			
		||||
        }
 | 
			
		||||
        return std::move(ret.val);
 | 
			
		||||
| 
						 | 
				
			
			@ -194,19 +194,19 @@ struct AtomicBaseRaw {
 | 
			
		|||
    T load(memory_order order = memory_order_seq_cst) const noexcept
 | 
			
		||||
    {
 | 
			
		||||
        MBED_CHECK_LOAD_ORDER(order);
 | 
			
		||||
        CriticalSectionLock lock;
 | 
			
		||||
        mbed::CriticalSectionLock lock;
 | 
			
		||||
        return data;
 | 
			
		||||
    }
 | 
			
		||||
    void store(T desired, memory_order order = memory_order_seq_cst) volatile noexcept
 | 
			
		||||
    {
 | 
			
		||||
        MBED_CHECK_STORE_ORDER(order);
 | 
			
		||||
        CriticalSectionLock lock;
 | 
			
		||||
        mbed::CriticalSectionLock lock;
 | 
			
		||||
        memcpy(const_cast<T *>(std::addressof(data)), std::addressof(desired), sizeof(T));
 | 
			
		||||
    }
 | 
			
		||||
    void store(T desired, memory_order order = memory_order_seq_cst) noexcept
 | 
			
		||||
    {
 | 
			
		||||
        MBED_CHECK_STORE_ORDER(order);
 | 
			
		||||
        CriticalSectionLock lock;
 | 
			
		||||
        mbed::CriticalSectionLock lock;
 | 
			
		||||
        data = std::move(desired); // MoveAssignable
 | 
			
		||||
    }
 | 
			
		||||
    T exchange(T desired, memory_order = memory_order_seq_cst) volatile noexcept
 | 
			
		||||
| 
						 | 
				
			
			@ -217,7 +217,7 @@ struct AtomicBaseRaw {
 | 
			
		|||
            T val;
 | 
			
		||||
        } old;
 | 
			
		||||
        {
 | 
			
		||||
            CriticalSectionLock lock;
 | 
			
		||||
            mbed::CriticalSectionLock lock;
 | 
			
		||||
            memcpy(std::addressof(old.val), const_cast<const T *>(std::addressof(data)), sizeof(T));
 | 
			
		||||
            memcpy(const_cast<T *>(std::addressof(data)), std::addressof(desired), sizeof(T));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +225,7 @@ struct AtomicBaseRaw {
 | 
			
		|||
    }
 | 
			
		||||
    T exchange(T desired, memory_order = memory_order_seq_cst) noexcept
 | 
			
		||||
    {
 | 
			
		||||
        CriticalSectionLock lock;
 | 
			
		||||
        mbed::CriticalSectionLock lock;
 | 
			
		||||
        T old = std::move(data); // MoveConstructible
 | 
			
		||||
        data = std::move(desired); // MoveAssignable
 | 
			
		||||
        return old;
 | 
			
		||||
| 
						 | 
				
			
			@ -233,7 +233,7 @@ struct AtomicBaseRaw {
 | 
			
		|||
    bool compare_exchange_strong(T &expected, T desired, memory_order success, memory_order failure) volatile noexcept
 | 
			
		||||
    {
 | 
			
		||||
        MBED_CHECK_CAS_ORDER(success, failure);
 | 
			
		||||
        CriticalSectionLock lock;
 | 
			
		||||
        mbed::CriticalSectionLock lock;
 | 
			
		||||
        if (memcmp(const_cast<const T *>(std::addressof(data)), std::addressof(expected), sizeof(T)) == 0) {
 | 
			
		||||
            memcpy(const_cast<T *>(std::addressof(data)), std::addressof(desired), sizeof(T));
 | 
			
		||||
            return true;
 | 
			
		||||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ struct AtomicBaseRaw {
 | 
			
		|||
    bool compare_exchange_strong(T &expected, T desired, memory_order success, memory_order failure) noexcept
 | 
			
		||||
    {
 | 
			
		||||
        MBED_CHECK_CAS_ORDER(success, failure);
 | 
			
		||||
        CriticalSectionLock lock;
 | 
			
		||||
        mbed::CriticalSectionLock lock;
 | 
			
		||||
        if (memcmp(std::addressof(data), std::addressof(expected), sizeof(T)) == 0) {
 | 
			
		||||
            data = std::move(desired); // MoveAssignable
 | 
			
		||||
            return true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue