Scheduler activations on BSD: sharing thread management between kernel and application