use a single libc and deduplicate threading code