Implementing a user-level thread library in Linux/C for pre-emptive multi-threading.