summaryrefslogtreecommitdiff
path: root/docs/threads.txt
blob: 4669f3761c8fda0a778707f95893e4ed7b6c9ed6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
uClibc thread-safety analysis

Things that are still known to be needed for thread safety:

        getgrgid_r		<not implemented, required by SuSv3>
        getgrnam_r		<not implemented, required by SuSv3>





Things that might be nice, but are not required:

        gethostent_r            <desired, but not required for SuSv3>
        getnetbyaddr_r          <desired, but not required for SuSv3>
        getnetent_r             <desired, but not required for SuSv3>
        getnetbyname_r          <desired, but not required for SuSv3>
        getprotobynumber_r      <desired, but not required for SuSv3>
        getprotoent_r           <desired, but not required for SuSv3>
        getprotobyname_r        <desired, but not required for SuSv3>
        getnetbyaddr_r          <desired, but not required for SuSv3>
        getnetbyname_r          <desired, but not required for SuSv3>
        getnetent_r             <desired, but not required for SuSv3>
        getprotobynumber_r      <desired, but not required for SuSv3>
        getprotoent_r           <desired, but not required for SuSv3>
        getprotobyname_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...

        --------------------------------------------------------------------