Remove hrtimer events, add sched_migrate_task

High resolution timer events (init, start and cancel) are not required most of
the time. Remove them to reduce the overhead.

Add low-frequency sched_migrate_task to know when a task is changing runqueue.

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Support init and done callbacks in spin threads

Callbacks init_t and done_t are called if defined in the thread context.

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Add library for pinning thread to CPU

Convenience function to handle sched_setaffinity

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Integrate spin and pincpu into pulse

Trigger pulses on defined CPU set. Threads are dispatched in a round-robin way.

Example:

  wk-pulse --cpuset 0,0,1 --thread 4

  thread 0 -> CPU 0
  thread 1 -> CPU 0
  thread 2 -> CPU 1
  thread 3 -> CPU 0

Thus, thread 0,1,3 will wake-up at the same time and fight for the CPU for the
specified period of time. The period is fixed, if contention is very high, then
there is no guarantee a thread will run at all.

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>