lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame^] | 1 | uClibc thread-safety analysis |
| 2 | |
| 3 | Things that are still known to be needed for thread safety: |
| 4 | |
| 5 | none |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | Things 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 | |
| 22 | Functions 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 | -------------------------------------------------------------------- |