Changeset 1661


Ignore:
Timestamp:
Nov 22, 2004, 2:46:26 AM (21 years ago)
Author:
bird
Message:

Extended fmutex interface.

Location:
trunk/src/emx
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/include/emx/io.h

    • Property cvs2svn:cvs-rev changed from 1.11 to 1.12
    r1660 r1661  
    207207
    208208#define STREAM_LOCK(f) \
    209   (_fmutex_request(&(f)->__u.__fsem, _FMR_IGNINT) != 0 \
    210    ? abort () : (void)0)
     209  ((f)->__uVersion != _FILE_STDIO_VERSION ? __stream_abort (f, "version error") \
     210   : _fmutex_request(&(f)->__u.__fsem, _FMR_IGNINT) != 0 \
     211   ? __stream_abort (f, "fmutex request") : 0)
    211212
    212213#define STREAM_UNLOCK(f) \
    213   (_fmutex_release(&(f)->__u.__fsem) != 0 ? abort() : (void)0)
     214  (_fmutex_release(&(f)->__u.__fsem) != 0 ? __stream_abort (f, "fmutex release") : (void)0)
    214215
    215216#define STREAM_LOCK_NOWAIT(f) \
    216   (_fmutex_request(&(f)->__u.__fsem, _FMR_NOWAIT) == 0)
    217 
    218 #define STREAM_UNLOCKED(f) _fmutex_available(&(f)->__u.__fsem)
     217  (((f)->__uVersion == _FILE_STDIO_VERSION || __stream_abort (f, "version error")) && _fmutex_request(&(f)->__u.__fsem, _FMR_NOWAIT) == 0)
     218
     219#define STREAM_UNLOCKED(f) ((f)->__uVersion == _FILE_STDIO_VERSION && _fmutex_available(&(f)->__u.__fsem))
     220
     221int __stream_abort(struct _FILE *f, const char *pszMsg);
    219222
    220223#endif /* defined (_SYS_FMUTEX_H) */
  • trunk/src/emx/include/os2emx.h

    • Property cvs2svn:cvs-rev changed from 1.24 to 1.25
    r1660 r1661  
    1330813308#define FS_SAVE()       __asm__ __volatile__ ("movl %%fs, %%eax; movl %%eax,%0;" : : "m" (__fs__) : "%eax" )
    1330913309#define FS_SAVE_LOAD()  __asm__ __volatile__ ("movl %%fs, %%eax; movl %%eax,%0; movl $DosTIB, %%eax; movl %%eax, %%fs" : : "m" (__fs__) : "%eax" )
     13310#define FS_VAR_SAVE_LOAD() FS_VAR(); FS_SAVE_LOAD()
    1331013311#define FS_RESTORE()    __asm__ __volatile__ ("movl %0, %%eax; movl %%eax,%%fs;" : : "m" (__fs__) : "%eax" )
    1331113312#else
  • trunk/src/emx/include/stdio.h

    • Property cvs2svn:cvs-rev changed from 1.13 to 1.14
    r1660 r1661  
    178178#define _FILE_T
    179179#define _FILE_MEMBERS_HAVE_UNDERSCORE
    180 struct _file2;
     180#define _FILE_STDIO_VERSION     (0x06000000 | sizeof(struct _FILE))
    181181typedef struct _FILE
    182182{
     183    unsigned __uVersion;
    183184    char * _ptr;
    184185    char * _buffer;
     
    201202        _fmutex   __fsem;
    202203#endif
    203         char      __rsem_ersatz[8];
     204        char      __rsem_ersatz[12];
    204205    } __u;
    205     /** Pointer to the stream vector which thie FILE belongs to.
     206    /** Pointer to the stream vector which this FILE belongs to.
    206207     * This member is the first which should not be zeroed by _newstream()! */
    207208    void    *__pSV;
  • trunk/src/emx/include/sys/fmutex.h

    • Property cvs2svn:cvs-rev changed from 1.3 to 1.4
    r1660 r1661  
    66
    77#ifndef _SYS_FMUTEX_H
    8 #define _SYS_FMUTEX_H
     8    #define _SYS_FMUTEX_H
    99
    10 #include <stdlib.h> /* need abort */
     10    #include <sys/cdefs.h>
     11    #include <stdlib.h> /* need abort */
     12    #include <InnoTekLIBC/FastInfoBlocks.h>
    1113
    12 #if defined (__cplusplus)
    13 extern "C" {
    14 #endif
     14__BEGIN_DECLS
    1515
    1616/* Constants for _fmutex.fs.  See _fmutex_available() for ordering. */
    1717
    18 #define _FMS_UNINIT       0
    19 #define _FMS_AVAILABLE    1
    20 #define _FMS_OWNED_SIMPLE 2
    21 #define _FMS_OWNED_HARD   3
     18    #define _FMS_UNINIT       0
     19    #define _FMS_AVAILABLE    1
     20    #define _FMS_OWNED_SIMPLE 2
     21    #define _FMS_OWNED_HARD   3
    2222
    2323/* Constants for _fmutex_create() */
    2424
    25 #define _FMC_SHARED     0x01
     25    #define _FMC_SHARED         0x01
     26    #define _FMC_MUST_COMPLETE  0x02
     27    #define _FMC_DUMMY          0x04    /* internal */
    2628
    2729/* Constants for _fmutex_request() */
    2830
    29 #define _FMR_IGNINT     0x01
    30 #define _FMR_NOWAIT     0x02
     31    #define _FMR_IGNINT     0x01
     32    #define _FMR_NOWAIT     0x02
    3133
    3234/* We cannot use __attribute__ ((__packed__)) because G++ does not
    3335   support this. */
    3436
    35 #pragma pack(1)
     37    #pragma pack(1)
    3638typedef struct
    3739{
    3840    /** Handle to event semaphore. */
    39     unsigned long hev;
     41    unsigned long           hev;
    4042    /** Semaphore status. */
    41     __volatile__ signed char fs;
     43    volatile signed char    fs;
    4244    /** Semaphore create flags. (_FMC_SHARED) */
    43     unsigned char flags;
    44     /** padding the struct to 8 bytes. */
    45     unsigned char padding[2];
     45    unsigned char           flags;
     46    /** padding the struct to 16 bytes. */
     47    unsigned char           padding[2];
     48    /** The (pid << 16) | tid of the owner. */
     49    volatile unsigned       Owner;
     50    /** Descriptive name of the mutex. */
     51    const char             *pszDesc;
    4652} _fmutex;
    47 #pragma pack()
     53    #pragma pack()
     54
    4855
    4956
    5057unsigned __fmutex_request_internal (_fmutex *, unsigned, signed char);
    51 unsigned __fmutex_create_internal (_fmutex *, unsigned);
     58unsigned __fmutex_request_internal_must_complete (_fmutex *, unsigned);
    5259unsigned __fmutex_release_internal (_fmutex *);
     60unsigned __fmutex_release_internal_must_complete (_fmutex *);
    5361
    5462
    5563static __inline__ unsigned _fmutex_request (_fmutex *sem, unsigned flags)
    5664{
    57   signed char fs;
    58 
    59   fs = __cxchg (&sem->fs, _FMS_OWNED_SIMPLE);
    60   if (fs == _FMS_AVAILABLE)
    61     return 0;
    62   else
    63     return __fmutex_request_internal (sem, flags, fs);
     65    if (!(sem->flags & _FMC_MUST_COMPLETE))
     66    {
     67        signed char fs = __cxchg (&sem->fs, _FMS_OWNED_SIMPLE);
     68        if (fs == _FMS_AVAILABLE)
     69        {
     70            __atomic_xchg(&sem->Owner, fibGetTidPid());
     71            return 0;
     72        }
     73        else
     74            return __fmutex_request_internal (sem, flags, fs);
     75    }
     76    else
     77        return __fmutex_request_internal_must_complete (sem, flags);
    6478}
    6579
     
    6781static __inline__ unsigned _fmutex_release (_fmutex *sem)
    6882{
    69   signed char fs;
    70 
    71   fs = __cxchg (&sem->fs, _FMS_AVAILABLE);
    72   if (fs == _FMS_OWNED_HARD)
    73     return __fmutex_release_internal (sem);
    74   else
    75     return 0;
     83    if (!(sem->flags & _FMC_MUST_COMPLETE))
     84    {
     85        signed char fs;
     86        __atomic_xchg(&sem->Owner, 0);
     87        fs = __cxchg(&sem->fs, _FMS_AVAILABLE);
     88        if (fs != _FMS_OWNED_HARD)
     89            return 0;
     90        else
     91            return __fmutex_release_internal (sem);
     92    }
     93    else
     94        return __fmutex_release_internal_must_complete (sem);
    7695}
    77 
    7896
    7997static __inline__ int _fmutex_available (_fmutex *sem)
    8098{
    81   return sem->fs <= _FMS_AVAILABLE;
     99    return sem->fs <= _FMS_AVAILABLE;
    82100}
    83101
    84102
    85103unsigned _fmutex_create (_fmutex *, unsigned);
     104unsigned _fmutex_create2 (_fmutex *sem, unsigned, const char *);
    86105unsigned _fmutex_open (_fmutex *);
    87106unsigned _fmutex_close (_fmutex *);
    88107void _fmutex_dummy (_fmutex *);
    89108
    90 void _fmutex_checked_close (_fmutex *);
    91 void _fmutex_checked_create (_fmutex *, unsigned);
    92 void _fmutex_checked_open (_fmutex *);
     109void _fmutex_checked_close(_fmutex *);
     110void _fmutex_checked_create(_fmutex *, unsigned);
     111void _fmutex_checked_create2(_fmutex *, unsigned, const char *);
     112void _fmutex_checked_open(_fmutex *);
     113void _fmutex_abort(_fmutex *, const char *);
    93114
    94115static __inline__ void _fmutex_checked_release (_fmutex * sem)
    95116{
    96   if (_fmutex_release (sem) != 0)
    97     abort ();
     117    if (sem->Owner != fibGetTidPid())
     118        _fmutex_abort(sem, "release not owner");
     119    if (_fmutex_release (sem) != 0)
     120        _fmutex_abort(sem, "release");
    98121}
    99122
    100123static __inline__ void _fmutex_checked_request (_fmutex * sem, unsigned flags)
    101124{
    102   if (_fmutex_request (sem, flags) != 0)
    103     abort ();
     125    if (_fmutex_request (sem, flags) != 0)
     126        _fmutex_abort(sem, "request");
    104127}
    105128
    106 #if defined (__cplusplus)
    107 }
    108 #endif
     129__END_DECLS
    109130
    110131#endif /* not _SYS_FMUTEX_H */
     132
  • trunk/src/emx/src/lib/app/stdio.c

    • Property cvs2svn:cvs-rev changed from 1.10 to 1.11
    r1660 r1661  
    66#include <sys/fmutex.h>
    77#include <stdio.h>
     8#include <string.h>
    89#include <stdlib.h>
    910#include <emx/io.h>
    1011#include <emx/startup.h>
     12#include <emx/syscalls.h>
    1113#define __LIBC_LOG_GROUP  __LIBC_LOG_GRP_STREAM
    1214#include <InnoTekLIBC/logstrict.h>
     
    9698             */
    9799            gPreStreamVec.cFree--;
     100            gaPreFiles[i].__uVersion = _FILE_STDIO_VERSION;
    98101            gaPreFiles[i]._flags    |= _IOOPEN | _IONOCLOSEALL;
    99102            gaPreFiles[i]._handle    = i;
    100103            gaPreFiles[i]._flush     = _flushstream;
    101             if (_fmutex_create(&gaPreFiles[i].__u.__fsem, 0) != 0)
     104            if (_fmutex_create2(&gaPreFiles[i].__u.__fsem, 0, "LIBC stream") != 0)
    102105            {
    103106                LIBC_ASSERTM_FAILED("_setmore failed for i=%d\n", i);
     
    155158_CRT_INIT1(_init_streams)
    156159_CRT_EXIT1(_exit_streams)
     160
     161
     162
     163/**
     164 * Fatal stream error.
     165 *
     166 * @returns 0.
     167 * @param   f           Stream connected to the fatal error.
     168 * @param   pszMsg      Message to print.
     169 */
     170int __stream_abort(FILE *f, const char *pszMsg)
     171{
     172    static const char szMsg[] = "\r\nLIBC fatal error - streams: ";
     173    __write(2, szMsg, sizeof(szMsg) - 1);
     174    __write(2, pszMsg, strlen(pszMsg));
     175    if (f->__uVersion != _FILE_STDIO_VERSION)
     176    {
     177        static const char szMsg2[] = " (stream version mismatch (too))";
     178        __write(2, szMsg2, sizeof(szMsg2) - 1);
     179    }
     180    __write(2, "\r\n", 2);
     181    abort();
     182    return 0;
     183}
     184
  • trunk/src/emx/src/lib/io/_fopen.c

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r1660 r1661  
    8181  dst->_flags |= _IOOPEN | _IOBUFNONE;
    8282  dst->_flush = _flushstream;
    83   if (_fmutex_create (&dst->__u.__fsem, 0) != 0)
     83  if (_fmutex_create2 (&dst->__u.__fsem, 0, "LIBC stream fopen") != 0)
    8484    {
    8585      STREAMV_LOCK;
  • trunk/src/emx/src/lib/io/_mfopen.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    9090  stream->_tmpidx = inc;
    9191  stream->_ungetc_count = 0;
    92   if (_fmutex_create (&stream->__u.__fsem, 0) != 0)
     92  if (_fmutex_create2 (&stream->__u.__fsem, 0, "LIBC stream mfopen") != 0)
    9393    {
    9494      if (abuf != NULL) free (abuf);
  • trunk/src/emx/src/lib/io/_newstre.c

    • Property cvs2svn:cvs-rev changed from 1.9 to 1.10
    r1660 r1661  
    4141                     */
    4242                    bzero(&pSV->aFiles[i], offsetof(FILE, __pSV));
     43                    pSV->aFiles[i].__uVersion = _FILE_STDIO_VERSION;
    4344                    return &pSV->aFiles[i];
    4445                }
     
    7677        pFile = &pSV->aFiles[0];
    7778        pFile->_flags = _IONEW;
     79        pFile->__uVersion = _FILE_STDIO_VERSION;
    7880
    7981        /*
     
    103105void _closestream(FILE *stream)
    104106{
    105     stream->_flags = 0;
    106     /* Assumption hare made about how the dummy stuff is made. */
    107     if (stream->__u.__fsem.hev)
    108         _fmutex_close(&stream->__u.__fsem);
     107    if (stream->__uVersion == _FILE_STDIO_VERSION)
     108    {
     109        stream->_flags = 0;
     110        /* Assumption hare made about how the dummy stuff is made. */
     111        if (stream->__u.__fsem.hev)
     112            _fmutex_close(&stream->__u.__fsem);
    109113
    110     if (stream->__pSV)
    111         ((struct streamvec *)stream->__pSV)->cFree++;
     114        if (stream->__pSV)
     115            ((struct streamvec *)stream->__pSV)->cFree++;
     116    }
    112117}
  • trunk/src/emx/src/lib/io/fdopen.c

    • Property cvs2svn:cvs-rev changed from 1.8 to 1.9
    r1660 r1661  
    3030  if (!dst)
    3131    return NULL;
    32   if (_fmutex_create (&dst->__u.__fsem, 0) != 0)
     32  if (_fmutex_create2 (&dst->__u.__fsem, 0, "LIBC stream fdopen") != 0)
    3333    {
    3434      STREAMV_LOCK;
  • trunk/src/emx/src/lib/io/snprintf.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    1919    return EOF;
    2020  va_start (arg_ptr, format);
     21  trick.__uVersion = _FILE_STDIO_VERSION;
    2122  trick._buffer = buffer;
    2223  trick._ptr = buffer;
  • trunk/src/emx/src/lib/io/sprintf.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r1660 r1661  
    1717
    1818  va_start (arg_ptr, format);
     19  trick.__uVersion = _FILE_STDIO_VERSION;
    1920  trick._buffer = buffer;
    2021  trick._ptr = buffer;
  • trunk/src/emx/src/lib/io/sscanf.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    1818
    1919  va_start (arg_ptr, format);
     20  trick.__uVersion = _FILE_STDIO_VERSION;
    2021  trick._buffer = (char *)buffer;               /* const -> non-const */
    2122  trick._ptr = (char *)buffer;                  /* const -> non-const */
  • trunk/src/emx/src/lib/io/vsnprint.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    1616  if (n > INT_MAX)
    1717    return EOF;
     18  trick.__uVersion = _FILE_STDIO_VERSION;
    1819  trick._buffer = buffer;
    1920  trick._ptr = buffer;
  • trunk/src/emx/src/lib/io/vsprintf.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r1660 r1661  
    1414  int result;
    1515
     16  trick.__uVersion = _FILE_STDIO_VERSION;
    1617  trick._buffer = buffer;
    1718  trick._ptr = buffer;
  • trunk/src/emx/src/lib/io/vsscanf.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    1616  int result;
    1717
     18  trick.__uVersion = _FILE_STDIO_VERSION;
    1819  trick._buffer = (char *)buffer;             /* const -> non-const */
    1920  trick._ptr = (char *)buffer;                /* const -> non-const */
  • trunk/src/emx/src/lib/libc.def

    • Property cvs2svn:cvs-rev changed from 1.81 to 1.82
    r1660 r1661  
    2121EXPORTS
    2222; data
    23     "___default_hash" @1
     23    "___default_hash"  @1
    2424    "___digits" @2
    2525    "___libc_GLocaleCtype" @3
    26     "___libc_GLocaleCtypeDefault" @4
    27     "___progname" @5
    28     "___stderrp" @6
    29     "___stdinp" @7
    30     "___stdoutp" @8
    31     "__atexit_n" @9
    32     "__atexit_v" @10
    33     "__emx_optarg" @11
    34     "__emx_opterr" @12
    35     "__emx_optind" @13
    36     "__emx_optmode" @14
    37     "__emx_optopt" @15
    38     "__emx_optswchar" @16
    39     "__fmode_bin" @17
    40     "__mb_cur_max" @18
    41     "__org_environ" @19
    42     "__osmajor" @20
    43     "__osminor" @21
    44     "__pipe_size" @22
    45     "__rand48_add" @23
    46     "__rand48_mult" @24
    47     "__rand48_seed" @25
    48     "__std_daylight" @26
    49     "__std_environ" @27
    50     "__std_timezone" @28
    51     "__std_tzname" @29
    52     "__streamv_fmutex" @30
    53     "__streamvec_head" @31
    54     "__streamvec_tail" @32
    55     "__tmpidx" @33
    56     "__tzi" @34
    57     "__tzset_flag" @35
    58     "__um_high_heap" @36
    59     "__um_low_heap" @37
    60     "__um_regular_heap" @38
    61     "__um_tiled_heap" @39
    62     "_error_message_count" @40
    63     "_error_one_per_line" @41
    64     "_error_print_progname" @42
    65     "_optarg" @43
    66     "_opterr" @44
    67     "_optind" @45
    68     "_optopt" @46
    69     "_optreset" @47
     26    "___libc_GpFIBGIS" @4
     27    "___libc_GpFIBLIS" @5
     28    "___libc_GpFIBPIB" @6
     29    "___progname" @7
     30    "___stderrp" @8
     31    "___stdinp" @9
     32    "___stdoutp" @10
     33    "__atexit_n" @11
     34    "__atexit_v" @12
     35    "__emx_optarg" @13
     36    "__emx_opterr" @14
     37    "__emx_optind" @15
     38    "__emx_optmode" @16
     39    "__emx_optopt" @17
     40    "__emx_optswchar" @18
     41    "__fmode_bin" @19
     42    "__mb_cur_max" @20
     43    "__org_environ" @21
     44    "__osmajor" @22
     45    "__osminor" @23
     46    "__pipe_size" @24
     47    "__rand48_add" @25
     48    "__rand48_mult" @26
     49    "__rand48_seed" @27
     50    "__std_daylight" @28
     51    "__std_environ" @29
     52    "__std_timezone" @30
     53    "__std_tzname" @31
     54    "__streamv_fmutex" @32
     55    "__streamvec_head" @33
     56    "__streamvec_tail" @34
     57    "__tmpidx" @35
     58    "__tzi" @36
     59    "__tzset_flag" @37
     60    "__um_high_heap" @38
     61    "__um_low_heap" @39
     62    "__um_regular_heap" @40
     63    "__um_tiled_heap" @41
     64    "_error_message_count" @42
     65    "_error_one_per_line" @43
     66    "_error_print_progname" @44
     67    "_optarg" @45
     68    "_opterr" @46
     69    "_optind" @47
     70    "_optopt" @48
     71    "_optreset" @49
     72    "_pwdb_versions" @50
    7073
    7174
     
    158161    "DosOpenEventSemEx" @180
    159162    "DosOpenMutexSemEx" @181
     163    ; (sorted)
    160164    "___add_ovflpage" @182
    161165    "___addel" @183
     
    204208    "___buf_init" @226
    205209    "___call_hash" @227
    206     "___libc_Back_fsDirCurrentSet" @228
    207     "___chmod" @229
    208     "___libc_Back_ioFileSizeSet" @230
    209     "___close" @231
    210     "___collate_range_cmp" @232
    211     "___ctordtorInit1" @233
    212     "___ctordtorTerm1" @234
    213     "___dbpanic" @235
    214     "___delpair" @236
    215     "___dtoa" @237
    216     "___dup" @238
    217     "___dup2" @239
    218     "___error" @240
    219     "___error_at_line" @241
    220     "___exit" @242
    221     "___expand_table" @243
    222     "___fcntl" @244
    223     "___find_bigpair" @245
    224     "___find_last_page" @246
    225     "___findfirst" @247
    226     "___findnext" @248
    227     "___fmutex_release_internal" @249
    228     "___fmutex_request_internal" @250
     210    "___chmod" @228
     211    "___close" @229
     212    "___collate_range_cmp" @230
     213    "___ctordtorInit1" @231
     214    "___ctordtorTerm1" @232
     215    "___dbpanic" @233
     216    "___delpair" @234
     217    "___dtoa" @235
     218    "___dup" @236
     219    "___dup2" @237
     220    "___error" @238
     221    "___error_at_line" @239
     222    "___exit" @240
     223    "___expand_table" @241
     224    "___fcntl" @242
     225    "___find_bigpair" @243
     226    "___find_last_page" @244
     227    "___findfirst" @245
     228    "___findnext" @246
     229    "___fmutex_release_internal" @247
     230    "___fmutex_release_internal_must_complete" @248
     231    "___fmutex_request_internal" @249
     232    "___fmutex_request_internal_must_complete" @250
    229233    "___fork" @251
    230234    "___fpclassify" @252
     
    232236    "___fpclassifyl" @254
    233237    "___free_ovflpage" @255
    234     "___libc_FHEx" @256
    235     "___ftime" @257
    236     "___libc_Back_fsSymlinkStat" @258
    237     "___get_buf" @259
    238     "___get_page" @260
    239     "___libc_Back_fsDirCurrentGet" @261
    240     "__std_chroot" @262
    241     "___hash_open" @263
    242     "___ibitmap" @264
    243     "___imphandle" @265
    244     "___init" @266
    245     "___init_app" @267
    246     "___init_dll" @268
    247     "___ioctl1" @269
    248     "___ioctl2" @270
    249     "___isctype" @271
    250     "___isfinite" @272
    251     "___isfinitef" @273
    252     "___isfinitel" @274
    253     "___isnan" @275
    254     "___isnanf" @276
    255     "___isnanl" @277
    256     "___isnormal" @278
    257     "___isnormalf" @279
    258     "___isnormall" @280
    259     "___istype" @281
    260     "___libc_Back_threadCleanup" @282
    261     "___libc_Back_threadEnd" @283
    262     "___libc_Back_threadInit" @284
    263     "___libc_Back_threadStartup" @285
    264     "___libc_FH" @286
    265     "___libc_FHAllocate" @287
    266     "___libc_FHClose" @288
    267     "___libc_FHEnsureHandles" @289
    268     "___libc_FHMoreHandles" @290
    269     "___libc_ForkDefaultModuleCallback" @291
    270     "___libc_ForkRegisterModule" @292
    271     "___libc_HasHighMem" @293
    272     "___libc_HeapEndVoting" @294
    273     "___libc_HeapGetResult" @295
    274     "___libc_HeapVote" @296
    275     "___libc_HimemDefaultAlloc" @297
    276     "___libc_HimemDefaultRelease" @298
    277     "___libc_LogAssert" @299
    278     "___libc_LogDumpHex" @300
    279     "___libc_LogEnter" @301
    280     "___libc_LogGroupInit" @302
    281     "___libc_LogInit" @303
    282     "___libc_LogLeave" @304
    283     "___libc_LogMsg" @305
    284     "___libc_LogRaw" @306
    285     "___libc_PathRewrite" @307
    286     "___libc_PathRewriteAdd" @308
    287     "___libc_PathRewriteRemove" @309
    288     "___libc_StrictMemoryR" @310
    289     "___libc_StrictMemoryRW" @311
    290     "___libc_StrictStringR" @312
    291     "___libc_TLSAlloc" @313
    292     "___libc_TLSDestructor" @314
    293     "___libc_TLSFree" @315
    294     "___libc_TLSGet" @316
    295     "___libc_TLSGetDestructor" @317
    296     "___libc_TLSSet" @318
    297     "___libc_TcpipAllocFH43" @319
    298     "___libc_TcpipAllocFH44" @320
    299     "___libc_TcpipAllocFHEx43" @321
    300     "___libc_TcpipAllocFHEx44" @322
    301     "___libc_Tcpipbsdselect43" @323
    302     "___libc_Tcpipbsdselect44" @324
    303     "___libc_ThreadRegisterTermCallback" @325
    304     "___libc_TranslateCodepage" @326
    305     "___log2" @327
    306     "___libc_Back_ioSeek" @328
    307     "___mempcpy" @329
    308     "___libc_Back_fsDirCreate" @330
    309     "___libc_Back_ioFileOpen" @331
    310     "___ovfl_delete" @332
    311     "___ovfl_get" @333
    312     "___ovfl_put" @334
    313     "___pipe" @335
    314     "___posix_spawn_file_actions_realloc" @336
    315     "___put_page" @337
    316     "___read" @338
    317     "___read_kbd" @339
    318     "___rec_close" @340
    319     "___rec_delete" @341
    320     "___rec_dleaf" @342
    321     "___rec_fd" @343
    322     "___rec_fmap" @344
    323     "___rec_fpipe" @345
    324     "___rec_get" @346
    325     "___rec_iput" @347
    326     "___rec_open" @348
    327     "___rec_put" @349
    328     "___rec_ret" @350
    329     "___rec_search" @351
    330     "___rec_seq" @352
    331     "___rec_sync" @353
    332     "___rec_vmap" @354
    333     "___rec_vpipe" @355
    334     "___reclaim_buf" @356
    335     "___remove_zeros" @357
    336     "___libc_Back_fsDirRemove" @358
    337     "___select" @359
    338     "___settime" @360
    339     "___signbit" @361
    340     "___signbitf" @362
    341     "___signbitl" @363
    342     "___small_atod" @364
    343     "___small_dtoa" @365
    344     "___smutex_request_internal" @366
    345     "___spawni" @367
    346     "___spawnve" @368
    347     "___split_page" @369
    348     "___libc_Back_fsFileStat" @370
    349     "___strndup" @371
    350     "___strnlen" @372
    351     "___swchar" @373
    352     "___threadid" @374
    353     "___tolower" @375
    354     "___toupper" @376
    355     "___ttyname" @377
    356     "___ulimit" @378
    357     "___unwind2" @379
    358     "___utimes" @380
    359     "___wait" @381
    360     "___waitpid" @382
    361     "___write" @383
    362     "__abspath" @384
    363     "__assert" @385
    364     "__atfork_callback" @386
    365     "__beginthread" @387
    366     "__bi_add_bb" @388
    367     "__bi_cmp_bb" @389
    368     "__bi_cmp_pow2" @390
    369     "__bi_div_add_back" @391
    370     "__bi_div_estimate" @392
    371     "__bi_div_rem_bb" @393
    372     "__bi_div_rem_bw" @394
    373     "__bi_div_rem_pow2" @395
    374     "__bi_div_subtract" @396
    375     "__bi_fls" @397
    376     "__bi_hdiv_rem_b" @398
    377     "__bi_mul_bb" @399
    378     "__bi_mul_bw" @400
    379     "__bi_pow5" @401
    380     "__bi_set_b" @402
    381     "__bi_set_d" @403
    382     "__bi_set_w" @404
    383     "__bi_shl_b" @405
    384     "__bi_shl_w" @406
    385     "__bi_shr_b" @407
    386     "__bi_sub_mul_bw" @408
    387     "__bi_wdiv_rem_pow2" @409
    388     "__chdir2" @410
    389     "__clear87" @411
    390     "__closestream" @412
    391     "__compute_dst_table" @413
    392     "__const_HALF" @414
    393     "__const_M_ONE" @415
    394     "__const_NAN" @416
    395     "__const_ONE" @417
    396     "__const_TWO" @418
    397     "__const_ZERO" @419
    398     "__control87" @420
    399     "__core" @421
    400     "__crlf" @422
    401     "__day" @423
    402     "__defext" @424
    403     "__dorand48" @425
    404     "__dt_free" @426
    405     "__dt_read" @427
    406     "__dt_sort" @428
    407     "__dt_split" @429
    408     "__ea_free" @430
    409     "__ea_get" @431
    410     "__ea_put" @432
    411     "__ea_remove" @433
    412     "__ea_set_errno" @434
    413     "__ea_write" @435
    414     "__ead_add" @436
    415     "__ead_clear" @437
    416     "__ead_copy" @438
    417     "__ead_count" @439
    418     "__ead_create" @440
    419     "__ead_delete" @441
    420     "__ead_destroy" @442
    421     "__ead_enum" @443
    422     "__ead_fea2list_size" @444
    423     "__ead_fea2list_to_fealist" @445
    424     "__ead_fealist_to_fea2list" @446
    425     "__ead_find" @447
    426     "__ead_get_fea2list" @448
    427     "__ead_get_flags" @449
    428     "__ead_get_name" @450
    429     "__ead_get_value" @451
    430     "__ead_make_index" @452
    431     "__ead_name_len" @453
    432     "__ead_read" @454
    433     "__ead_replace" @455
    434     "__ead_size_buffer" @456
    435     "__ead_sort" @457
    436     "__ead_use_fea2list" @458
    437     "__ead_value_size" @459
    438     "__ead_write" @460
    439     "__emx_getopt" @461
    440     "__emxload_connect" @462
    441     "__emxload_disconnect" @463
    442     "__emxload_do_connect" @464
    443     "__emxload_do_disconnect" @465
    444     "__emxload_do_receive" @466
    445     "__emxload_do_request" @467
    446     "__emxload_do_wait" @468
    447     "__emxload_env" @469
    448     "__emxload_list_get" @470
    449     "__emxload_list_start" @471
    450     "__emxload_prog" @472
    451     "__emxload_request" @473
    452     "__emxload_stop" @474
    453     "__emxload_this" @475
    454     "__emxload_unload" @476
    455     "__endbuf1" @477
    456     "__endthread" @478
    457     "__envargs" @479
    458     "__err" @480
    459     "__errno" @481
    460     "__errno_fun" @482
    461     "__execname" @483
    462     "__exit" @484
    463     "__exit_streams" @485
    464     "__fbuf" @486
    465     "__fcloseall" @487
    466     "__fflush_nolock" @488
    467     "__filesys" @489
    468     "__fill" @490
    469     "__flush" @491
    470     "__flushstream" @492
    471     "__fmutex_checked_close" @493
    472     "__fmutex_checked_create" @494
    473     "__fmutex_checked_open" @495
    474     "__fmutex_close" @496
    475     "__fmutex_create" @497
    476     "__fmutex_dummy" @498
    477     "__fmutex_open" @499
    478     "__fnexplode" @500
    479     "__fnexplodefree" @501
    480     "__fngetdrive" @502
    481     "__fnisabs" @503
    482     "__fnisrel" @504
    483     "__fnlwr" @505
    484     "__fnlwr2" @506
    485     "__fnslashify" @507
    486     "__fpreset" @508
    487     "__fseek_hdr" @509
    488     "__fseek_nolock" @510
    489     "__fsetmode" @511
    490     "__fsopen" @512
    491     "__ftell_nolock" @513
    492     "__fullpath" @514
    493     "__fwrite_nolock" @515
    494     "__fxam" @516
    495     "__fxaml" @517
    496     "__getcwd1" @518
    497     "__getcwd2" @519
    498     "__getdrive" @520
    499     "__getext" @521
    500     "__getext2" @522
    501     "__getname" @523
    502     "__getpass1" @524
    503     "__getpass2" @525
    504     "__getprogname" @526
    505     "__gettid" @527
    506     "__getvol" @528
    507     "__gmt2loc" @529
    508     "__hcalloc" @530
    509     "__heap_walk" @531
    510     "__heapchk" @532
    511     "__heapmin" @533
    512     "__heapset" @534
    513     "__hinitheap" @535
    514     "__hmalloc" @536
    515     "__hrealloc" @537
    516     "__imphandle" @538
    517     "__init_streams" @539
    518     "__input" @540
    519     "__int86" @541
    520     "__isterm" @542
    521     "__lcalloc" @543
    522     "__libc_16to32" @544
    523     "__libc_32to16" @545
    524     "__libc_thunk1" @546
    525     "__linitheap" @547
    526     "__lmalloc" @548
    527     "__loc2gmt" @549
    528     "__lrealloc" @550
    529     "__makepath" @551
    530     "__memcount" @552
    531     "__memdif" @553
    532     "__memrchr" @554
    533     "__memswap" @555
    534     "__mfclose" @556
    535     "__mfopen" @557
    536     "__mheap" @558
    537     "__mktime" @559
    538     "__month_day_leap" @560
    539     "__month_day_non_leap" @561
    540     "__msize" @562
    541     "__newstream" @563
    542     "__openstream" @564
    543     "__os2_bad" @565
    544     "__output" @566
    545     "__path" @567
    546     "__read_kbd" @568
    547     "__remext" @569
    548     "__response" @570
    549     "__rfnlwr" @571
    550     "__rmtmp" @572
    551     "__scrsize" @573
    552     "__searchenv" @574
    553     "__seek_hdr" @575
    554     "__sfnlwr" @576
    555     "__sleep2" @577
    556     "__splitargs" @578
    557     "__splitpath" @579
    558     "__status87" @580
    559     "__std_abort" @581
    560     "__std_abs" @582
    561     "__std_access" @583
    562     "__std_acos" @584
    563     "__std_acosl" @585
    564     "__std_asctime" @586
    565     "__std_asctime_r" @587
    566     "__std_asin" @588
    567     "__std_asinl" @589
    568     "__std_atan" @590
    569     "__std_atan2" @591
    570     "__std_atan2l" @592
    571     "__std_atanl" @593
    572     "__std_atexit" @594
    573     "__std_atof" @595
    574     "__std_atofl" @596
    575     "__std_atoi" @597
    576     "__std_atol" @598
    577     "__std_atoll" @599
    578     "__std_basename" @600
    579     "__std_bcmp" @601
    580     "__std_bcopy" @602
    581     "__std_brk" @603
    582     "__std_bsearch" @604
    583     "__std_bzero" @605
    584     "__std_calloc" @606
    585     "__std_cbrt" @607
    586     "__std_cbrtl" @608
    587     "__std_ceil" @609
    588     "__std_ceill" @610
    589     "__std_cfgetispeed" @611
    590     "__std_cfgetospeed" @612
    591     "__std_cfsetispeed" @613
    592     "__std_cfsetospeed" @614
    593     "__std_cfsetspeed" @615
    594     "__std_chdir" @616
    595     "__chdrive" @617
    596     "__std_chmod" @618
    597     "__std_chsize" @619
    598     "__std_clearerr" @620
    599     "__std_clock" @621
    600     "__std_close" @622
    601     "__std_closedir" @623
    602     "__std_copysign" @624
    603     "__std_copysignf" @625
    604     "__std_copysignl" @626
    605     "__std_cos" @627
    606     "__std_cosh" @628
    607     "__std_coshl" @629
    608     "__std_cosl" @630
    609     "__std_creat" @631
    610     "__std_ctime" @632
    611     "__std_ctime_r" @633
    612     "__std_cuserid" @634
    613     "__std_difftime" @635
    614     "__std_dirname" @636
    615     "__std_div" @637
    616     "__std_drand48" @638
    617     "__std_dup" @639
    618     "__std_dup2" @640
    619     "__std_eaccess" @641
    620     "__std_endpwent" @642
    621     "__std_eof" @643
    622     "__std_erand48" @644
    623     "__std_execl" @645
    624     "__std_execle" @646
    625     "__std_execlp" @647
    626     "__std_execlpe" @648
    627     "__std_execv" @649
    628     "__std_execve" @650
    629     "__std_execvp" @651
    630     "__std_execvpe" @652
    631     "__std_exit" @653
    632     "__std_exp" @654
    633     "__std_expand" @655
    634     "__std_expl" @656
    635     "__std_fabs" @657
    636     "__std_fabsl" @658
    637     "__std_fclose" @659
    638     "__std_fcntl" @660
    639     "__std_fdopen" @661
    640     "__std_feof" @662
    641     "__std_ferror" @663
    642     "__std_fflush" @664
    643     "__std_ffs" @665
    644     "__std_fgetc" @666
    645     "__std_fgetchar" @667
    646     "__std_fgetpos" @668
    647     "__std_fgets" @669
    648     "__std_filelength" @670
    649     "__std_fileno" @671
    650     "__std_flock" @672
    651     "__std_floor" @673
    652     "__std_floorl" @674
    653     "__std_flushall" @675
    654     "__std_fmod" @676
    655     "__std_fmodl" @677
    656     "__std_fnmatch" @678
    657     "__std_fopen" @679
    658     "__std_fork" @680
    659     "__std_fpathconf" @681
    660     "__std_fprintf" @682
    661     "__std_fputc" @683
    662     "__std_fputchar" @684
    663     "__std_fputs" @685
    664     "__std_fread" @686
    665     "__std_free" @687
    666     "__std_freopen" @688
    667     "__std_frexp" @689
    668     "__std_frexpl" @690
    669     "__std_fscanf" @691
    670     "__std_fseek" @692
    671     "__std_fseeko" @693
    672     "__std_fsetpos" @694
    673     "__std_fstat" @695
    674     "__std_fsync" @696
    675     "__std_ftell" @697
    676     "__std_ftello" @698
    677     "__std_ftime" @699
    678     "__std_ftruncate" @700
    679     "__std_ftw" @701
    680     "__std_fwrite" @702
    681     "__std_gcvt" @703
    682     "__std_getchar" @704
    683     "__std_getcwd" @705
    684     "__std_getegid" @706
    685     "__std_getenv" @707
    686     "__std_geteuid" @708
    687     "__std_getgid" @709
    688     "___libc_Back_signalTimer" @710
    689     "__std_getgrnam" @711
    690     "__std_getgroups" @712
    691     "__std_getlogin" @713
    692     "__std_getopt" @714
    693     "__std_getpagesize" @715
    694     "__std_getpass" @716
    695     "__std_getpgrp" @717
    696     "__std_getpid" @718
    697     "__std_getppid" @719
    698     "__std_ualarm" @720
    699     "__std_getpwent" @721
    700     "__std_setitimer" @722
    701     "__std_getitimer" @723
    702     "__std_getrlimit" @724
    703     "__std_gets" @725
    704     "__std_gettimeofday" @726
    705     "__std_getuid" @727
    706     "__std_getw" @728
    707     "__std_getwd" @729
    708     "__std_glob" @730
    709     "__std_globfree" @731
    710     "__std_gmtime" @732
    711     "__std_gmtime_r" @733
    712     "__std_hcreate" @734
    713     "__std_hdestroy" @735
    714     "__std_hsearch" @736
    715     "__std_hypot" @737
    716     "__std_hypotl" @738
    717     "__std_imaxabs" @739
    718     "__std_imaxdiv" @740
    719     "__std_index" @741
    720     "__std_insque" @742
    721     "__std_ioctl" @743
    722     "__std_isatty" @744
    723     "__std_jrand48" @745
    724     "__std_kill" @746
    725     "__std_labs" @747
    726     "__std_lcong48" @748
    727     "__std_ldexp" @749
    728     "__std_ldexpl" @750
    729     "__std_ldiv" @751
    730     "__std_lfind" @752
    731     "__std_lltoa" @753
    732     "__std_localeconv" @754
    733     "__std_localtime" @755
    734     "__std_localtime_r" @756
    735     "__std_lockf" @757
    736     "__std_log" @758
    737     "__std_log10" @759
    738     "__std_log10l" @760
    739     "__std_logl" @761
    740     "__std_longjmp" @762
    741     "__std_lrand48" @763
    742     "__std_lsearch" @764
    743     "__std_lseek" @765
    744     "__std_lstat" @766
    745     "__std_ltoa" @767
    746     "__std_malloc" @768
    747     "__std_mblen" @769
    748     "__std_mbstowcs" @770
    749     "__std_mbtowc" @771
    750     "__std_memccpy" @772
    751     "__std_memchr" @773
    752     "__std_memcmp" @774
    753     "__std_memcpy" @775
    754     "__std_memicmp" @776
    755     "__std_memmove" @777
    756     "__std_memset" @778
    757     "__std_mkdir" @779
    758     "__std_mkstemp" @780
    759     "__std_mktemp" @781
    760     "__std_mktime" @782
    761     "__std_modf" @783
    762     "__std_modfl" @784
    763     "__std_mrand48" @785
    764     "__std_nextafter" @786
    765     "__std_nextafterf" @787
    766     "__std_nextafterl" @788
    767     "__std_nrand48" @789
    768     "__std_open" @790
    769     "__std_opendir" @791
    770     "__std_pathconf" @792
    771     "__std_pause" @793
    772     "__std_pclose" @794
    773     "__std_perror" @795
    774     "__std_pipe" @796
    775     "__std_popen" @797
    776     "__std_posix_memalign" @798
    777     "__std_pow" @799
    778     "__std_powl" @800
    779     "__std_printf" @801
    780     "__std_putchar" @802
    781     "__std_putenv" @803
    782     "__std_puts" @804
    783     "__std_putw" @805
    784     "__std_qsort" @806
    785     "__std_qsort_r" @807
    786     "__std_raise" @808
    787     "__std_rand" @809
    788     "__std_read" @810
    789     "__std_readdir" @811
    790     "__std_readdir_r" @812
    791     "__std_readv" @813
    792     "__std_realloc" @814
    793     "__std_realpath" @815
    794     "__std_remove" @816
    795     "__std_remque" @817
    796     "__std_rename" @818
    797     "__std_rewind" @819
    798     "__std_rewinddir" @820
    799     "__std_rindex" @821
    800     "__std_rint" @822
    801     "__std_rintl" @823
    802     "__std_rmdir" @824
    803     "__std_sbrk" @825
    804     "__std_scanf" @826
    805     "__std_seed48" @827
    806     "__std_seekdir" @828
    807     "__std_select" @829
    808     "__std_setbuf" @830
    809     "__std_setbuffer" @831
    810     "__std_setenv" @832
    811     "__std_setgid" @833
    812     "__std_setjmp" @834
    813     "__std_setlocale" @835
    814     "__std_setmode" @836
    815     "__std_setpgid" @837
    816     "__std_setpwent" @838
    817     "__std_setrlimit" @839
    818     "__std_setsid" @840
    819     "__std_settimeofday" @841
    820     "__std_setuid" @842
    821     "__std_setvbuf" @843
    822     "__std_sigaction" @844
    823     "__std_sigaddset" @845
    824     "__std_sigdelset" @846
    825     "__std_sigemptyset" @847
    826     "__std_sigfillset" @848
    827     "__std_sigismember" @849
    828     "__std_siglongjmp" @850
    829     "__std_signal" @851
    830     "__std_sigpending" @852
    831     "__std_sigprocmask" @853
    832     "__std_sigsetjmp" @854
    833     "__std_sigsuspend" @855
    834     "__std_sin" @856
    835     "__std_sinh" @857
    836     "__std_sinhl" @858
    837     "__std_sinl" @859
    838     "__std_sleep" @860
    839     "__std_snprintf" @861
    840     "__std_sopen" @862
    841     "__std_spawnl" @863
    842     "__std_spawnle" @864
    843     "__std_spawnlp" @865
    844     "__std_spawnlpe" @866
    845     "__std_spawnv" @867
    846     "__std_spawnve" @868
    847     "__std_spawnvp" @869
    848     "__std_spawnvpe" @870
    849     "__std_sprintf" @871
    850     "__std_sqrt" @872
    851     "__std_sqrtl" @873
    852     "__std_srand" @874
    853     "__std_srand48" @875
    854     "__std_sscanf" @876
    855     "__std_stat" @877
    856     "__std_strcat" @878
    857     "__std_strchr" @879
    858     "__std_strcmp" @880
    859     "__std_strcoll" @881
    860     "__std_strcpy" @882
    861     "__std_strcspn" @883
    862     "__std_strdup" @884
    863     "__std_strerror" @885
    864     "__std_strerror_r" @886
    865     "__std_strftime" @887
    866     "__std_stricmp" @888
    867     "__std_strlen" @889
    868     "__std_strlwr" @890
    869     "__std_strncat" @891
    870     "__std_strncmp" @892
    871     "__std_strncpy" @893
    872     "__std_strnicmp" @894
    873     "__std_strnset" @895
    874     "__std_strpbrk" @896
    875     "__std_strptime" @897
    876     "__std_strrchr" @898
    877     "__std_strrev" @899
    878     "__std_strset" @900
    879     "__std_strspn" @901
    880     "__std_strstr" @902
    881     "__std_strtod" @903
    882     "__std_strtof" @904
    883     "__std_strtoimax" @905
    884     "__std_strtok" @906
    885     "__std_strtok_r" @907
    886     "__std_strtol" @908
    887     "__std_strtold" @909
    888     "__std_strtoll" @910
    889     "__std_strtoul" @911
    890     "__std_strtoull" @912
    891     "__std_strtoumax" @913
    892     "__std_strupr" @914
    893     "__std_strxfrm" @915
    894     "__std_swab" @916
    895     "__std_sys_errlist" @917
    896     "__std_sys_nerr" @918
    897     "__std_sysconf" @919
    898     "__std_system" @920
    899     "__std_tan" @921
    900     "__std_tanh" @922
    901     "__std_tanhl" @923
    902     "__std_tanl" @924
    903     "__std_tcdrain" @925
    904     "__std_tcflow" @926
    905     "__std_tcflush" @927
    906     "__std_tcgetattr" @928
    907     "__std_tcgetpgrp" @929
    908     "__std_tcsendbreak" @930
    909     "__std_tcsetattr" @931
    910     "__std_tcsetpgrp" @932
    911     "__std_tdelete" @933
    912     "__std_tell" @934
    913     "__std_telldir" @935
    914     "__std_tempnam" @936
    915     "__std_tfind" @937
    916     "__std_time" @938
    917     "__std_times" @939
    918     "__std_tmpfile" @940
    919     "__std_tmpnam" @941
    920     "__std_trunc" @942
    921     "__std_truncate" @943
    922     "__std_truncl" @944
    923     "__std_tsearch" @945
    924     "__std_ttyname" @946
    925     "__std_twalk" @947
    926     "__std_tzset" @948
    927     "__std_ulimit" @949
    928     "__std_ulltoa" @950
    929     "__std_ultoa" @951
    930     "__std_umask" @952
    931     "__std_uname" @953
    932     "__std_ungetc" @954
    933     "__std_unlink" @955
    934     "__std_unsetenv" @956
    935     "__std_usleep" @957
    936     "__std_utime" @958
    937     "__std_utimes" @959
    938     "__std_vfprintf" @960
    939     "__std_vfscanf" @961
    940     "__std_vprintf" @962
    941     "__std_vscanf" @963
    942     "__std_vsnprintf" @964
    943     "__std_vsprintf" @965
    944     "__std_vsscanf" @966
    945     "__std_wait" @967
    946     "__std_waitpid" @968
    947     "__std_wcstombs" @969
    948     "__std_wctomb" @970
    949     "__std_write" @971
    950     "__std_writev" @972
    951     "__stream_read" @973
    952     "__stream_write" @974
    953     "__strncpy" @975
    954     "__swchar" @976
    955     "__sys_dump_heap_objs" @977
    956     "__tcalloc" @978
    957     "__tfree" @979
    958     "__theapmin" @980
    959     "__threadstore" @981
    960     "__tmalloc" @982
    961     "__tmpbuf1" @983
    962     "__tmpidx_lock" @984
    963     "__tmpidx_unlock" @985
    964     "__tmpidxnam" @986
    965     "__trealloc" @987
    966     "__trslash" @988
    967     "__uaddmem" @989
    968     "__ucalloc" @990
    969     "__uclose" @991
    970     "__ucreate" @992
    971     "__ucreate2" @993
    972     "__udefault" @994
    973     "__udestroy" @995
    974     "__uflags" @996
    975     "__uheap_type" @997
    976     "__uheap_walk" @998
    977     "__uheap_walk2" @999
    978     "__uheapchk" @1000
    979     "__uheapmin" @1001
    980     "__uheapset" @1002
    981     "__uldiv" @1003
    982     "__um_addmem_nolock" @1004
    983     "__um_alloc_no_lock" @1005
    984     "__um_crumb_free_maybe_lock" @1006
    985     "__um_default_alloc" @1007
    986     "__um_default_expand" @1008
    987     "__um_default_release" @1009
    988     "__um_default_shrink" @1010
    989     "__um_find_bucket" @1011
    990     "__um_free_maybe_lock" @1012
    991     "__um_init_default_regular_heap" @1013
    992     "__um_init_default_tiled_heap" @1014
    993     "__um_lump_alloc" @1015
    994     "__um_lump_coalesce_free" @1016
    995     "__um_lump_free_maybe_lock" @1017
    996     "__um_lump_link_heap" @1018
    997     "__um_lump_make_free" @1019
    998     "__um_lump_unlink_bucket" @1020
    999     "__um_lump_unlink_heap" @1021
    1000     "__um_realloc" @1022
    1001     "__um_seg_addmem" @1023
    1002     "__um_seg_setmem" @1024
    1003     "__um_walk_error" @1025
    1004     "__um_walk_no_lock" @1026
    1005     "__umalloc" @1027
    1006     "__ungetc_nolock" @1028
    1007     "__uopen" @1029
    1008     "__ustats" @1030
    1009     "__utcalloc" @1031
    1010     "__utdefault" @1032
    1011     "__utmalloc" @1033
    1012     "__vsopen" @1034
    1013     "__warn" @1035
    1014     "__wildcard" @1036
    1015     "__year_day" @1037
    1016     "_argz_delete" @1038
    1017     "_catclose" @1039
    1018     "_catgets" @1040
    1019     "_catopen" @1041
    1020     "_dbm_clearerr" @1042
    1021     "_dbm_close" @1043
    1022     "_dbm_delete" @1044
    1023     "_dbm_dirfno" @1045
    1024     "_dbm_error" @1046
    1025     "_dbm_fetch" @1047
    1026     "_dbm_firstkey" @1048
    1027     "_dbm_nextkey" @1049
    1028     "_dbm_open" @1050
    1029     "_dbm_store" @1051
    1030     "_dbopen" @1052
    1031     "_err_set_exit" @1053
    1032     "_err_set_file" @1054
    1033     "_errc" @1055
    1034     "_errx" @1056
    1035     "__std_getopt_long" @1057
    1036     "_heapsort" @1058
    1037     "_initstate" @1059
    1038     "_isalnum" @1060
    1039     "_isalpha" @1061
    1040     "_isascii" @1062
    1041     "_isblank" @1063
    1042     "_iscntrl" @1064
    1043     "_isdigit" @1065
    1044     "_isgraph" @1066
    1045     "_ishexnumber" @1067
    1046     "_islower" @1068
    1047     "_isnumber" @1069
    1048     "_isprint" @1070
    1049     "_ispunct" @1071
    1050     "_isspace" @1072
    1051     "_isupper" @1073
    1052     "_isxdigit" @1074
    1053     "_lchmod" @1075
    1054     "_mergesort" @1076
    1055     "_mpool_close" @1077
    1056     "_mpool_filter" @1078
    1057     "_mpool_get" @1079
    1058     "_mpool_new" @1080
    1059     "_mpool_open" @1081
    1060     "_mpool_put" @1082
    1061     "_mpool_sync" @1083
    1062     "_posix_spawn" @1084
    1063     "_posix_spawn_file_actions_addclose" @1085
    1064     "_posix_spawn_file_actions_adddup2" @1086
    1065     "_posix_spawn_file_actions_addopen" @1087
    1066     "_posix_spawn_file_actions_destroy" @1088
    1067     "_posix_spawn_file_actions_init" @1089
    1068     "_posix_spawnattr_destroy" @1090
    1069     "_posix_spawnattr_getflags" @1091
    1070     "_posix_spawnattr_getpgroup" @1092
    1071     "_posix_spawnattr_getschedparam" @1093
    1072     "_posix_spawnattr_getschedpolicy" @1094
    1073     "_posix_spawnattr_getsigdefault" @1095
    1074     "_posix_spawnattr_getsigmask" @1096
    1075     "_posix_spawnattr_init" @1097
    1076     "_posix_spawnattr_setflags" @1098
    1077     "_posix_spawnattr_setpgroup" @1099
    1078     "_posix_spawnattr_setschedparam" @1100
    1079     "_posix_spawnattr_setschedpolicy" @1101
    1080     "_posix_spawnattr_setsigdefault" @1102
    1081     "_posix_spawnattr_setsigmask" @1103
    1082     "_posix_spawnp" @1104
    1083     "_radixsort" @1105
    1084     "_random" @1106
    1085     "_reallocf" @1107
    1086     "_regcomp" @1108
    1087     "_regerror" @1109
    1088     "_regexec" @1110
    1089     "_regfree" @1111
    1090     "_setprogname" @1112
    1091     "_setstate" @1113
    1092 ;    "_sig_info" @1114
    1093     "_sradixsort" @1115
    1094     "_srandom" @1116
    1095     "_srandomdev" @1117
    1096     "_stpcpy" @1118
    1097     "_strcasestr" @1119
    1098     "_strlcat" @1120
    1099     "_strlcpy" @1121
    1100     "_strnstr" @1122
    1101     "_strsep" @1123
    1102     "_strsignal" @1124
    1103 ;    "_sys_exception" @1125
    1104     "_sys_nsig" @1126
    1105     "_sys_siglist" @1127
    1106     "_sys_signame" @1128
    1107     "_toascii" @1129
    1108     "_tolower" @1130
    1109     "_toupper" @1131
    1110     "_verr" @1132
    1111     "_verrc" @1133
    1112     "_verrx" @1134
    1113     "_vwarn" @1135
    1114     "_vwarnc" @1136
    1115     "_vwarnx" @1137
    1116     "_warnc" @1138
    1117     "_warnx" @1139
    1118     ; new stuff.
    1119 
    1120     "___libc_SpmCheck" @1140
    1121     "___libc_Back_miscLoadAvg" @1141
    1122     "___libc_Back_fsFileStatFH" @1142
    1123     "___libc_Back_fsStat" @1143
    1124     "___libc_Back_fsStatFH" @1144
    1125     "___libc_Back_fsStats" @1145
    1126     "_getmntinfo" @1146
    1127     "__std_fstatfs" @1147
    1128     "__std_fstatvfs" @1148
    1129     "__std_getfsstat" @1149
    1130     "__std_getloadavg" @1150
    1131     "__std_statfs" @1151
    1132     "__std_statvfs" @1152
    1133     "__std_chown" @1153
    1134     "__std_fchown" @1154
    1135     "__std_lchown" @1155
    1136     "__std_link" @1156
    1137     "__std_mknod" @1157
    1138     "__std_readlink" @1158
    1139     "__std_symlink" @1159
    1140     "___libc_Back_fsSync" @1160
    1141     "__std_sync" @1161
    1142     "_endgrent" @1162
    1143     "_getgrent" @1163
    1144     "_getgrent_r" @1164
    1145     "_getgrgid_r" @1165
    1146     "_getgrnam_r" @1166
    1147     "___gr_match_entry" @1167
    1148     "___gr_parse_entry" @1168
    1149     "__nsdbtaddsrc" @1169
    1150     "__nsdbtput" @1170
    1151     "___nsdefaultsrc" @1171
    1152     "__nsdispatch" @1172
    1153     "_setgrent" @1173
    1154     "_setgroupent" @1174
    1155     "_endnetgrent" @1175
    1156     "_endusershell" @1176
    1157     "_getnetgrent" @1177
    1158     "_getpwent_r" @1178
    1159     "_getpwnam_r" @1179
    1160     "_getpwuid_r" @1180
    1161     "_getusershell" @1181
    1162     "_innetgr" @1182
    1163     "_pwdb_versions" @1183
    1164     "___pw_match_entry" @1184
    1165     "___pw_parse_entry" @1185
    1166     "___pw_scan" @1186
    1167     "_setnetgrent" @1187
    1168     "_setusershell" @1188
    1169     "_sl_add" @1189
    1170     "_sl_find" @1190
    1171     "_sl_free" @1191
    1172     "_sl_init" @1192
    1173     "__std_setpassent" @1193
    1174     "__std_setgroups" @1194
    1175     "___libc_OS2ErrorPop" @1195
    1176     "___libc_OS2ErrorPush" @1196
    1177     "___libc_OS2ErrorSet" @1197
    1178     "__getdcwd" @1198
    1179     "___libc_Back_fsDirChangeRoot" @1199
    1180     "___libc_Back_fsSymlinkCreate" @1200
    1181     "___libc_Back_fsSymlinkRead" @1201
    1182     "___libc_Back_ioFHToPath" @1202
    1183     "__std_getdtablesize" @1203
    1184     "_strmode" @1204
    1185     "___strverscmp" @1205
    1186     "__getcwdux" @1206
    1187     "___libc_Back_fsPathResolve" @1207
    1188     "__std_canonicalize_file_name" @1208
    1189     "__std_alarm" @1209
    1190     "___libc_Back_fsDriveDefaultGet" @1210
    1191     "___libc_Back_fsDriveDefaultSet" @1211
    1192     "__realrealpath" @1212
    1193 
    1194     ; 0.6 alpha 3 - start
    1195     "___libc_Timebomb" @1217
    1196     "___libc_Back_ldrClose" @1218
    1197     "___libc_Back_ldrOpen" @1219
    1198     "___libc_Back_ldrSymbol" @1220
    1199     "__std_dlclose" @1221
    1200     "__std_dlerror" @1222
    1201     "__std_dlopen" @1223
    1202     "__std_dlsym" @1224
    1203     "_getgrouplist" @1225
    1204     "_initgroups" @1226
    1205     "__std_memalign" @1227
    1206     "__std_valloc" @1228
    1207     "___lazyimp_resolver" @1229
    1208     "___lazyimp_resolver2" @1230
    1209     "___lazyldr_uconv_resolver" @1231
    1210     "___lazyldr_libuni_resolver" @1232
    1211     "___libc_Back_mmanProtect" @1233
    1212     "__std_mprotect" @1234
    1213     "__libc_Back_exceptionHandler" @1235
    1214     "__signal_os2" @1236
    1215     "__signal_sysv" @1237
    1216     "___sigpause_bsd" @1238
    1217     "__std_bsd_signal" @1239
    1218     "__std_killpg" @1240
    1219     "__std_psignal" @1241
    1220     "__std_sigaltstack" @1242
    1221     "__std_sigblock" @1243
    1222     "__std_sighold" @1244
    1223     "__std_sigignore" @1245
    1224     "__std_siginterrupt" @1246
    1225     "__std_sigpause" @1247
    1226     "__std_sigrelse" @1248
    1227     "__std_sigsetmask" @1249
    1228     "__std_sigtimedwait" @1250
    1229     "__std_sigvec" @1251
    1230     "__std_sigwait" @1252
    1231     "__std_sigwaitinfo" @1253
    1232     "__std_sigqueue" @1254
    1233     "__std_sigset" @1255
    1234     "_getgrgid" @1256
    1235     "_getpwnam" @1257
    1236     "_getpwuid" @1258
    1237     "___libc_Back_processGetEffGid" @1259
    1238     "___libc_Back_processGetEffUid" @1260
    1239     "___libc_Back_processGetGid" @1261
    1240     "___libc_Back_processGetUid" @1262
    1241     "___libc_Back_processSetGid" @1263
    1242     "___libc_Back_processSetGidAll" @1264
    1243     "___libc_Back_processSetUid" @1265
    1244     "___libc_Back_processSetUidAll" @1266
    1245     "___libc_Back_processWait" @1267
    1246     "___libc_Back_signalAction" @1268
    1247     "___libc_Back_signalInterrupt" @1269
    1248     "___libc_Back_signalMask" @1270
    1249     "___libc_Back_signalPending" @1271
    1250     "___libc_Back_signalQueue" @1272
    1251     "___libc_Back_signalRaise" @1273
    1252     "___libc_Back_signalSendPGrp" @1274
    1253     "___libc_Back_signalSendPid" @1275
    1254     "___libc_Back_signalStack" @1276
    1255     "___libc_Back_signalSuspend" @1277
    1256     "___libc_Back_signalWait" @1278
    1257     "__std_setegid" @1279
    1258     "__std_seteuid" @1280
    1259     "__std_setregid" @1281
    1260     "__std_setresgid" @1282
    1261     "__std_setresuid" @1283
    1262     "__std_setreuid" @1284
    1263     "__std_setrgid" @1285
    1264     "__std_setruid" @1286
    1265     "__std_waitid" @1287
    1266     "__std_wait3" @1288
    1267     "__std_wait4" @1289
    1268     "__std_getopt_long_only" @1290
    1269 
     238    "___ftime" @256
     239    "___get_buf" @257
     240    "___get_page" @258
     241    "___gr_match_entry" @259
     242    "___gr_parse_entry" @260
     243    "___hash_open" @261
     244    "___ibitmap" @262
     245    "___imphandle" @263
     246    "___init" @264
     247    "___init_app" @265
     248    "___init_dll" @266
     249    "___ioctl1" @267
     250    "___ioctl2" @268
     251    "___isctype" @269
     252    "___isfinite" @270
     253    "___isfinitef" @271
     254    "___isfinitel" @272
     255    "___isnan" @273
     256    "___isnanf" @274
     257    "___isnanl" @275
     258    "___isnormal" @276
     259    "___isnormalf" @277
     260    "___isnormall" @278
     261    "___istype" @279
     262    "___lazyimp_resolver" @280
     263    "___lazyimp_resolver2" @281
     264    "___lazyldr_libuni_resolver" @282
     265    "___lazyldr_uconv_resolver" @283
     266    "___libc_Back_fibDumpAll" @284
     267    "___libc_Back_fsDirChangeRoot" @285
     268    "___libc_Back_fsDirCreate" @286
     269    "___libc_Back_fsDirCurrentGet" @287
     270    "___libc_Back_fsDirCurrentSet" @288
     271    "___libc_Back_fsDirRemove" @289
     272    "___libc_Back_fsDriveDefaultGet" @290
     273    "___libc_Back_fsDriveDefaultSet" @291
     274    "___libc_Back_fsFileStat" @292
     275    "___libc_Back_fsFileStatFH" @293
     276    "___libc_Back_fsPathResolve" @294
     277    "___libc_Back_fsStat" @295
     278    "___libc_Back_fsStatFH" @296
     279    "___libc_Back_fsStats" @297
     280    "___libc_Back_fsSymlinkCreate" @298
     281    "___libc_Back_fsSymlinkRead" @299
     282    "___libc_Back_fsSymlinkStat" @300
     283    "___libc_Back_fsSync" @301
     284    "___libc_Back_ioFHToPath" @302
     285    "___libc_Back_ioFileOpen" @303
     286    "___libc_Back_ioFileSizeSet" @304
     287    "___libc_Back_ioSeek" @305
     288    "___libc_Back_ldrClose" @306
     289    "___libc_Back_ldrOpen" @307
     290    "___libc_Back_ldrSymbol" @308
     291    "___libc_Back_miscLoadAvg" @309
     292    "___libc_Back_mmanProtect" @310
     293    "___libc_Back_processGetEffGid" @311
     294    "___libc_Back_processGetEffUid" @312
     295    "___libc_Back_processGetGid" @313
     296    "___libc_Back_processGetUid" @314
     297    "___libc_Back_processSetGid" @315
     298    "___libc_Back_processSetGidAll" @316
     299    "___libc_Back_processSetUid" @317
     300    "___libc_Back_processSetUidAll" @318
     301    "___libc_Back_processWait" @319
     302    "___libc_Back_signalAction" @320
     303    "___libc_Back_signalInterrupt" @321
     304    "___libc_Back_signalMask" @322
     305    "___libc_Back_signalPending" @323
     306    "___libc_Back_signalQueue" @324
     307    "___libc_Back_signalRaise" @325
     308    "___libc_Back_signalSendPGrp" @326
     309    "___libc_Back_signalSendPid" @327
     310    "___libc_Back_signalStack" @328
     311    "___libc_Back_signalSuspend" @329
     312    "___libc_Back_signalTimer" @330
     313    "___libc_Back_signalWait" @331
     314    "___libc_Back_threadCleanup" @332
     315    "___libc_Back_threadEnd" @333
     316    "___libc_Back_threadInit" @334
     317    "___libc_Back_threadStartup" @335
     318    "___libc_FH" @336
     319    "___libc_FHAllocate" @337
     320    "___libc_FHClose" @338
     321    "___libc_FHEnsureHandles" @339
     322    "___libc_FHEx" @340
     323    "___libc_FHMoreHandles" @341
     324    "___libc_ForkDefaultModuleCallback" @342
     325    "___libc_ForkRegisterModule" @343
     326    "___libc_GLocaleCtypeDefault" @344
     327    "___libc_HasHighMem" @345
     328    "___libc_HeapEndVoting" @346
     329    "___libc_HeapGetResult" @347
     330    "___libc_HeapVote" @348
     331    "___libc_HimemDefaultAlloc" @349
     332    "___libc_HimemDefaultRelease" @350
     333    "___libc_LogAssert" @351
     334    "___libc_LogDumpHex" @352
     335    "___libc_LogEnter" @353
     336    "___libc_LogGroupInit" @354
     337    "___libc_LogInit" @355
     338    "___libc_LogLeave" @356
     339    "___libc_LogMsg" @357
     340    "___libc_LogRaw" @358
     341    "___libc_OS2ErrorPop" @359
     342    "___libc_OS2ErrorPush" @360
     343    "___libc_OS2ErrorSet" @361
     344    "___libc_PathRewrite" @362
     345    "___libc_PathRewriteAdd" @363
     346    "___libc_PathRewriteRemove" @364
     347    "___libc_SpmCheck" @365
     348    "___libc_StrictMemoryR" @366
     349    "___libc_StrictMemoryRW" @367
     350    "___libc_StrictStringR" @368
     351    "___libc_TLSAlloc" @369
     352    "___libc_TLSDestructor" @370
     353    "___libc_TLSFree" @371
     354    "___libc_TLSGet" @372
     355    "___libc_TLSGetDestructor" @373
     356    "___libc_TLSSet" @374
     357    "___libc_TcpipAllocFH43" @375
     358    "___libc_TcpipAllocFH44" @376
     359    "___libc_TcpipAllocFHEx43" @377
     360    "___libc_TcpipAllocFHEx44" @378
     361    "___libc_Tcpipbsdselect43" @379
     362    "___libc_Tcpipbsdselect44" @380
     363    "___libc_ThreadRegisterTermCallback" @381
     364    "___libc_Timebomb" @382
     365    "___libc_TranslateCodepage" @383
     366    "___log2" @384
     367    "___mempcpy" @385
     368    "___nsdefaultsrc" @386
     369    "___ovfl_delete" @387
     370    "___ovfl_get" @388
     371    "___ovfl_put" @389
     372    "___pipe" @390
     373    "___posix_spawn_file_actions_realloc" @391
     374    "___put_page" @392
     375    "___pw_match_entry" @393
     376    "___pw_parse_entry" @394
     377    "___pw_scan" @395
     378    "___read" @396
     379    "___read_kbd" @397
     380    "___rec_close" @398
     381    "___rec_delete" @399
     382    "___rec_dleaf" @400
     383    "___rec_fd" @401
     384    "___rec_fmap" @402
     385    "___rec_fpipe" @403
     386    "___rec_get" @404
     387    "___rec_iput" @405
     388    "___rec_open" @406
     389    "___rec_put" @407
     390    "___rec_ret" @408
     391    "___rec_search" @409
     392    "___rec_seq" @410
     393    "___rec_sync" @411
     394    "___rec_vmap" @412
     395    "___rec_vpipe" @413
     396    "___reclaim_buf" @414
     397    "___remove_zeros" @415
     398    "___select" @416
     399    "___settime" @417
     400    "___signbit" @418
     401    "___signbitf" @419
     402    "___signbitl" @420
     403    "___sigpause_bsd" @421
     404    "___small_atod" @422
     405    "___small_dtoa" @423
     406    "___smutex_request_internal" @424
     407    "___spawni" @425
     408    "___spawnve" @426
     409    "___split_page" @427
     410    "___stream_abort" @428
     411    "___strndup" @429
     412    "___strnlen" @430
     413    "___strverscmp" @431
     414    "___swchar" @432
     415    "___threadid" @433
     416    "___tolower" @434
     417    "___toupper" @435
     418    "___ttyname" @436
     419    "___ulimit" @437
     420    "___unwind2" @438
     421    "___utimes" @439
     422    "___wait" @440
     423    "___waitpid" @441
     424    "___write" @442
     425    "__abspath" @443
     426    "__assert" @444
     427    "__atfork_callback" @445
     428    "__beginthread" @446
     429    "__bi_add_bb" @447
     430    "__bi_cmp_bb" @448
     431    "__bi_cmp_pow2" @449
     432    "__bi_div_add_back" @450
     433    "__bi_div_estimate" @451
     434    "__bi_div_rem_bb" @452
     435    "__bi_div_rem_bw" @453
     436    "__bi_div_rem_pow2" @454
     437    "__bi_div_subtract" @455
     438    "__bi_fls" @456
     439    "__bi_hdiv_rem_b" @457
     440    "__bi_mul_bb" @458
     441    "__bi_mul_bw" @459
     442    "__bi_pow5" @460
     443    "__bi_set_b" @461
     444    "__bi_set_d" @462
     445    "__bi_set_w" @463
     446    "__bi_shl_b" @464
     447    "__bi_shl_w" @465
     448    "__bi_shr_b" @466
     449    "__bi_sub_mul_bw" @467
     450    "__bi_wdiv_rem_pow2" @468
     451    "__chdir2" @469
     452    "__chdrive" @470
     453    "__clear87" @471
     454    "__closestream" @472
     455    "__compute_dst_table" @473
     456    "__const_HALF" @474
     457    "__const_M_ONE" @475
     458    "__const_NAN" @476
     459    "__const_ONE" @477
     460    "__const_TWO" @478
     461    "__const_ZERO" @479
     462    "__control87" @480
     463    "__core" @481
     464    "__crlf" @482
     465    "__day" @483
     466    "__defext" @484
     467    "__dorand48" @485
     468    "__dt_free" @486
     469    "__dt_read" @487
     470    "__dt_sort" @488
     471    "__dt_split" @489
     472    "__ea_free" @490
     473    "__ea_get" @491
     474    "__ea_put" @492
     475    "__ea_remove" @493
     476    "__ea_set_errno" @494
     477    "__ea_write" @495
     478    "__ead_add" @496
     479    "__ead_clear" @497
     480    "__ead_copy" @498
     481    "__ead_count" @499
     482    "__ead_create" @500
     483    "__ead_delete" @501
     484    "__ead_destroy" @502
     485    "__ead_enum" @503
     486    "__ead_fea2list_size" @504
     487    "__ead_fea2list_to_fealist" @505
     488    "__ead_fealist_to_fea2list" @506
     489    "__ead_find" @507
     490    "__ead_get_fea2list" @508
     491    "__ead_get_flags" @509
     492    "__ead_get_name" @510
     493    "__ead_get_value" @511
     494    "__ead_make_index" @512
     495    "__ead_name_len" @513
     496    "__ead_read" @514
     497    "__ead_replace" @515
     498    "__ead_size_buffer" @516
     499    "__ead_sort" @517
     500    "__ead_use_fea2list" @518
     501    "__ead_value_size" @519
     502    "__ead_write" @520
     503    "__emx_getopt" @521
     504    "__emxload_connect" @522
     505    "__emxload_disconnect" @523
     506    "__emxload_do_connect" @524
     507    "__emxload_do_disconnect" @525
     508    "__emxload_do_receive" @526
     509    "__emxload_do_request" @527
     510    "__emxload_do_wait" @528
     511    "__emxload_env" @529
     512    "__emxload_list_get" @530
     513    "__emxload_list_start" @531
     514    "__emxload_prog" @532
     515    "__emxload_request" @533
     516    "__emxload_stop" @534
     517    "__emxload_this" @535
     518    "__emxload_unload" @536
     519    "__endbuf1" @537
     520    "__endthread" @538
     521    "__envargs" @539
     522    "__err" @540
     523    "__errno" @541
     524    "__errno_fun" @542
     525    "__execname" @543
     526    "__exit" @544
     527    "__exit_streams" @545
     528    "__fbuf" @546
     529    "__fcloseall" @547
     530    "__fflush_nolock" @548
     531    "__filesys" @549
     532    "__fill" @550
     533    "__flush" @551
     534    "__flushstream" @552
     535    "__fmutex_abort" @553
     536    "__fmutex_checked_close" @554
     537    "__fmutex_checked_create" @555
     538    "__fmutex_checked_create2" @556
     539    "__fmutex_checked_open" @557
     540    "__fmutex_close" @558
     541    "__fmutex_create" @559
     542    "__fmutex_create2" @560
     543    "__fmutex_dummy" @561
     544    "__fmutex_open" @562
     545    "__fnexplode" @563
     546    "__fnexplodefree" @564
     547    "__fngetdrive" @565
     548    "__fnisabs" @566
     549    "__fnisrel" @567
     550    "__fnlwr" @568
     551    "__fnlwr2" @569
     552    "__fnslashify" @570
     553    "__fpreset" @571
     554    "__fseek_hdr" @572
     555    "__fseek_nolock" @573
     556    "__fsetmode" @574
     557    "__fsopen" @575
     558    "__ftell_nolock" @576
     559    "__fullpath" @577
     560    "__fwrite_nolock" @578
     561    "__fxam" @579
     562    "__fxaml" @580
     563    "__getcwd1" @581
     564    "__getcwd2" @582
     565    "__getcwdux" @583
     566    "__getdcwd" @584
     567    "__getdrive" @585
     568    "__getext" @586
     569    "__getext2" @587
     570    "__getname" @588
     571    "__getpass1" @589
     572    "__getpass2" @590
     573    "__getprogname" @591
     574    "__gettid" @592
     575    "__getvol" @593
     576    "__gmt2loc" @594
     577    "__hcalloc" @595
     578    "__heap_walk" @596
     579    "__heapchk" @597
     580    "__heapmin" @598
     581    "__heapset" @599
     582    "__hinitheap" @600
     583    "__hmalloc" @601
     584    "__hrealloc" @602
     585    "__imphandle" @603
     586    "__init_streams" @604
     587    "__input" @605
     588    "__int86" @606
     589    "__isterm" @607
     590    "__lcalloc" @608
     591    "__libc_16to32" @609
     592    "__libc_32to16" @610
     593    "__libc_Back_exceptionHandler" @611
     594    "__libc_thunk1" @612
     595    "__linitheap" @613
     596    "__lmalloc" @614
     597    "__loc2gmt" @615
     598    "__lrealloc" @616
     599    "__makepath" @617
     600    "__memcount" @618
     601    "__memdif" @619
     602    "__memrchr" @620
     603    "__memswap" @621
     604    "__mfclose" @622
     605    "__mfopen" @623
     606    "__mheap" @624
     607    "__mktime" @625
     608    "__month_day_leap" @626
     609    "__month_day_non_leap" @627
     610    "__msize" @628
     611    "__newstream" @629
     612    "__nsdbtaddsrc" @630
     613    "__nsdbtput" @631
     614    "__nsdispatch" @632
     615    "__openstream" @633
     616    "__os2_bad" @634
     617    "__output" @635
     618    "__path" @636
     619    "__read_kbd" @637
     620    "__realrealpath" @638
     621    "__remext" @639
     622    "__response" @640
     623    "__rfnlwr" @641
     624    "__rmtmp" @642
     625    "__scrsize" @643
     626    "__searchenv" @644
     627    "__seek_hdr" @645
     628    "__sfnlwr" @646
     629    "__signal_os2" @647
     630    "__signal_sysv" @648
     631    "__sleep2" @649
     632    "__splitargs" @650
     633    "__splitpath" @651
     634    "__status87" @652
     635    "__std_abort" @653
     636    "__std_abs" @654
     637    "__std_access" @655
     638    "__std_acos" @656
     639    "__std_acosl" @657
     640    "__std_alarm" @658
     641    "__std_asctime" @659
     642    "__std_asctime_r" @660
     643    "__std_asin" @661
     644    "__std_asinl" @662
     645    "__std_atan" @663
     646    "__std_atan2" @664
     647    "__std_atan2l" @665
     648    "__std_atanl" @666
     649    "__std_atexit" @667
     650    "__std_atof" @668
     651    "__std_atofl" @669
     652    "__std_atoi" @670
     653    "__std_atol" @671
     654    "__std_atoll" @672
     655    "__std_basename" @673
     656    "__std_bcmp" @674
     657    "__std_bcopy" @675
     658    "__std_brk" @676
     659    "__std_bsd_signal" @677
     660    "__std_bsearch" @678
     661    "__std_bzero" @679
     662    "__std_calloc" @680
     663    "__std_canonicalize_file_name" @681
     664    "__std_cbrt" @682
     665    "__std_cbrtl" @683
     666    "__std_ceil" @684
     667    "__std_ceill" @685
     668    "__std_cfgetispeed" @686
     669    "__std_cfgetospeed" @687
     670    "__std_cfsetispeed" @688
     671    "__std_cfsetospeed" @689
     672    "__std_cfsetspeed" @690
     673    "__std_chdir" @691
     674    "__std_chmod" @692
     675    "__std_chown" @693
     676    "__std_chroot" @694
     677    "__std_chsize" @695
     678    "__std_clearerr" @696
     679    "__std_clock" @697
     680    "__std_close" @698
     681    "__std_closedir" @699
     682    "__std_copysign" @700
     683    "__std_copysignf" @701
     684    "__std_copysignl" @702
     685    "__std_cos" @703
     686    "__std_cosh" @704
     687    "__std_coshl" @705
     688    "__std_cosl" @706
     689    "__std_creat" @707
     690    "__std_ctime" @708
     691    "__std_ctime_r" @709
     692    "__std_cuserid" @710
     693    "__std_difftime" @711
     694    "__std_dirname" @712
     695    "__std_div" @713
     696    "__std_dlclose" @714
     697    "__std_dlerror" @715
     698    "__std_dlopen" @716
     699    "__std_dlsym" @717
     700    "__std_drand48" @718
     701    "__std_dup" @719
     702    "__std_dup2" @720
     703    "__std_eaccess" @721
     704    "__std_endpwent" @722
     705    "__std_eof" @723
     706    "__std_erand48" @724
     707    "__std_execl" @725
     708    "__std_execle" @726
     709    "__std_execlp" @727
     710    "__std_execlpe" @728
     711    "__std_execv" @729
     712    "__std_execve" @730
     713    "__std_execvp" @731
     714    "__std_execvpe" @732
     715    "__std_exit" @733
     716    "__std_exp" @734
     717    "__std_expand" @735
     718    "__std_expl" @736
     719    "__std_fabs" @737
     720    "__std_fabsl" @738
     721    "__std_fchown" @739
     722    "__std_fclose" @740
     723    "__std_fcntl" @741
     724    "__std_fdopen" @742
     725    "__std_feof" @743
     726    "__std_ferror" @744
     727    "__std_fflush" @745
     728    "__std_ffs" @746
     729    "__std_fgetc" @747
     730    "__std_fgetchar" @748
     731    "__std_fgetpos" @749
     732    "__std_fgets" @750
     733    "__std_filelength" @751
     734    "__std_fileno" @752
     735    "__std_flock" @753
     736    "__std_floor" @754
     737    "__std_floorl" @755
     738    "__std_flushall" @756
     739    "__std_fmod" @757
     740    "__std_fmodl" @758
     741    "__std_fnmatch" @759
     742    "__std_fopen" @760
     743    "__std_fork" @761
     744    "__std_fpathconf" @762
     745    "__std_fprintf" @763
     746    "__std_fputc" @764
     747    "__std_fputchar" @765
     748    "__std_fputs" @766
     749    "__std_fread" @767
     750    "__std_free" @768
     751    "__std_freopen" @769
     752    "__std_frexp" @770
     753    "__std_frexpl" @771
     754    "__std_fscanf" @772
     755    "__std_fseek" @773
     756    "__std_fseeko" @774
     757    "__std_fsetpos" @775
     758    "__std_fstat" @776
     759    "__std_fstatfs" @777
     760    "__std_fstatvfs" @778
     761    "__std_fsync" @779
     762    "__std_ftell" @780
     763    "__std_ftello" @781
     764    "__std_ftime" @782
     765    "__std_ftruncate" @783
     766    "__std_ftw" @784
     767    "__std_fwrite" @785
     768    "__std_gcvt" @786
     769    "__std_getchar" @787
     770    "__std_getcwd" @788
     771    "__std_getdtablesize" @789
     772    "__std_getegid" @790
     773    "__std_getenv" @791
     774    "__std_geteuid" @792
     775    "__std_getfsstat" @793
     776    "__std_getgid" @794
     777    "__std_getgrnam" @795
     778    "__std_getgroups" @796
     779    "__std_getitimer" @797
     780    "__std_getloadavg" @798
     781    "__std_getlogin" @799
     782    "__std_getopt" @800
     783    "__std_getopt_long" @801
     784    "__std_getopt_long_only" @802
     785    "__std_getpagesize" @803
     786    "__std_getpass" @804
     787    "__std_getpgrp" @805
     788    "__std_getpid" @806
     789    "__std_getppid" @807
     790    "__std_getpwent" @808
     791    "__std_getrlimit" @809
     792    "__std_gets" @810
     793    "__std_gettimeofday" @811
     794    "__std_getuid" @812
     795    "__std_getw" @813
     796    "__std_getwd" @814
     797    "__std_glob" @815
     798    "__std_globfree" @816
     799    "__std_gmtime" @817
     800    "__std_gmtime_r" @818
     801    "__std_hcreate" @819
     802    "__std_hdestroy" @820
     803    "__std_hsearch" @821
     804    "__std_hypot" @822
     805    "__std_hypotl" @823
     806    "__std_imaxabs" @824
     807    "__std_imaxdiv" @825
     808    "__std_index" @826
     809    "__std_insque" @827
     810    "__std_ioctl" @828
     811    "__std_isatty" @829
     812    "__std_jrand48" @830
     813    "__std_kill" @831
     814    "__std_killpg" @832
     815    "__std_labs" @833
     816    "__std_lchown" @834
     817    "__std_lcong48" @835
     818    "__std_ldexp" @836
     819    "__std_ldexpl" @837
     820    "__std_ldiv" @838
     821    "__std_lfind" @839
     822    "__std_link" @840
     823    "__std_lltoa" @841
     824    "__std_localeconv" @842
     825    "__std_localtime" @843
     826    "__std_localtime_r" @844
     827    "__std_lockf" @845
     828    "__std_log" @846
     829    "__std_log10" @847
     830    "__std_log10l" @848
     831    "__std_logl" @849
     832    "__std_longjmp" @850
     833    "__std_lrand48" @851
     834    "__std_lsearch" @852
     835    "__std_lseek" @853
     836    "__std_lstat" @854
     837    "__std_ltoa" @855
     838    "__std_malloc" @856
     839    "__std_mblen" @857
     840    "__std_mbstowcs" @858
     841    "__std_mbtowc" @859
     842    "__std_memalign" @860
     843    "__std_memccpy" @861
     844    "__std_memchr" @862
     845    "__std_memcmp" @863
     846    "__std_memcpy" @864
     847    "__std_memicmp" @865
     848    "__std_memmove" @866
     849    "__std_memset" @867
     850    "__std_mkdir" @868
     851    "__std_mknod" @869
     852    "__std_mkstemp" @870
     853    "__std_mktemp" @871
     854    "__std_mktime" @872
     855    "__std_modf" @873
     856    "__std_modfl" @874
     857    "__std_mprotect" @875
     858    "__std_mrand48" @876
     859    "__std_nextafter" @877
     860    "__std_nextafterf" @878
     861    "__std_nextafterl" @879
     862    "__std_nrand48" @880
     863    "__std_open" @881
     864    "__std_opendir" @882
     865    "__std_pathconf" @883
     866    "__std_pause" @884
     867    "__std_pclose" @885
     868    "__std_perror" @886
     869    "__std_pipe" @887
     870    "__std_popen" @888
     871    "__std_posix_memalign" @889
     872    "__std_pow" @890
     873    "__std_powl" @891
     874    "__std_printf" @892
     875    "__std_psignal" @893
     876    "__std_putchar" @894
     877    "__std_putenv" @895
     878    "__std_puts" @896
     879    "__std_putw" @897
     880    "__std_qsort" @898
     881    "__std_qsort_r" @899
     882    "__std_raise" @900
     883    "__std_rand" @901
     884    "__std_read" @902
     885    "__std_readdir" @903
     886    "__std_readdir_r" @904
     887    "__std_readlink" @905
     888    "__std_readv" @906
     889    "__std_realloc" @907
     890    "__std_realpath" @908
     891    "__std_remove" @909
     892    "__std_remque" @910
     893    "__std_rename" @911
     894    "__std_rewind" @912
     895    "__std_rewinddir" @913
     896    "__std_rindex" @914
     897    "__std_rint" @915
     898    "__std_rintl" @916
     899    "__std_rmdir" @917
     900    "__std_sbrk" @918
     901    "__std_scanf" @919
     902    "__std_seed48" @920
     903    "__std_seekdir" @921
     904    "__std_select" @922
     905    "__std_setbuf" @923
     906    "__std_setbuffer" @924
     907    "__std_setegid" @925
     908    "__std_setenv" @926
     909    "__std_seteuid" @927
     910    "__std_setgid" @928
     911    "__std_setgroups" @929
     912    "__std_setitimer" @930
     913    "__std_setjmp" @931
     914    "__std_setlocale" @932
     915    "__std_setmode" @933
     916    "__std_setpassent" @934
     917    "__std_setpgid" @935
     918    "__std_setpwent" @936
     919    "__std_setregid" @937
     920    "__std_setresgid" @938
     921    "__std_setresuid" @939
     922    "__std_setreuid" @940
     923    "__std_setrgid" @941
     924    "__std_setrlimit" @942
     925    "__std_setruid" @943
     926    "__std_setsid" @944
     927    "__std_settimeofday" @945
     928    "__std_setuid" @946
     929    "__std_setvbuf" @947
     930    "__std_sigaction" @948
     931    "__std_sigaddset" @949
     932    "__std_sigaltstack" @950
     933    "__std_sigblock" @951
     934    "__std_sigdelset" @952
     935    "__std_sigemptyset" @953
     936    "__std_sigfillset" @954
     937    "__std_sighold" @955
     938    "__std_sigignore" @956
     939    "__std_siginterrupt" @957
     940    "__std_sigismember" @958
     941    "__std_siglongjmp" @959
     942    "__std_signal" @960
     943    "__std_sigpause" @961
     944    "__std_sigpending" @962
     945    "__std_sigprocmask" @963
     946    "__std_sigqueue" @964
     947    "__std_sigrelse" @965
     948    "__std_sigset" @966
     949    "__std_sigsetjmp" @967
     950    "__std_sigsetmask" @968
     951    "__std_sigsuspend" @969
     952    "__std_sigtimedwait" @970
     953    "__std_sigvec" @971
     954    "__std_sigwait" @972
     955    "__std_sigwaitinfo" @973
     956    "__std_sin" @974
     957    "__std_sinh" @975
     958    "__std_sinhl" @976
     959    "__std_sinl" @977
     960    "__std_sleep" @978
     961    "__std_snprintf" @979
     962    "__std_sopen" @980
     963    "__std_spawnl" @981
     964    "__std_spawnle" @982
     965    "__std_spawnlp" @983
     966    "__std_spawnlpe" @984
     967    "__std_spawnv" @985
     968    "__std_spawnve" @986
     969    "__std_spawnvp" @987
     970    "__std_spawnvpe" @988
     971    "__std_sprintf" @989
     972    "__std_sqrt" @990
     973    "__std_sqrtl" @991
     974    "__std_srand" @992
     975    "__std_srand48" @993
     976    "__std_sscanf" @994
     977    "__std_stat" @995
     978    "__std_statfs" @996
     979    "__std_statvfs" @997
     980    "__std_strcat" @998
     981    "__std_strchr" @999
     982    "__std_strcmp" @1000
     983    "__std_strcoll" @1001
     984    "__std_strcpy" @1002
     985    "__std_strcspn" @1003
     986    "__std_strdup" @1004
     987    "__std_strerror" @1005
     988    "__std_strerror_r" @1006
     989    "__std_strftime" @1007
     990    "__std_stricmp" @1008
     991    "__std_strlen" @1009
     992    "__std_strlwr" @1010
     993    "__std_strncat" @1011
     994    "__std_strncmp" @1012
     995    "__std_strncpy" @1013
     996    "__std_strnicmp" @1014
     997    "__std_strnset" @1015
     998    "__std_strpbrk" @1016
     999    "__std_strptime" @1017
     1000    "__std_strrchr" @1018
     1001    "__std_strrev" @1019
     1002    "__std_strset" @1020
     1003    "__std_strspn" @1021
     1004    "__std_strstr" @1022
     1005    "__std_strtod" @1023
     1006    "__std_strtof" @1024
     1007    "__std_strtoimax" @1025
     1008    "__std_strtok" @1026
     1009    "__std_strtok_r" @1027
     1010    "__std_strtol" @1028
     1011    "__std_strtold" @1029
     1012    "__std_strtoll" @1030
     1013    "__std_strtoul" @1031
     1014    "__std_strtoull" @1032
     1015    "__std_strtoumax" @1033
     1016    "__std_strupr" @1034
     1017    "__std_strxfrm" @1035
     1018    "__std_swab" @1036
     1019    "__std_symlink" @1037
     1020    "__std_sync" @1038
     1021    "__std_sys_errlist" @1039
     1022    "__std_sys_nerr" @1040
     1023    "__std_sysconf" @1041
     1024    "__std_system" @1042
     1025    "__std_tan" @1043
     1026    "__std_tanh" @1044
     1027    "__std_tanhl" @1045
     1028    "__std_tanl" @1046
     1029    "__std_tcdrain" @1047
     1030    "__std_tcflow" @1048
     1031    "__std_tcflush" @1049
     1032    "__std_tcgetattr" @1050
     1033    "__std_tcgetpgrp" @1051
     1034    "__std_tcsendbreak" @1052
     1035    "__std_tcsetattr" @1053
     1036    "__std_tcsetpgrp" @1054
     1037    "__std_tdelete" @1055
     1038    "__std_tell" @1056
     1039    "__std_telldir" @1057
     1040    "__std_tempnam" @1058
     1041    "__std_tfind" @1059
     1042    "__std_time" @1060
     1043    "__std_times" @1061
     1044    "__std_tmpfile" @1062
     1045    "__std_tmpnam" @1063
     1046    "__std_trunc" @1064
     1047    "__std_truncate" @1065
     1048    "__std_truncl" @1066
     1049    "__std_tsearch" @1067
     1050    "__std_ttyname" @1068
     1051    "__std_twalk" @1069
     1052    "__std_tzset" @1070
     1053    "__std_ualarm" @1071
     1054    "__std_ulimit" @1072
     1055    "__std_ulltoa" @1073
     1056    "__std_ultoa" @1074
     1057    "__std_umask" @1075
     1058    "__std_uname" @1076
     1059    "__std_ungetc" @1077
     1060    "__std_unlink" @1078
     1061    "__std_unsetenv" @1079
     1062    "__std_usleep" @1080
     1063    "__std_utime" @1081
     1064    "__std_utimes" @1082
     1065    "__std_valloc" @1083
     1066    "__std_vfprintf" @1084
     1067    "__std_vfscanf" @1085
     1068    "__std_vprintf" @1086
     1069    "__std_vscanf" @1087
     1070    "__std_vsnprintf" @1088
     1071    "__std_vsprintf" @1089
     1072    "__std_vsscanf" @1090
     1073    "__std_wait" @1091
     1074    "__std_wait3" @1092
     1075    "__std_wait4" @1093
     1076    "__std_waitid" @1094
     1077    "__std_waitpid" @1095
     1078    "__std_wcstombs" @1096
     1079    "__std_wctomb" @1097
     1080    "__std_write" @1098
     1081    "__std_writev" @1099
     1082    "__stream_read" @1100
     1083    "__stream_write" @1101
     1084    "__strncpy" @1102
     1085    "__swchar" @1103
     1086    "__sys_dump_heap_objs" @1104
     1087    "__tcalloc" @1105
     1088    "__tfree" @1106
     1089    "__theapmin" @1107
     1090    "__threadstore" @1108
     1091    "__tmalloc" @1109
     1092    "__tmpbuf1" @1110
     1093    "__tmpidx_lock" @1111
     1094    "__tmpidx_unlock" @1112
     1095    "__tmpidxnam" @1113
     1096    "__trealloc" @1114
     1097    "__trslash" @1115
     1098    "__uaddmem" @1116
     1099    "__ucalloc" @1117
     1100    "__uclose" @1118
     1101    "__ucreate" @1119
     1102    "__ucreate2" @1120
     1103    "__udefault" @1121
     1104    "__udestroy" @1122
     1105    "__uflags" @1123
     1106    "__uheap_type" @1124
     1107    "__uheap_walk" @1125
     1108    "__uheap_walk2" @1126
     1109    "__uheapchk" @1127
     1110    "__uheapmin" @1128
     1111    "__uheapset" @1129
     1112    "__uldiv" @1130
     1113    "__um_addmem_nolock" @1131
     1114    "__um_alloc_no_lock" @1132
     1115    "__um_crumb_free_maybe_lock" @1133
     1116    "__um_default_alloc" @1134
     1117    "__um_default_expand" @1135
     1118    "__um_default_release" @1136
     1119    "__um_default_shrink" @1137
     1120    "__um_find_bucket" @1138
     1121    "__um_free_maybe_lock" @1139
     1122    "__um_init_default_regular_heap" @1140
     1123    "__um_init_default_tiled_heap" @1141
     1124    "__um_lump_alloc" @1142
     1125    "__um_lump_coalesce_free" @1143
     1126    "__um_lump_free_maybe_lock" @1144
     1127    "__um_lump_link_heap" @1145
     1128    "__um_lump_make_free" @1146
     1129    "__um_lump_unlink_bucket" @1147
     1130    "__um_lump_unlink_heap" @1148
     1131    "__um_realloc" @1149
     1132    "__um_seg_addmem" @1150
     1133    "__um_seg_setmem" @1151
     1134    "__um_walk_error" @1152
     1135    "__um_walk_no_lock" @1153
     1136    "__umalloc" @1154
     1137    "__ungetc_nolock" @1155
     1138    "__uopen" @1156
     1139    "__ustats" @1157
     1140    "__utcalloc" @1158
     1141    "__utdefault" @1159
     1142    "__utmalloc" @1160
     1143    "__vsopen" @1161
     1144    "__warn" @1162
     1145    "__wildcard" @1163
     1146    "__year_day" @1164
     1147    "_argz_delete" @1165
     1148    "_catclose" @1166
     1149    "_catgets" @1167
     1150    "_catopen" @1168
     1151    "_dbm_clearerr" @1169
     1152    "_dbm_close" @1170
     1153    "_dbm_delete" @1171
     1154    "_dbm_dirfno" @1172
     1155    "_dbm_error" @1173
     1156    "_dbm_fetch" @1174
     1157    "_dbm_firstkey" @1175
     1158    "_dbm_nextkey" @1176
     1159    "_dbm_open" @1177
     1160    "_dbm_store" @1178
     1161    "_dbopen" @1179
     1162    "_endgrent" @1180
     1163    "_endnetgrent" @1181
     1164    "_endusershell" @1182
     1165    "_err_set_exit" @1183
     1166    "_err_set_file" @1184
     1167    "_errc" @1185
     1168    "_errx" @1186
     1169    "_getgrent" @1187
     1170    "_getgrent_r" @1188
     1171    "_getgrgid" @1189
     1172    "_getgrgid_r" @1190
     1173    "_getgrnam_r" @1191
     1174    "_getgrouplist" @1192
     1175    "_getmntinfo" @1193
     1176    "_getnetgrent" @1194
     1177    "_getpwent_r" @1195
     1178    "_getpwnam" @1196
     1179    "_getpwnam_r" @1197
     1180    "_getpwuid" @1198
     1181    "_getpwuid_r" @1199
     1182    "_getusershell" @1200
     1183    "_heapsort" @1201
     1184    "_initgroups" @1202
     1185    "_initstate" @1203
     1186    "_innetgr" @1204
     1187    "_isalnum" @1205
     1188    "_isalpha" @1206
     1189    "_isascii" @1207
     1190    "_isblank" @1208
     1191    "_iscntrl" @1209
     1192    "_isdigit" @1210
     1193    "_isgraph" @1211
     1194    "_ishexnumber" @1212
     1195    "_islower" @1213
     1196    "_isnumber" @1214
     1197    "_isprint" @1215
     1198    "_ispunct" @1216
     1199    "_isspace" @1217
     1200    "_isupper" @1218
     1201    "_isxdigit" @1219
     1202    "_lchmod" @1220
     1203    "_mergesort" @1221
     1204    "_mpool_close" @1222
     1205    "_mpool_filter" @1223
     1206    "_mpool_get" @1224
     1207    "_mpool_new" @1225
     1208    "_mpool_open" @1226
     1209    "_mpool_put" @1227
     1210    "_mpool_sync" @1228
     1211    "_posix_spawn" @1229
     1212    "_posix_spawn_file_actions_addclose" @1230
     1213    "_posix_spawn_file_actions_adddup2" @1231
     1214    "_posix_spawn_file_actions_addopen" @1232
     1215    "_posix_spawn_file_actions_destroy" @1233
     1216    "_posix_spawn_file_actions_init" @1234
     1217    "_posix_spawnattr_destroy" @1235
     1218    "_posix_spawnattr_getflags" @1236
     1219    "_posix_spawnattr_getpgroup" @1237
     1220    "_posix_spawnattr_getschedparam" @1238
     1221    "_posix_spawnattr_getschedpolicy" @1239
     1222    "_posix_spawnattr_getsigdefault" @1240
     1223    "_posix_spawnattr_getsigmask" @1241
     1224    "_posix_spawnattr_init" @1242
     1225    "_posix_spawnattr_setflags" @1243
     1226    "_posix_spawnattr_setpgroup" @1244
     1227    "_posix_spawnattr_setschedparam" @1245
     1228    "_posix_spawnattr_setschedpolicy" @1246
     1229    "_posix_spawnattr_setsigdefault" @1247
     1230    "_posix_spawnattr_setsigmask" @1248
     1231    "_posix_spawnp" @1249
     1232    "_warnx" @1250
     1233    "_radixsort" @1251
     1234    "_random" @1252
     1235    "_reallocf" @1253
     1236    "_regcomp" @1254
     1237    "_regerror" @1255
     1238    "_regexec" @1256
     1239    "_regfree" @1257
     1240    "_setgrent" @1258
     1241    "_setgroupent" @1259
     1242    "_setnetgrent" @1260
     1243    "_setprogname" @1261
     1244    "_setstate" @1262
     1245    "_setusershell" @1263
     1246    "_sl_add" @1264
     1247    "_sl_find" @1265
     1248    "_sl_free" @1266
     1249    "_sl_init" @1267
     1250    "_sradixsort" @1268
     1251    "_srandom" @1269
     1252    "_srandomdev" @1270
     1253    "_stpcpy" @1271
     1254    "_strcasestr" @1272
     1255    "_strlcat" @1273
     1256    "_strlcpy" @1274
     1257    "_strmode" @1275
     1258    "_strnstr" @1276
     1259    "_strsep" @1277
     1260    "_strsignal" @1278
     1261    "_sys_nsig" @1279
     1262    "_sys_siglist" @1280
     1263    "_sys_signame" @1281
     1264    "_toascii" @1282
     1265    "_tolower" @1283
     1266    "_toupper" @1284
     1267    "_verr" @1285
     1268    "_verrc" @1286
     1269    "_verrx" @1287
     1270    "_vwarn" @1288
     1271    "_vwarnc" @1289
     1272    "_vwarnx" @1290
     1273    "_warnc" @1291
     1274    ; new stuff
  • trunk/src/emx/src/lib/libc.smak

    • Property cvs2svn:cvs-rev changed from 1.53 to 1.54
    r1660 r1661  
    7474        $.omf/src/lib/sys/__initdll.obj \
    7575        $.omf/src/lib/malloc/_heapvoting.obj \
     76        $.omf/src/lib/sys/FastInfoBlocks.obj \
    7677        $.omf/src/lib/process/fmutex.obj \
    7778        $.omf/src/lib/sys/DosCreateEventSemEx.obj \
  • trunk/src/emx/src/lib/malloc/ucreate2.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r1660 r1661  
    8080
    8181  /* Initialize the mutex semaphore. */
    82   if (_fmutex_create (&h->fsem, (type & _HEAP_SHARED) ? _FMC_SHARED : 0) != 0)
     82  if (_fmutex_create2 (&h->fsem, (type & _HEAP_SHARED) ? _FMC_SHARED : 0, "LIBC Heap") != 0)
    8383    return NULL;
    8484
  • trunk/src/emx/src/lib/process/fmutex.c

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r1660 r1661  
    55#define INCL_DOSPROCESS
    66#define INCL_DOSERRORS
     7#define INCL_DOSEXCEPTIONS
    78#define INCL_FSMACROS
    89#define INCL_EXAPIS
    910#include <os2.h>
    1011#include <stdlib.h>
     12#include <string.h>
    1113#include <sys/builtin.h>
    1214#include <sys/fmutex.h>
    1315#include <sys/smutex.h>
     16#include <InnoTekLIBC/FastInfoBlocks.h>
    1417#define __LIBC_LOG_GROUP __LIBC_LOG_GRP_MUTEX
    1518#include <InnoTekLIBC/logstrict.h>
    1619
     20/*******************************************************************************
     21*   Internal Functions                                                         *
     22*******************************************************************************/
     23static void __fmutex_deadlock(_fmutex *pSem, const char *pszMsg);
     24
    1725
    1826/* These functions are available even in single-thread libraries. */
     
    2230{
    2331    LIBCLOG_ENTER("sem=%p flags=%#x\n", (void *)sem, flags);
     32    unsigned rc = _fmutex_create2(sem, flags, NULL);
     33    LIBCLOG_RETURN_UINT(rc);
     34}
     35
     36
     37unsigned _fmutex_create2(_fmutex *sem, unsigned flags, const char *pszDesc)
     38{
     39    LIBCLOG_ENTER("sem=%p flags=%#x pszDesc=%s\n", (void *)sem, flags, pszDesc);
    2440    unsigned rc;
    2541
     42    sem->hev        = 0;
     43    sem->Owner      = 0;
    2644    sem->fs         = _FMS_AVAILABLE;
    2745    sem->flags      = flags;
    2846    sem->padding[0] = 'f';
    29     sem->padding[1] = 'm';
     47    sem->padding[0] = 'm';
     48    sem->pszDesc    = pszDesc;
    3049    rc = DosCreateEventSemEx(NULL, (PHEV)&sem->hev,
    3150                             (flags & _FMC_SHARED) ? DC_SEM_SHARED : 0,
    3251                             FALSE);
    33 
    3452    LIBCLOG_RETURN_UINT(rc);
    3553}
     
    3856unsigned _fmutex_open(_fmutex *sem)
    3957{
    40     LIBCLOG_ENTER("sem=%p\n", (void *)sem);
     58    LIBCLOG_ENTER("sem=%p{.pszDesc=%s}\n", (void *)sem, sem->pszDesc);
    4159    unsigned rc = DosOpenEventSemEx(NULL, (PHEV)&sem->hev);
    4260    LIBCLOG_RETURN_UINT(rc);
     
    4664unsigned _fmutex_close(_fmutex *sem)
    4765{
    48     LIBCLOG_ENTER("sem=%p\n", (void *)sem);
     66    LIBCLOG_ENTER("sem=%p{.pszDesc=%s}\n", (void *)sem, sem->pszDesc);
    4967    unsigned rc = DosCloseEventSemEx(sem->hev);
    5068    LIBCLOG_RETURN_UINT(rc);
     
    5472unsigned __fmutex_request_internal(_fmutex *sem, unsigned flags, signed char fs)
    5573{
    56     LIBCLOG_ENTER("sem=%p flags=%#x fs=%#x\n", (void *)sem, flags, (int)fs);
     74    LIBCLOG_ENTER("sem=%p{.pszDesc=%s} flags=%#x fs=%#x\n", (void *)sem, sem->pszDesc, flags, (int)fs);
    5775    int     rc;
    58     PTIB    pTib;
    59     PPIB    pPib;
    6076
    6177    if (fs == _FMS_UNINIT)
     
    7086        {
    7187            if (__cxchg(&sem->fs, _FMS_OWNED_HARD) == _FMS_AVAILABLE)
     88            {
     89                __atomic_xchg(&sem->Owner, fibGetTidPid());
    7290                LIBCLOG_RETURN_UINT(0);
     91            }
    7392        }
    7493        LIBCLOG_RETURN_UINT(ERROR_MUTEX_OWNED);
     
    85104            LIBCLOG_RETURN_UINT(rc);
    86105        if (__cxchg(&sem->fs, _FMS_OWNED_HARD) == _FMS_AVAILABLE)
     106        {
     107            __atomic_xchg(&sem->Owner, fibGetTidPid());
    87108            LIBCLOG_RETURN_UINT(0);
     109        }
     110        if (sem->Owner == fibGetTidPid())
     111        {
     112            __fmutex_deadlock(sem, "Recursive mutex!");
     113            LIBCLOG_RETURN_UINT(-1);
     114        }
     115
    88116        FS_SAVE_LOAD();
    89117
    90         do
     118        for (;;)
    91119        {
    92120            rc = DosWaitEventSem(sem->hev, sem->flags & _FMC_SHARED ? SEM_INDEFINITE_WAIT : 3000);
     
    101129                if (!(flags & _FMR_IGNINT))
    102130                    break;
    103                 DosGetInfoBlocks(&pTib, &pPib);
    104                 if (pPib->pib_flstatus & (0x40/*dying*/ | 0x04/*exiting all*/ | 0x02/*Exiting Thread 1*/ | 0x01/* ExitList */))
     131                if (fibIsInExit())
    105132                    break;
    106133                rc = ERROR_TIMEOUT;
    107134            }
    108             if (rc == ERROR_TIMEOUT && !(sem->flags & _FMC_SHARED))
    109             {
    110                 /*
    111                  * Deadlock detection - if this is the only thread of the
    112                  * process we should just kill our selves.
    113                  * ASSUME thread ids are reused and upper thread limit or 4k.
    114                  */
    115                 int iThread;
    116                 DosGetInfoBlocks(&pTib, &pPib);
    117                 for (iThread = 1; iThread < 4096; iThread++)
    118                 {
    119                     if (iThread != pTib->tib_ptib2->tib2_ultid
    120                         && !DosVerifyPidTid(pPib->pib_ulpid, iThread))
    121                         break;
    122                 }
    123                 if (iThread >= 4096)
    124                 { /* No other threads! */
    125                     ULONG ul;
    126                     DosWrite((HFILE)2/*stderr*/, "\r\n!!!deadlock!!!\r\r", 18, &ul);
    127                     __asm__ __volatile__("movl $0xdead10cc, %%eax; movl $0xdead10cc, %%edx; movl %0, %%ecx; int $3" : : "m" (sem) : "%eax", "%edx", "%ecx");
    128                     rc = ERROR_SEM_OWNER_DIED;
    129                     break;
    130                 }
    131             }
    132         } while (rc == ERROR_TIMEOUT);
     135            if (rc != ERROR_TIMEOUT)
     136                break;
     137            /*
     138             * Deadlock detection - check if owner is around.
     139             */
     140            unsigned Owner = sem->Owner;
     141            if (!Owner)
     142                break;
     143            rc = DosVerifyPidTid(Owner & 0xffff, Owner >> 16);
     144            if (rc)
     145            {
     146                __fmutex_deadlock(sem, "Owner died!");
     147                rc = ERROR_SEM_OWNER_DIED;
     148                break;
     149            }
     150        }
    133151        FS_RESTORE();
    134152        if (rc != 0)
     
    137155}
    138156
     157unsigned __fmutex_request_internal_must_complete(_fmutex *sem, unsigned flags)
     158{
     159    LIBCLOG_ENTER("sem=%p{.pszDesc=%s} flags=%#x\n", (void *)sem, sem->pszDesc, flags);
     160    int     rc;
     161    ULONG   ulNesting = 0;
     162    FS_VAR();
     163
     164    if (sem->fs == _FMS_UNINIT)
     165    {
     166        LIBC_ASSERTM_FAILED("Invalid handle, fs == _FMS_UNINIT\n");
     167        LIBCLOG_RETURN_UINT(ERROR_INVALID_HANDLE);
     168    }
     169
     170    FS_SAVE_LOAD();
     171    DosEnterMustComplete(&ulNesting);
     172    if (flags & _FMR_NOWAIT)
     173    {
     174        if (__cxchg(&sem->fs, _FMS_OWNED_HARD) == _FMS_AVAILABLE)
     175        {
     176            __atomic_xchg(&sem->Owner, fibGetTidPid());
     177            FS_RESTORE();
     178            LIBCLOG_RETURN_UINT(0);
     179        }
     180        DosExitMustComplete(&ulNesting);
     181        FS_RESTORE();
     182        LIBCLOG_RETURN_UINT(ERROR_MUTEX_OWNED);
     183    }
     184
     185    for (;;)
     186    {
     187        ULONG ulCount;
     188        rc = DosResetEventSem(sem->hev, &ulCount);
     189        if (rc != 0 && rc != ERROR_ALREADY_RESET)
     190        {
     191            DosExitMustComplete(&ulNesting);
     192            FS_RESTORE();
     193            LIBCLOG_RETURN_UINT(rc);
     194        }
     195        if (__cxchg(&sem->fs, _FMS_OWNED_HARD) == _FMS_AVAILABLE)
     196        {
     197            __atomic_xchg(&sem->Owner, fibGetTidPid());
     198            FS_RESTORE();
     199            LIBCLOG_RETURN_UINT(0);
     200        }
     201        if (sem->Owner == fibGetTidPid())
     202        {
     203            DosExitMustComplete(&ulNesting);
     204            __fmutex_deadlock(sem, "Recursive mutex!");
     205            FS_RESTORE();
     206            LIBCLOG_RETURN_UINT(-1);
     207        }
     208
     209        for (;;)
     210        {
     211            DosExitMustComplete(&ulNesting);
     212            rc = DosWaitEventSem(sem->hev, sem->flags & _FMC_SHARED ? SEM_INDEFINITE_WAIT : 3000);
     213            DosEnterMustComplete(&ulNesting);
     214            if (rc == ERROR_INTERRUPT)
     215            {
     216                /*
     217                 * An interrupt occured, this might be a bug in the wait, or
     218                 * more likely someone is killing us. If we're dying/exiting or
     219                 * something along those lines, we return to the caller no matter
     220                 * what flags it specified.
     221                 */
     222                if (!(flags & _FMR_IGNINT))
     223                    break;
     224                if (fibIsInExit())
     225                    break;
     226                rc = ERROR_TIMEOUT;
     227            }
     228            if (rc != ERROR_TIMEOUT)
     229                break;
     230            /*
     231             * Deadlock detection - check if owner is around.
     232             */
     233            unsigned Owner = sem->Owner;
     234            if (!Owner)
     235                break;
     236            rc = DosVerifyPidTid(Owner & 0xffff, Owner >> 16);
     237            if (rc)
     238            {
     239                DosExitMustComplete(&ulNesting);
     240                __fmutex_deadlock(sem, "Owner died!");
     241                rc = ERROR_SEM_OWNER_DIED;
     242                DosEnterMustComplete(&ulNesting);
     243                break;
     244            }
     245        }
     246        FS_RESTORE();
     247        if (rc != 0)
     248        {
     249            DosExitMustComplete(&ulNesting);
     250            FS_RESTORE();
     251            LIBCLOG_RETURN_UINT(rc);
     252        }
     253    }
     254}
     255
     256
     257static void __fmutex_deadlock(_fmutex *pSem, const char *pszMsg)
     258{
     259    ULONG ul;
     260    static const char szMsg[] = "\r\n!!!deadlock!!! ";
     261    DosWrite(2, szMsg, sizeof(szMsg), &ul);
     262    if (pSem->pszDesc)
     263    {
     264        DosWrite(2, pSem->pszDesc, strlen(pSem->pszDesc), &ul);
     265        DosWrite(2, " ", 1, &ul);
     266    }
     267    if (pszMsg)
     268        DosWrite(2, pszMsg, strlen(pszMsg), &ul);
     269    static const char szNewLine[] = "\r\n";
     270    DosWrite(2, szNewLine, sizeof(szNewLine), &ul);
     271    __asm__ __volatile__("movl $0xdead10cc, %%eax; movl $0xdead10cc, %%edx; movl %0, %%ecx; int $3" : : "m" (pSem) : "%eax", "%edx", "%ecx");
     272}
     273
     274unsigned __fmutex_release_internal_must_complete(_fmutex *sem)
     275{
     276    ULONG ulNesting;
     277    __atomic_xchg(&sem->Owner, 0);
     278    signed char fs = __cxchg(&sem->fs, _FMS_AVAILABLE);
     279    if (fs != _FMS_OWNED_HARD)
     280    {
     281        FS_VAR_SAVE_LOAD();
     282        DosExitMustComplete(&ulNesting);
     283        FS_RESTORE();
     284        return 0;
     285    }
     286    else
     287    {
     288        int rc = __fmutex_release_internal (sem);
     289        FS_VAR_SAVE_LOAD();
     290        DosExitMustComplete(&ulNesting);
     291        FS_RESTORE();
     292        return rc;
     293    }
     294}
    139295
    140296unsigned __fmutex_release_internal(_fmutex *sem)
    141297{
    142     LIBCLOG_ENTER("sem=%p\n", (void *)sem);
     298    LIBCLOG_ENTER("sem=%p{.pszDesc=%s}\n", (void *)sem, sem->pszDesc);
    143299    unsigned rc;
    144300    FS_VAR();
     
    204360{
    205361    LIBCLOG_ENTER("sem=%p\n", (void *)sem);
    206     sem->fs  = _FMS_AVAILABLE;
    207362    sem->hev = 0;
     363    sem->fs = _FMS_AVAILABLE;
     364    sem->flags = _FMC_DUMMY;
     365    sem->Owner = 0;
     366    sem->pszDesc = "dummy";
    208367    LIBCLOG_RETURN_VOID();
    209368}
     369
  • trunk/src/emx/src/lib/process/fmutex2.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r1660 r1661  
    22
    33#include "libc-alias.h"
     4#include <os2emx.h>
    45#include <stdlib.h>
     6#include <string.h>
    57#include <sys/builtin.h>
    68#include <sys/fmutex.h>
     
    1719    {
    1820        LIBC_ASSERT_FAILED();
    19         abort();
     21        _fmutex_abort(NULL, "checked close");
    2022    }
    2123    LIBCLOG_RETURN_VOID();
     
    2931    {
    3032        LIBC_ASSERT_FAILED();
    31         abort();
     33        _fmutex_abort(NULL, "checked create");
     34    }
     35    LIBCLOG_RETURN_VOID();
     36}
     37
     38void _fmutex_checked_create2(_fmutex *sem, unsigned flags, const char *pszDesc)
     39{
     40    LIBCLOG_ENTER("sem=%p flags=%#x pszDesc=%s\n", sem, flags, pszDesc);
     41    if (_fmutex_create2(sem, flags, pszDesc) != 0)
     42    {
     43        LIBC_ASSERT_FAILED();
     44        _fmutex_abort(NULL, "checked create2");
    3245    }
    3346    LIBCLOG_RETURN_VOID();
     
    4154    {
    4255        LIBC_ASSERT_FAILED();
    43         abort();
     56        _fmutex_abort(sem, "open");
    4457    }
    4558    LIBCLOG_RETURN_VOID();
    4659}
     60
     61void _fmutex_abort(_fmutex *pSem, const char *pszMsg)
     62{
     63    ULONG ul;
     64    static const char szMsg1[] = "\r\n_fmutex operation failed: ";
     65    DosWrite(2, szMsg1, sizeof(szMsg1), &ul);
     66    if (pSem && pSem->pszDesc)
     67    {
     68        DosWrite(2, pSem->pszDesc, strlen(pSem->pszDesc), &ul);
     69        DosWrite(2, " ", 1, &ul);
     70    }
     71    if (pszMsg)
     72        DosWrite(2, pszMsg, strlen(pszMsg), &ul);
     73
     74    static const char szMsg2[] = "\r\n";
     75    DosWrite(2, szMsg2, sizeof(szMsg2), &ul);
     76
     77    abort();
     78}
     79
  • trunk/src/emx/src/lib/sys/DosEx.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    725725
    726726    /*
    727      * Figure out the curren tid.
     727     * Figure out the current tid.
    728728     */
    729729    FS_SAVE_LOAD();
  • trunk/src/emx/src/lib/sys/__init.c

    • Property cvs2svn:cvs-rev changed from 1.19 to 1.20
    r1660 r1661  
    2929#include <InnoTekLIBC/sharedpm.h>
    3030#include <InnoTekLIBC/backend.h>
     31#include <InnoTekLIBC/FastInfoBlocks.h>
    3132#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_INITTERM
    3233#include <InnoTekLIBC/logstrict.h>
     
    177178    } * pStackFrame;
    178179    int       rc;
    179     PTIB      ptib;
    180     PPIB      ppib;
    181180    int       cb;
    182181
     
    189188
    190189    __libc_HeapEndVoting();
    191 
    192 
    193     /*
    194      * Get ptib and ppib again, in case __init() has already been called for a DLL.
    195      */
    196     /** @todo replace by fast info block code. */
    197     rc = DosGetInfoBlocks(&ptib, &ppib);
    198     if (rc != 0)
    199         goto failure;
    200190
    201191    /*
     
    205195     *    Redo the parsing, but setup argv now.
    206196     */
    207     cb = parse_args(ppib->pib_pchcmd, NULL, NULL);
     197    cb = parse_args(fibGetCmdLine(), NULL, NULL);
    208198    cb += (argc + 1) * sizeof (char *) + sizeof (struct stackframe);
    209199    cb = (cb + 15) & ~15;
     
    215205    pStackFrame->argc = argc;
    216206    pStackFrame->argv = &pStackFrame->apszArg[0];
    217     parse_args(ppib->pib_pchcmd, pStackFrame->argv, (char*)&pStackFrame->argv[argc + 1]);
     207    parse_args(fibGetCmdLine(), pStackFrame->argv, (char*)&pStackFrame->argv[argc + 1]);
    218208    pStackFrame->argv[argc] = NULL;
    219209
  • trunk/src/emx/src/lib/sys/__initdll.c

    • Property cvs2svn:cvs-rev changed from 1.19 to 1.20
    r1660 r1661  
    3939#include <InnoTekLIBC/libc.h>
    4040#include <InnoTekLIBC/backend.h>
     41#include <InnoTekLIBC/FastInfoBlocks.h>
    4142#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_INITTERM
    4243#include <InnoTekLIBC/logstrict.h>
     
    9394    ULONG               aul[2];
    9495    int                 rc;
    95     PTIB                ptib;
    96     PPIB                ppib;
    9796    __LIBC_PSPMPROCESS  pSelf;
    9897
     
    113112        return 0;
    114113    fInitialized = 1;
     114
     115    /*
     116     * Init fast infoblocks.
     117     */
     118    rc = __libc_back_fibInit(0);
     119    if (rc)
     120        return -1;
    115121
    116122    /*
     
    136142     * and ppib.
    137143     */
    138     /** @todo This must be replaced by the fast info block code from Odin/kLib. */
    139     rc = DosGetInfoBlocks(&ptib, &ppib);
    140     if (rc != 0)
    141         return -1;
    142     _sys_pid = ppib->pib_ulpid;
    143     _sys_ppid = ppib->pib_ulppid;
     144    _sys_pid = fibGetPid();
     145    _sys_ppid = fibGetPPid();
    144146
    145147    /*
    146148     * Initialize the heap semaphores.
    147149     */
    148     if (_fmutex_create(&_sys_heap_fmutex, 0) != 0)
    149         return -1;
    150     if (_fmutex_create(&_sys_gmtxHimem, 0) != 0)
    151         return -1;
    152     if (_fmutex_create(&__libc_gmtxExec, 0) != 0)
     150    if (_fmutex_create2(&_sys_heap_fmutex, 0, "LIBC SYS Heap Mutex") != 0)
     151        return -1;
     152    if (_fmutex_create2(&_sys_gmtxHimem,   0, "LIBC SYS Highmem Mutex") != 0)
     153        return -1;
     154    if (_fmutex_create2(&__libc_gmtxExec,  0, "LIBC SYS Exec Mutex") != 0)
    153155        return -1;
    154156
     
    166168     * Setup environment (org_environ and _STD(environ))
    167169     */
    168     rc = _sys_init_environ(ppib->pib_pchenv);
     170    rc = _sys_init_environ(fibGetEnv());
    169171    if (rc)
    170172    {
     
    215217     * Get current time for clock() for use as process startup time.
    216218     */
    217     _sys_get_clock(&_sys_clock0_ms);
     219    _sys_clock0_ms = fibGetMsCount();
    218220    return 0;
    219221}
     
    226228void _sys_get_clock(unsigned long *pms)
    227229{
    228     ULONG val_ms;
    229     FS_VAR();
    230 
    231     FS_SAVE_LOAD();
    232     DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &val_ms, sizeof(val_ms));
    233     FS_RESTORE();
    234     *pms = val_ms;
     230    *pms = fibGetMsCount();
    235231}
    236232
     
    298294            _sys_pid = pForkHandle->pidChild;
    299295            _sys_ppid = pForkHandle->pidParent;
     296            __libc_back_fibInit(1);
     297            _sys_clock0_ms = fibGetMsCount();
    300298            rc = 0;
    301299            break;
  • trunk/src/emx/src/lib/sys/b_processWait.c

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r1660 r1661  
    4848#include <InnoTekLIBC/sharedpm.h>
    4949#include <InnoTekLIBC/backend.h>
     50#include <InnoTekLIBC/FastInfoBlocks.h>
    5051#define __LIBC_LOG_GROUP __LIBC_LOG_GRP_BACK_PROCESS
    5152#include <InnoTekLIBC/logstrict.h>
     
    758759    FS_VAR();
    759760    FS_SAVE_LOAD();
    760     PPIB        pPib;
    761     PTIB        pTib;
    762     DosGetInfoBlocks(&pTib, &pPib);
    763761    int rc = waitSemRequest(0);
    764762    if (rc)
     
    920918         */
    921919        if (    cIterations >= 1
    922             &&  (pPib->pib_flstatus & (0x40/*dying*/ | 0x04/*exiting all*/ | 0x02/*Exiting Thread 1*/ | 0x01/*ExitList */))
    923             )
    924             LIBCLOG_RETURN_MSG(-EDEADLK, "%d (-EDEADLK) pib_flstatus=%#lx\n", -EDEADLK, pPib->pib_flstatus);
     920            &&  fibIsInExit())
     921            LIBCLOG_RETURN_MSG(-EDEADLK, "%d (-EDEADLK) pib_flstatus=%#x\n", -EDEADLK, (unsigned)fibGetProcessStatus());
    925922        rc = DosWaitEventSem(ghevWait, 30*1000);
    926923        if (rc == ERROR_INTERRUPT)
  • trunk/src/emx/src/lib/sys/b_threadInit.c

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r1660 r1661  
    2929*******************************************************************************/
    3030#include "libc-alias.h"
     31#define INCL_DOSEXCEPTIONS
     32#define INCL_FSMACROS
    3133#include <os2emx.h>
    3234#include <sys/signal.h>
     
    4345    pThrd->b.sys.fd.cFiles = 0;
    4446
    45     /*
    46      * Gain exclusive access to the signal stuff.
    47      */
    48     int rc = __libc_back_signalSemRequest();
     47    if (pParentThrd && pParentThrd->tid)
     48    {
     49        /*
     50         * We don't mess with the signal semaphore here because that *will*
     51         * cause deadlocks. So to protect ourselves against signals
     52         * we'll simply enter a must complete section while accessing the
     53         * variables. This naturally assumes that WE are the parent!
     54         */
     55        FS_VAR_SAVE_LOAD();
     56        ULONG ulNesting = 0;
     57        DosEnterMustComplete(&ulNesting);
    4958
    50     /*
    51      * Copy signal stuff.
    52      */
    53     if (pParentThrd)
    54     {
     59        /*
     60         * Copy signal stuff.
     61         */
    5562        pThrd->SigSetBlocked    = pParentThrd->SigSetBlocked;
    5663        if (pParentThrd->fSigSetBlockedOld)
     
    5966            pThrd->fSigSetBlockedOld    = pParentThrd->fSigSetBlockedOld;
    6067        }
     68
     69        /*
     70         * Exit must complete section.
     71         */
     72        DosExitMustComplete(&ulNesting);
     73        FS_RESTORE();
    6174    }
    62 
    63     /*
    64      * Release semaphore.
    65      */
    66     if (!rc)
    67         __libc_back_signalSemRelease();
    6875}
    6976
  • trunk/src/emx/src/lib/sys/execname.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    88#include <string.h>
    99#include <emx/syscalls.h>
     10#include <InnoTekLIBC/FastInfoBlocks.h>
    1011#include "syscalls.h"
    1112
     
    1314{
    1415  ULONG rc;
    15   PTIB ptib;
    16   PPIB ppib;
    1716  FS_VAR();
    1817
     
    2120
    2221  FS_SAVE_LOAD();
    23   rc = DosGetInfoBlocks (&ptib, &ppib);
    24   if (rc != 0)
    25     {
    26       FS_RESTORE();
    27       *dst = 0;
    28       return -1;
    29     }
    30 
    31   rc = DosQueryModuleName (ppib->pib_hmte, size, dst);
     22  rc = DosQueryModuleName (fibGetExeHandle(), size, dst);
    3223  FS_RESTORE();
    3324  if (rc != 0)
  • trunk/src/emx/src/lib/sys/filehandles.c

    • Property cvs2svn:cvs-rev changed from 1.15 to 1.16
    r1660 r1661  
    119119     * Init the mutex which should've been a read write lock.
    120120     */
    121     rc = _fmutex_create(&gmtx, 0);
     121    rc = _fmutex_create2(&gmtx, 0, "LIBC SYS Filehandle Mutex");
    122122    if (rc)
    123123        return rc;
  • trunk/src/emx/src/lib/sys/fs.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    211211     * Create the mutex.
    212212     */
    213     int rc = _fmutex_create(&__libc_gmtxFS, 0);
     213    int rc = _fmutex_create2(&__libc_gmtxFS, 0, "LIBC SYS FS Mutex");
    214214    if (rc)
    215215        LIBCLOG_RETURN_INT(-1);
  • trunk/src/emx/src/lib/sys/libcfork.c

    • Property cvs2svn:cvs-rev changed from 1.10 to 1.11
    r1660 r1661  
    4747#include <InnoTekLIBC/fork.h>
    4848#include <InnoTekLIBC/sharedpm.h>
     49#include <InnoTekLIBC/FastInfoBlocks.h>
    4950#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    5051#include <InnoTekLIBC/logstrict.h>
     
    779780    LIBCLOG_ENTER("pForkHandle=%p ppid=%p\n", (void *)pForkHandle, (void *)ppid);
    780781    __LIBC_PSPMPROCESS  pProcessChild;
    781     PTIB                pTib;
    782     PPIB                pPib;
    783782    char                szPgm[CCHMAXPATH];
    784783    int                 rc;
     
    807806     */
    808807    pForkHandle->enmStage = __LIBC_FORK_STAGE_EXEC;
    809     DosGetInfoBlocks(&pTib, &pPib);
    810     rc = DosQueryModuleName(pPib->pib_hmte, sizeof(szPgm), &szPgm[0]);
     808    rc = DosQueryModuleName(fibGetExeHandle(), sizeof(szPgm), &szPgm[0]);
    811809    if (!rc)
    812810    {
     
    814812        RESULTCODES rsc = {0,0};
    815813        #if 1
    816         rc = DosExecPgm(szErr, sizeof(szErr), EXEC_ASYNCRESULT, (PCSZ)pPib->pib_pchcmd, NULL, &rsc, (PCSZ)&szPgm[0]);
     814        rc = DosExecPgm(szErr, sizeof(szErr), EXEC_ASYNCRESULT, (PCSZ)fibGetCmdLine(), NULL, &rsc, (PCSZ)&szPgm[0]);
    817815        #else /* debugging checks */
    818816        rc = DosExecPgm(szErr, sizeof(szErr), EXEC_ASYNCRESULT, (PCSZ)"forking\0forking\0", NULL, &rsc, (PCSZ)&szPgm[0]);
     
    842840        else
    843841        {
    844             LIBC_ASSERTM_FAILED("DosExecPgm(,,,%s,,,%s..) failed with rc=%d, szErr=%s\n", szPgm, pPib->pib_pchcmd, rc, szErr);
     842            LIBC_ASSERTM_FAILED("DosExecPgm(,,,%s,,,%s..) failed with rc=%d, szErr=%s\n", szPgm, fibGetCmdLine(), rc, szErr);
    845843            rc = -__libc_native2errno(rc);
    846844        }
     
    848846    else
    849847    {
    850         LIBC_ASSERTM_FAILED("DosQueryModuleName(%lx,,) failed with rc=%d\n", pPib->pib_hmte, rc);
     848        LIBC_ASSERTM_FAILED("DosQueryModuleName(%lx,,) failed with rc=%d\n", fibGetExeHandle(), rc);
    851849        rc = -__libc_native2errno(rc);
    852850    }
  • trunk/src/emx/src/lib/sys/signals.c

    • Property cvs2svn:cvs-rev changed from 1.16 to 1.17
    r1660 r1661  
    8282#include <InnoTekLIBC/fork.h>
    8383#include <InnoTekLIBC/backend.h>
     84#include <InnoTekLIBC/FastInfoBlocks.h>
    8485#define __LIBC_LOG_GROUP __LIBC_LOG_GRP_BACK_SIGNAL
    8586#include <InnoTekLIBC/logstrict.h>
     
    701702    LIBCLOG_ENTER("\n");
    702703    int     rc;
    703     PPIB    pPib;
    704     PTIB    pTib;
    705704    ULONG   cNesting;
    706705    FS_VAR();
     
    710709    {
    711710        HMTX    hmtx = ghmtxSignals;
    712         rc = DosRequestMutexSem(hmtx, SEM_INDEFINITE_WAIT);
     711        rc = DosRequestMutexSem(hmtx, 3000);
    713712        if (!rc)
    714713            break;
    715         if (rc == ERROR_INTERRUPT)
     714        if (rc == ERROR_INTERRUPT || rc == ERROR_SEM_TIMEOUT || rc == ERROR_TIMEOUT)
    716715        {
    717716            /*
     
    723722             * lead to bad deadlocks.
    724723             */
    725             DosGetInfoBlocks(&pTib, &pPib);
    726             if (pPib->pib_flstatus & (0x40/*dying*/ | 0x04/*exiting all*/ | 0x02/*Exiting Thread 1*/ | 0x01/* ExitList */))
     724            if (fibIsInExit())
    727725            {
    728726                /* we're terminating, don't give a shit about signals now, just hurry up and die! */
  • trunk/src/emx/src/lib/sys/timebomb.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1660 r1661  
    3333
    3434#ifdef TIMEBOMB
    35 
    3635_CRT_INIT1(__libc_Timebomb)
     36#endif
    3737
    3838void __libc_Timebomb(void)
     
    6565}
    6666
    67 #endif
Note: See TracChangeset for help on using the changeset viewer.