Mutex lock failed error is happened on OS5.10.x(Works fine on OS5.9.7)

Committer:
kenjiArai
Date:
Sat Oct 20 07:53:59 2018 +0000
Revision:
0:f865905db3ad
Error Message: Mutex lock failed on OS5.10.x

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:f865905db3ad 1 /*
kenjiArai 0:f865905db3ad 2 * MUTEX ERROR reproduce program on OS5.10.x
kenjiArai 0:f865905db3ad 3 * by Kenji Arai / JH1PJL on October 20th, 2018
kenjiArai 0:f865905db3ad 4 */
kenjiArai 0:f865905db3ad 5
kenjiArai 0:f865905db3ad 6 /*
kenjiArai 0:f865905db3ad 7 on 5.9.7/18 Sep 2018 -> works well
kenjiArai 0:f865905db3ad 8 on 5.10.0/3weeks, 3dyas a go -> Mutex lock failed, error=0x80020115
kenjiArai 0:f865905db3ad 9 on 5.10.1/1weeks,1day ago -> Mutex lock failed, error=0x80020115
kenjiArai 0:f865905db3ad 10 on 5.10.2/12hours, 12minutes ago -> Mutex lock failed, error=0x80020115
kenjiArai 0:f865905db3ad 11 */
kenjiArai 0:f865905db3ad 12
kenjiArai 0:f865905db3ad 13 #include "mbed.h"
kenjiArai 0:f865905db3ad 14
kenjiArai 0:f865905db3ad 15 // RUN ONLY ON mbed-os5.9.7
kenjiArai 0:f865905db3ad 16 #if (MBED_MAJOR_VERSION == 5) &&\
kenjiArai 0:f865905db3ad 17 (MBED_MINOR_VERSION == 10)
kenjiArai 0:f865905db3ad 18 // correct mbed-os version
kenjiArai 0:f865905db3ad 19 #else
kenjiArai 0:f865905db3ad 20 #warning "Not use Mbed-os5.10.x"
kenjiArai 0:f865905db3ad 21 #endif
kenjiArai 0:f865905db3ad 22
kenjiArai 0:f865905db3ad 23 Serial pc(USBTX, USBRX);
kenjiArai 0:f865905db3ad 24
kenjiArai 0:f865905db3ad 25 CircularBuffer<char, 1024> rxbuf; // PC receiving Buffer
kenjiArai 0:f865905db3ad 26
kenjiArai 0:f865905db3ad 27 void rx_handler(void)
kenjiArai 0:f865905db3ad 28 {
kenjiArai 0:f865905db3ad 29 if (pc.readable()) {
kenjiArai 0:f865905db3ad 30 rxbuf.push(pc.getc());
kenjiArai 0:f865905db3ad 31 }
kenjiArai 0:f865905db3ad 32 }
kenjiArai 0:f865905db3ad 33
kenjiArai 0:f865905db3ad 34 int main()
kenjiArai 0:f865905db3ad 35 {
kenjiArai 0:f865905db3ad 36 char dt = 0;
kenjiArai 0:f865905db3ad 37
kenjiArai 0:f865905db3ad 38 rxbuf.reset();
kenjiArai 0:f865905db3ad 39 pc.attach(&rx_handler, Serial::RxIrq);
kenjiArai 0:f865905db3ad 40 while(true){
kenjiArai 0:f865905db3ad 41 if (!rxbuf.empty()){ // wait receiving a character
kenjiArai 0:f865905db3ad 42 rxbuf.pop(dt);
kenjiArai 0:f865905db3ad 43 pc.putc(dt);
kenjiArai 0:f865905db3ad 44 }
kenjiArai 0:f865905db3ad 45 }
kenjiArai 0:f865905db3ad 46 }
kenjiArai 0:f865905db3ad 47