Tasks

1) Share thread state between kernel and userland, see Solaris schedctl http://docs.oracle.com/cd/E19455-01/806-0630/6j9vkb8hv/index.html

21:18 <@kib> davide, yes, ONCPU/OFFCPU.

21:19 <@kib> they also prevent descheduling of the spinning thread, AFAIR

21:22 <@kib> davide, IMO we must explicitely define the structure used to communicate between kernel and libthr

21:22 <@kib> the structure might be embedded into the stuct thread

21:24 <@kib> davide, you store the pointer to the structure into the lock

21:24 <@kib> davide, if needed, the struct thread * can be easily calculated from the embedded struct pointer

21:25 <@kib> offsetof()

21:27 <@kib> davide, the comm structure is interpreted by kernel

21:27 <@kib> if struct thread needs to be changed, you immediately get the ABI problem if kernel accesses it

21:28 <@kib> comm would initally contain only sc_oncpu (in solaris language)

21:28 <@kib> and padding for the future use

2) Easy way to access thread owner state. Need thread to write 'struct pthread' address in the owner field of the umtx lock. → ABI preservation? (Ask kib)

→ Need to decoupling libthr internals/kernel

3) Implement adaptive spinning for mutexes (as done in kernel)

4) Replace msleep() calls with direct calls to the scheduler (ask attilio)

5) umtx hashtable spinlock → mutex_padalign


  • umtxcontention.txt
  • Last modified: 2026/10/12 10:55
  • (external edit)