f9micro / f9-kernel

An efficient and secure microkernel built for ARM Cortex-M cores, inspired by L4
Other
682 stars 145 forks source link

IPC hangs if L4_Call runs before L4_Wait #72

Closed georgekang closed 10 years ago

georgekang commented 10 years ago

If a thread runs L4_Call before the receiving thread run L4_Wait, this ipc connection between sender and receiver would not be created.
Sender uses L4_Call first and it would suspends if receiver is in running state at this moment. Then receiver runs L4_Wait which uses "L4_anythread" as "ipc_from" to wait "any" thread. However, "L4_anythread" would be skipped by kernel in ipc_deliver(). Therefore, this ipc connection would not be created and both sender and receiver suspend.