1uClibc thread-safety analysis 2 3Things that are still known to be needed for thread safety: 4 5 none 6 7 8 9 10Things that might be nice, but are not required: 11 12 getnetent_r <desired, but not required for SuSv3> 13 gethostent_r <desired, but not required for SuSv3> 14 getprotoent_r <desired, but not required for SuSv3> 15 getnetbyname_r <desired, but not required for SuSv3> 16 getnetbyaddr_r <desired, but not required for SuSv3> 17 18 19 20 21 22Functions that use static data and may still need locking: 23 24 25 -------------------------------------------------------------------- 26 27 libc/inet/rpc/rpc_thread.c: 28 29 __rpc_thread_variables is currently disabled, since thread 30 local storage seems to not be correctly specified as 31 weak functions. 32 33 -------------------------------------------------------------------- 34 35 unistd/getpass.c: 36 37 static char buf[PWD_BUFFER_SIZE]; 38 39 getpass <fix required> <--- 40 41 NOTE: This function returns a pointer to a static data structure. 42 This seems like it requires an _r version of this function. Glibc 43 does the same thing. Oops! So much for thread-safe glibc! 44 45 -------------------------------------------------------------------- 46 47 unistd/sysconf.c: 48 49 static long int ret_vals[_UCLIBC_SYSCONF_NUM_VALID_ARGS]; 50 51 find_or_add_in_table <fix required?> <--- 52 main <fix required?> <--- 53 54 NOTE: I'm not sure if this needs to be made reentrant... 55 56 -------------------------------------------------------------------- 57