message: Fix thread-locals
diff: use alloc::boxed::Box;
  use alloc::collections::BTreeMap;
  -use core::sync::atomic::{AtomicUsize, Ordering};
  +use core::sync::atomic::{AtomicU32, Ordering};
  use core::{intrinsics, ptr};
  use header::sys_mman;
  @@ -20,7 +20,7 @@ pub struct Semaphore {
  type pte_osThreadHandle = pid_t;
  type pte_osMutexHandle = *mut i32;
  type pte_osSemaphoreHandle = *mut Semaphore;
  -type pte_osThreadEntryPoint = unsafe extern "C" fn(params: *mut c_void) -> c_int;
  +type pte_osThreadEntryPoint = unsafe extern "C" fn(params: *mut c_void) -> *mut c_void;
  #[repr(C)]
  #[derive(Eq, PartialEq)]
  @@ -45,7 +45,7 @@ static mut pid_stacks_lock: i32 = 0;
  #[thread_local]
  static mut LOCALS: *mut BTreeMap<c_uint, *mut c_void> = ptr::null_mut();
  -static NEXT_KEY: AtomicUsize = AtomicUsize::new(0);
  +static NEXT_KEY: AtomicU32 = AtomicU32::new(0);
  unsafe fn locals() -> &'static mut BTreeMap<c_uint, *mut c_void> {
  if LOCALS.is_null() {
  @@ -426,7 +426,7 @@ pub unsafe extern "C" fn pte_osTlsGetValue(index: c_uint) -> *mut c_void {
  #[no_mangle]
  pub unsafe extern "C" fn pte_osTlsAlloc(pKey: *mut c_uint) -> pte_osResult {
  - NEXT_KEY.fetch_add(1, Ordering::SeqCst);
  + *pKey = NEXT_KEY.fetch_add(1, Ordering::SeqCst);
  PTE_OS_OK
  }
  