summaryrefslogtreecommitdiff
path: root/docs/threads.txt
blob: 182f1be7e26b238ac515510ca9023d981797e9f9 (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
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...

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