VirtualBox

Changeset 27511 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Mar 19, 2010 1:37:26 AM (15 years ago)
Author:
vboxsync
Message:

pipe-win.cpp: simplified.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/win/pipe-win.cpp

    r27509 r27511  
    7878    /** Set if we've promised that the handle is writable. */
    7979    bool                fPromisedWritable;
    80     /** The number of users of the current mode. */
    81     uint32_t            cModeUsers;
     80    /** Usage counter. */
     81    uint32_t            cUsers;
    8282    /** The overlapped I/O structure we use. */
    8383    OVERLAPPED          Overlapped;
     
    9191     *  We can only have one poller at the time (lazy bird). */
    9292    RTPOLLSET           hPollSet;
    93     /** The number of references to the handle in hPollSet. */
    94     uint32_t            cPolls;
    9593    /** Critical section protecting the above members.
    9694     * (Taking the lazy/simple approach.) */
     
    289287                            //pThisW->fPromisedWritable= false;
    290288                            //pThisR->fPromisedWritable= false;
    291                             //pThisR->cModeUsers      = 0;
    292                             //pThisW->cModeUsers      = 0;
     289                            //pThisR->cUsers          = 0;
     290                            //pThisW->cUsers          = 0;
    293291                            //pThisR->pbBounceBuf     = NULL;
    294292                            //pThisW->pbBounceBuf     = NULL;
     
    299297                            pThisR->hPollSet        = NIL_RTPOLLSET;
    300298                            pThisW->hPollSet        = NIL_RTPOLLSET;
    301                             //pThisW->cPolls          = 0;
    302                             //pThisR->cPolls          = 0;
    303299
    304300                            *phPipeRead  = pThisR;
     
    410406    AssertReturn(ASMAtomicCmpXchgU32(&pThis->u32Magic, ~RTPIPE_MAGIC, RTPIPE_MAGIC), VERR_INVALID_HANDLE);
    411407    RTCritSectEnter(&pThis->CritSect);
    412     Assert(pThis->cModeUsers == 0);
     408    Assert(pThis->cUsers == 0);
    413409
    414410    if (!pThis->fRead && pThis->fIOPending)
     
    456452    {
    457453        /* No concurrent readers, sorry. */
    458         if (pThis->cModeUsers == 0)
    459         {
    460             pThis->cModeUsers++;
     454        if (pThis->cUsers == 0)
     455        {
     456            pThis->cUsers++;
    461457
    462458            /*
     
    503499                pThis->fBrokenPipe = true;
    504500
    505             pThis->cModeUsers--;
     501            pThis->cUsers--;
    506502        }
    507503        else
     
    525521    {
    526522        /* No concurrent readers, sorry. */
    527         if (pThis->cModeUsers == 0)
    528         {
    529             pThis->cModeUsers++;
     523        if (pThis->cUsers == 0)
     524        {
     525            pThis->cUsers++;
    530526
    531527            size_t cbTotalRead = 0;
     
    580576            }
    581577
    582             pThis->cModeUsers--;
     578            pThis->cUsers--;
    583579        }
    584580        else
     
    603599    {
    604600        /* No concurrent readers, sorry. */
    605         if (pThis->cModeUsers == 0)
    606         {
    607             pThis->cModeUsers++;
     601        if (pThis->cUsers == 0)
     602        {
     603            pThis->cUsers++;
    608604
    609605            /* If I/O is pending, check if it has completed. */
     
    687683                pThis->fBrokenPipe = true;
    688684
    689             pThis->cModeUsers--;
     685            pThis->cUsers--;
    690686        }
    691687        else
     
    710706    {
    711707        /* No concurrent readers, sorry. */
    712         if (pThis->cModeUsers == 0)
    713         {
    714             pThis->cModeUsers++;
     708        if (pThis->cUsers == 0)
     709        {
     710            pThis->cUsers++;
    715711
    716712            /*
     
    736732                /*
    737733                 * Try write everything.
    738                  * No bounce buffering, cModeUsers protects us.
     734                 * No bounce buffering, cUsers protects us.
    739735                 */
    740736                size_t cbTotalWritten = 0;
     
    787783                pThis->fBrokenPipe = true;
    788784
    789             pThis->cModeUsers--;
     785            pThis->cUsers--;
    790786        }
    791787        else
     
    886882                    break;
    887883                }
    888                 AssertBreakStmt(pThis->cModeUsers == 0, rc = VERR_INTERNAL_ERROR_5);
     884                AssertBreakStmt(pThis->cUsers == 0, rc = VERR_INTERNAL_ERROR_5);
    889885                rc = ResetEvent(pThis->Overlapped.hEvent); Assert(rc == TRUE);
    890886                DWORD cbRead = 0;
     
    897893                else if (GetLastError() == ERROR_IO_PENDING)
    898894                {
    899                     pThis->cModeUsers++;
     895                    pThis->cUsers++;
    900896                    pThis->fIOPending = true;
    901897                    pThis->fZeroByteRead = true;
     
    997993            if (pThis->fZeroByteRead)
    998994            {
    999                 pThis->cModeUsers--;
     995                pThis->cUsers--;
    1000996                pThis->fIOPending = false;
    1001997                if (rc != VINF_SUCCESS)
     
    11441140    /* Check that this is the only current use of this pipe. */
    11451141    uint32_t fRetEvents;
    1146     if (   (   pThis->cPolls == 0
    1147             && pThis->cModeUsers == 0)
    1148         || pThis->hPollSet == hPollSet
    1149        )
     1142    if (   pThis->cUsers   == 0
     1143        || pThis->hPollSet == hPollSet)
    11501144    {
    11511145        /* Check what the current events are. */
     
    11831177            if (!fRetEvents)
    11841178            {
    1185                 pThis->cPolls++;
    1186                 pThis->cModeUsers++;
     1179                pThis->cUsers++;
    11871180                pThis->hPollSet = hPollSet;
    11881181            }
     
    12241217    AssertRCReturn(rc, 0);
    12251218
    1226     Assert(pThis->cPolls > 0);
    1227     Assert(pThis->cModeUsers > 0);
     1219    Assert(pThis->cUsers > 0);
    12281220
    12291221
     
    12461238
    12471239    /* update counters. */
    1248     pThis->cPolls--;
    1249     if (!pThis->cPolls)
     1240    pThis->cUsers--;
     1241    if (!pThis->cUsers)
    12501242        pThis->hPollSet = NIL_RTPOLLSET;
    1251     pThis->cModeUsers--;
    12521243
    12531244    RTCritSectLeave(&pThis->CritSect);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette