Changeset 1831


Ignore:
Timestamp:
Mar 13, 2005, 11:50:50 AM (20 years ago)
Author:
bird
Message:

Fixed open problem. Fixed pool allocation problem. Fixed big free item leak.

Location:
trunk/src/emx/src/lib/sys
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/src/lib/sys/DosAllocSharedMemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    8484        pEntry->u.MemOpen.pv      = pv;
    8585        pEntry->u.MemOpen.flFlags = flFlags & (PAG_READ | PAG_WRITE | PAG_EXECUTE | PAG_GUARD);
     86#ifdef PER_PROCESS_OPEN_COUNTS
    8687        pEntry->u.MemOpen.cOpens  = 1;
     88#endif
    8789    }
    8890
  • trunk/src/emx/src/lib/sys/DosCreateEventSemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    8989    {
    9090        pDosEx->u.EventOpen.hev     = hev;
     91#ifdef PER_PROCESS_OPEN_COUNTS
    9192        pDosEx->u.EventOpen.cOpens  = 1;
     93#endif
    9294    }
    9395
  • trunk/src/emx/src/lib/sys/DosCreateMutexSemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    8989    {
    9090        pDosEx->u.MutexOpen.hmtx    = hmtx;
     91#ifdef PER_PROCESS_OPEN_COUNTS
    9192        pDosEx->u.MutexOpen.cOpens  = 1;
     93#endif
    9294    }
    9395
  • trunk/src/emx/src/lib/sys/DosEx.c

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r1830 r1831  
    287287    LIBCLOG_MSG("Adding a pool of %d bytes.\n", cb);
    288288    pPool->cb           = cb;
    289     pPool->cbFreeSpace  = ((cb - sizeof(DOSEXHDR)) / DOSEX_BLOCK_SIZE) * DOSEX_BLOCK_SIZE;
     289    pPool->cbFreeSpace  = ((cb - sizeof(*pPool)) / DOSEX_BLOCK_SIZE) * DOSEX_BLOCK_SIZE;
    290290    pPool->pvFreeSpace  = pPool + 1;
    291291
     
    296296    {
    297297        gpPoolsTail->pNext = pPool;
    298         gpPoolsTail = gpPoolsTail;
     298        gpPoolsTail = pPool;
    299299    }
    300300    else
     
    525525            if (rc && rc != ERROR_INVALID_HANDLE)
    526526                fUnlink = 0;
     527#ifdef PER_PROCESS_OPEN_COUNTS
    527528            else
    528529            {
     
    531532                    fUnlink = 0;
    532533            }
     534#endif
    533535            break;
    534536
     
    543545            if (rc && rc != ERROR_INVALID_HANDLE)
    544546                fUnlink = 0;
     547#ifdef PER_PROCESS_OPEN_COUNTS
    545548            else
    546549            {
     
    549552                    fUnlink = 0;
    550553            }
     554#endif
    551555            break;
    552556
     
    569573
    570574    /*
    571      * Unlink it if requested.
     575     * Unlink and put the free list it if requested.
    572576     */
    573577    if (fUnlink)
     
    585589                pPool->apTails[enmType] = NULL;
    586590        }
     591
     592        pCur->pNext = pPool->apHeads[DOSEX_TYPE_FREE];
     593        pPool->apHeads[DOSEX_TYPE_FREE] = pCur;
    587594    }
    588595
     
    10131020static int dosexForkPreMemOpen(PDOSEX pEntry)
    10141021{
     1022#ifdef PER_PROCESS_OPEN_COUNTS
    10151023    unsigned    cOpens = pEntry->u.MemOpen.cOpens;
    1016     while (cOpens)
     1024#else
     1025    unsigned    cOpens = 1;
     1026#endif
     1027    while (cOpens-- > 0)
    10171028    {
    10181029        int rc = DosGetSharedMem(pEntry->u.MemOpen.pv, pEntry->u.MemOpen.flFlags);
     
    11111122static int dosexForkPreMutexOpen(PDOSEX pEntry)
    11121123{
    1113     int cOpens = pEntry->u.MutexOpen.cOpens;
     1124#ifdef PER_PROCESS_OPEN_COUNTS
     1125    unsigned cOpens = pEntry->u.MutexOpen.cOpens;
     1126#else
     1127    unsigned cOpens = 1;
     1128#endif
    11141129    while (cOpens-- > 0)
    11151130    {
     
    12091224static int dosexForkPreEventOpen(PDOSEX pEntry)
    12101225{
    1211     int cOpens = pEntry->u.EventOpen.cOpens;
     1226#ifdef PER_PROCESS_OPEN_COUNTS
     1227    unsigned cOpens = pEntry->u.EventOpen.cOpens;
     1228#else
     1229    unsigned cOpens = 1;
     1230#endif
    12121231    while (cOpens-- > 0)
    12131232    {
  • trunk/src/emx/src/lib/sys/DosEx.h

    • Property cvs2svn:cvs-rev changed from 1.3 to 1.4
    r1830 r1831  
    9898            /** Open flags. */
    9999            ULONG       flFlags;
     100#ifdef PER_PROCESS_OPEN_COUNTS
    100101            /** Open count. */
    101102            unsigned    cOpens;
     103#endif
    102104        }   MemOpen;
    103105
     
    124126            /** Mutex handle. */
    125127            HMTX        hmtx;
     128#ifdef PER_PROCESS_OPEN_COUNTS
    126129            /** Open count. */
    127130            unsigned    cOpens;
     131#endif
    128132        }   MutexOpen;
    129133
     
    150154            /** Mutex handle. */
    151155            HEV         hev;
     156#ifdef PER_PROCESS_OPEN_COUNTS
    152157            /** Open count. */
    153158            unsigned    cOpens;
     159#endif
    154160        }   EventOpen;
    155161
  • trunk/src/emx/src/lib/sys/DosGetNamedSharedMemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    8080            {
    8181                pEntry->u.MemOpen.flFlags |= flFlags & ~(OBJ_FORK);
     82#ifdef PER_PROCESS_OPEN_COUNTS
    8283                pEntry->u.MemOpen.cOpens++;
     84#endif
    8385                __libc_dosexRelease(pEntry);
    8486            }
     
    9496                pEntry->u.MemOpen.pv      = pv;
    9597                pEntry->u.MemOpen.flFlags = flFlags & ~(OBJ_FORK);
     98#ifdef PER_PROCESS_OPEN_COUNTS
    9699                pEntry->u.MemOpen.cOpens  = 1;
     100#endif
    97101            }
    98102        }
  • trunk/src/emx/src/lib/sys/DosGetSharedMemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    7575        {
    7676            pEntry->u.MemOpen.flFlags |= flFlags & ~(OBJ_FORK);
     77#ifdef PER_PROCESS_OPEN_COUNTS
    7778            pEntry->u.MemOpen.cOpens++;
     79#endif
    7880            __libc_dosexRelease(pEntry);
    7981        }
     
    8991            pEntry->u.MemOpen.pv      = pv;
    9092            pEntry->u.MemOpen.flFlags = flFlags & ~(OBJ_FORK);
     93#ifdef PER_PROCESS_OPEN_COUNTS
    9194            pEntry->u.MemOpen.cOpens  = 1;
     95#endif
    9296        }
    9397    }
  • trunk/src/emx/src/lib/sys/DosOpenEventSemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    6969    if (pDosEx)
    7070    {
     71#ifdef PER_PROCESS_OPEN_COUNTS
    7172        pDosEx->u.EventOpen.cOpens++;
     73#endif
    7274        __libc_dosexRelease(pDosEx);
    7375    }
     
    8991         */
    9092        pDosEx->u.EventOpen.hev     = hev;
     93#ifdef PER_PROCESS_OPEN_COUNTS
    9194        pDosEx->u.EventOpen.cOpens  = 1;
     95#endif
    9296    }
    9397
  • trunk/src/emx/src/lib/sys/DosOpenMutexSemEx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r1830 r1831  
    6969    if (pDosEx)
    7070    {
     71#ifdef PER_PROCESS_OPEN_COUNTS
    7172        pDosEx->u.MutexOpen.cOpens++;
     73#endif
    7274        __libc_dosexRelease(pDosEx);
    7375    }
     
    8991         */
    9092        pDosEx->u.MutexOpen.hmtx    = hmtx;
     93#ifdef PER_PROCESS_OPEN_COUNTS
    9194        pDosEx->u.MutexOpen.cOpens  = 1;
     95#endif
    9296    }
    9397
Note: See TracChangeset for help on using the changeset viewer.