| uClibc thread-safety analysis |
| |
| Things that are still known to be needed for thread safety: |
| |
| none |
| |
| |
| |
| |
| Things that might be nice, but are not required: |
| |
| getnetent_r <desired, but not required for SuSv3> |
| gethostent_r <desired, but not required for SuSv3> |
| getprotoent_r <desired, but not required for SuSv3> |
| getnetbyname_r <desired, but not required for SuSv3> |
| getnetbyaddr_r <desired, but not required for SuSv3> |
| |
| |
| |
| |
| |
| Functions that use static data and may still need locking: |
| |
| |
| -------------------------------------------------------------------- |
| |
| libc/inet/rpc/rpc_thread.c: |
| |
| __rpc_thread_variables is currently disabled, since thread |
| local storage seems to not be correctly specified as |
| weak functions. |
| |
| -------------------------------------------------------------------- |
| |
| unistd/getpass.c: |
| |
| static char buf[PWD_BUFFER_SIZE]; |
| |
| getpass <fix required> <--- |
| |
| NOTE: This function returns a pointer to a static data structure. |
| This seems like it requires an _r version of this function. Glibc |
| does the same thing. Oops! So much for thread-safe glibc! |
| |
| -------------------------------------------------------------------- |
| |
| unistd/sysconf.c: |
| |
| static long int ret_vals[_UCLIBC_SYSCONF_NUM_VALID_ARGS]; |
| |
| find_or_add_in_table <fix required?> <--- |
| main <fix required?> <--- |
| |
| NOTE: I'm not sure if this needs to be made reentrant... |
| |
| -------------------------------------------------------------------- |