mirror of https://github.com/ARMmbed/mbed-os.git
InternetSocket: better protect _callback
sigio callbacks can be triggered from interrupt, so changing _callback needs critical section protection, not just a mutex.pull/9248/head
parent
0f6a4cd0bd
commit
ab037c6f69
|
@ -22,6 +22,7 @@ set(unittest-test-sources
|
|||
features/netsocket/DTLSSocket/test_DTLSSocket.cpp
|
||||
stubs/Mutex_stub.cpp
|
||||
stubs/mbed_assert_stub.c
|
||||
stubs/mbed_critical_stub.c
|
||||
stubs/equeue_stub.c
|
||||
../features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c
|
||||
stubs/EventQueue_stub.cpp
|
||||
|
|
|
@ -21,6 +21,7 @@ set(unittest-test-sources
|
|||
features/netsocket/TLSSocket/test_TLSSocket.cpp
|
||||
stubs/Mutex_stub.cpp
|
||||
stubs/mbed_assert_stub.c
|
||||
stubs/mbed_critical_stub.c
|
||||
stubs/equeue_stub.c
|
||||
../features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c
|
||||
stubs/EventQueue_stub.cpp
|
||||
|
|
|
@ -207,9 +207,9 @@ void InternetSocket::event()
|
|||
|
||||
void InternetSocket::sigio(Callback<void()> callback)
|
||||
{
|
||||
_lock.lock();
|
||||
core_util_critical_section_enter();
|
||||
_callback = callback;
|
||||
_lock.unlock();
|
||||
core_util_critical_section_exit();
|
||||
}
|
||||
|
||||
void InternetSocket::attach(Callback<void()> callback)
|
||||
|
|
Loading…
Reference in New Issue