====== Tasks ====== ===== IN PROGRESS ===== 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 ===== TODO ===== 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 ---- {{tag>Stale}}