A potential Xenomai Mutex issue
jan.kiszka at siemens.com
Fri Aug 23 17:23:20 CEST 2019
On 23.08.19 16:29, DIAO, Hanson (DI PA CI RC R&D SW2) wrote:
> Hi Jan,
> I attached my code here. This is only Lock function. Unlock function is similar.
> printf("Before Mutex Lock Mutext addr = %p,count = %d, owner = %x\n",
> int err = rt_mutex_acquire( mpMutex, (RTIME)TM_INFINITE );
> if ( err &&
> // During boot-up and shutdown we run single-threaded
> // so there is no need to lock an semaphore.
> !(rc_system_state() != SYSTEM_RUNNING && err == -EPERM) )
> rc_xeno_log( LOG_ERROR , "rt_mutex_acquire" , err);
> printf("After Mutex Lock Mutext addr = %p,count = %d, owner = %x\n",
OK, now I understand the relation between "count" and "lockcnt". Thanks.
Again, for the deadlock case, can you reproduce it with synthetic patterns and
> For the issue 2 the test case is very simple. The lock sequence is as below. After ReadReg function I checked the lockcnt. The lockcnt is 1.
> Int writeReg()
So you are reading lockcnt here? Then 1 is obviously the expected value. Is
owner (fastlock) 0 here?
> Int ReadReg()
If you read it here, it should be 2 in a recursive case.
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
More information about the Xenomai