Andreas Kling
4a8683ea68
Kernel+LibPthread+LibC: Add a naive futex and use it for pthread_cond_t
...
This patch implements a simple version of the futex (fast userspace
mutex) API in the kernel and uses it to make the pthread_cond_t API's
block instead of busily sched_yield().
An arbitrary userspace address is passed to the kernel as a "token"
that identifies the futex and you can then FUTEX_WAIT and FUTEX_WAKE
that specific userspace address.
FUTEX_WAIT corresponds to pthread_cond_wait() and FUTEX_WAKE is used
for pthread_cond_signal() and pthread_cond_broadcast().
I'm pretty sure I'm missing something in this implementation, but it's
hopefully okay for a start. :^)
2019-12-25 23:54:06 +01:00
..
2019-11-16 16:27:48 +01:00
2019-11-09 20:52:34 +01:00
2019-10-02 18:20:11 +02:00
2019-10-11 12:17:05 +02:00
2019-12-25 23:54:06 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-12-22 10:47:39 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-10-12 22:35:23 +02:00
2019-11-16 12:50:50 +01:00
2019-09-29 21:02:13 +02:00
2019-10-03 08:18:05 +02:00
2019-11-17 15:37:46 +01:00
2019-09-12 18:26:19 +02:00
2019-10-17 09:18:01 +02:00
2019-11-16 17:29:09 +01:00
2019-11-18 08:55:45 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-09-17 21:56:42 +02:00
2019-09-06 20:03:16 +02:00
2019-09-06 15:36:54 +02:00
2019-07-04 16:16:50 +02:00
2019-11-10 13:07:51 +01:00
2019-12-09 16:33:14 +01:00
2019-07-04 16:16:50 +02:00
2019-10-03 08:23:54 +02:00
2019-10-03 08:23:54 +02:00
2019-11-18 09:04:32 +01:00
2019-11-16 12:50:50 +01:00
2019-11-16 12:50:50 +01:00
2019-12-25 10:11:09 +01:00
2019-12-22 10:47:39 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-12-09 19:12:38 +01:00
2019-12-18 20:48:24 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-12-09 17:51:21 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-09-06 15:36:54 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-09-29 21:02:13 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-12-25 23:54:06 +01:00
2019-12-25 23:54:06 +01:00
2019-11-17 21:01:26 +01:00
2019-07-04 16:16:50 +02:00
2019-12-23 20:33:01 +01:00
2019-12-23 20:33:01 +01:00
2019-07-04 16:16:50 +02:00
2019-08-01 11:03:48 +02:00
2019-11-16 12:50:50 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-11-29 14:53:35 +01:00
2019-10-11 12:17:05 +02:00
2019-11-26 19:58:25 +01:00
2019-11-16 12:50:50 +01:00
2019-12-22 10:47:39 +01:00
2019-11-16 17:29:09 +01:00
2019-12-15 19:33:39 +01:00
2019-11-10 21:19:08 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-10-15 09:52:55 +02:00
2019-10-15 09:52:55 +02:00
2019-09-06 15:36:54 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-12-15 21:29:26 +01:00
2019-11-11 22:04:16 +01:00
2019-07-04 16:16:50 +02:00
2019-09-29 21:02:13 +02:00
2019-07-04 16:16:50 +02:00
2019-12-01 11:52:17 +01:00
2019-12-01 11:52:17 +01:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-07-04 16:16:50 +02:00
2019-11-11 22:04:16 +01:00
2019-11-11 22:04:16 +01:00