This header attempts to replicate std::mutex.
If ETL_CPP11_SUPPORTED is defined as 1 in the profile then etl::mutex will be defined in terms of std::mutex.
Otherwise it will be implemented in terms of the built-in support, if available, from the compiler. For example, early GCC
and Arm compilers will use the __sync built-ins.
If there is an ETL mutex type available for your platform then ETL_HAS_MUTEX will be set to 1, otherwise it will be set to 0.