VirtualBox

Ignore:
Timestamp:
Nov 26, 2018 3:44:41 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
126937
Message:

HGCM: Replace C++-style inline members on VBOXHGCMSVCPARM with simple functions.
bugref:9172: Shared folder performance tuning
Changes in bugref:9172 caused a build regression on Ubuntu 18.10 due to the
use of RT_ZERO on a structure containing an embedded VBOXHGCMSVCPARM, as
VBOXHGCMSVCPARM had member functions and was therefore not a simple plain-
old-data structure. Rather than just doing the sensible thing and zeroing
it in a different way, I converted the inline member getters and setters to
standard inline C functions, including fixing callers. Actually I had planned
this for some time, as the member function use seemed a bit gratuitous in
hindsight.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/DragAndDrop/service.cpp

    r74439 r75737  
    457457                        {
    458458                            uint32_t fFlags = 0;
    459                             int rc2 = paParms[2].getUInt32(&fFlags);
     459                            int rc2 = HGCMSvcGetU32(&paParms[2], &fFlags);
    460460                            if (   RT_SUCCESS(rc2)
    461461                                && fFlags) /* Blocking flag set? */
     
    484484                    data.hdr.uMagic = CB_MAGIC_DND_CONNECT;
    485485                    if (cParms >= 3)
    486                         rc = paParms[0].getUInt32(&data.hdr.uContextID);
     486                        rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
    487487                    else /* Older protocols don't have a context ID. */
    488488                        rc = VINF_SUCCESS;
    489489                    if (RT_SUCCESS(rc))
    490                         rc = paParms[idxProto].getUInt32(&data.uProtocol);
    491                     if (RT_SUCCESS(rc))
    492                         rc = paParms[idxProto + 1].getUInt32(&data.uFlags);
     490                        rc = HGCMSvcGetU32(&paParms[idxProto], &data.uProtocol);
     491                    if (RT_SUCCESS(rc))
     492                        rc = HGCMSvcGetU32(&paParms[idxProto + 1], &data.uFlags);
    493493                    if (RT_SUCCESS(rc))
    494494                        pClient->SetProtocolVer(data.uProtocol);
     
    515515                        if (cParms == 2)
    516516                        {
    517                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    518                             if (RT_SUCCESS(rc))
    519                                 rc = paParms[1].getUInt32(&data.uAction); /* Get drop action. */
     517                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     518                            if (RT_SUCCESS(rc))
     519                                rc = HGCMSvcGetU32(&paParms[1], &data.uAction); /* Get drop action. */
    520520                        }
    521521                        break;
     
    526526                    {
    527527                        if (cParms == 1)
    528                             rc = paParms[0].getUInt32(&data.uAction); /* Get drop action. */
     528                            rc = HGCMSvcGetU32(&paParms[0], &data.uAction); /* Get drop action. */
    529529                        break;
    530530                    }
     
    548548                        if (cParms == 3)
    549549                        {
    550                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    551                             if (RT_SUCCESS(rc))
    552                                 rc = paParms[1].getPointer((void **)&data.pszFormat, &data.cbFormat);
    553                             if (RT_SUCCESS(rc))
    554                                 rc = paParms[2].getUInt32(&data.cbFormat);
     550                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     551                            if (RT_SUCCESS(rc))
     552                                rc = HGCMSvcGetPv(&paParms[1], (void **)&data.pszFormat, &data.cbFormat);
     553                            if (RT_SUCCESS(rc))
     554                                rc = HGCMSvcGetU32(&paParms[2], &data.cbFormat);
    555555                        }
    556556                        break;
     
    561561                    {
    562562                        if (cParms == 1)
    563                             rc = paParms[0].getPointer((void**)&data.pszFormat, &data.cbFormat);
     563                            rc = HGCMSvcGetPv(&paParms[0], (void**)&data.pszFormat, &data.cbFormat);
    564564                        break;
    565565                    }
     
    583583                        if (cParms == 4)
    584584                        {
    585                             rc = paParms[0].getUInt32(&data.uStatus);
    586                             if (RT_SUCCESS(rc))
    587                                 rc = paParms[1].getUInt32(&data.uStatus);
    588                             if (RT_SUCCESS(rc))
    589                                 rc = paParms[2].getUInt32(&data.uPercentage);
    590                             if (RT_SUCCESS(rc))
    591                                 rc = paParms[3].getUInt32(&data.rc);
     585                            rc = HGCMSvcGetU32(&paParms[0], &data.uStatus);
     586                            if (RT_SUCCESS(rc))
     587                                rc = HGCMSvcGetU32(&paParms[1], &data.uStatus);
     588                            if (RT_SUCCESS(rc))
     589                                rc = HGCMSvcGetU32(&paParms[2], &data.uPercentage);
     590                            if (RT_SUCCESS(rc))
     591                                rc = HGCMSvcGetU32(&paParms[3], &data.rc);
    592592                        }
    593593                        break;
     
    599599                        if (cParms == 3)
    600600                        {
    601                             rc = paParms[0].getUInt32(&data.uStatus);
    602                             if (RT_SUCCESS(rc))
    603                                 rc = paParms[1].getUInt32(&data.uPercentage);
    604                             if (RT_SUCCESS(rc))
    605                                 rc = paParms[2].getUInt32(&data.rc);
     601                            rc = HGCMSvcGetU32(&paParms[0], &data.uStatus);
     602                            if (RT_SUCCESS(rc))
     603                                rc = HGCMSvcGetU32(&paParms[1], &data.uPercentage);
     604                            if (RT_SUCCESS(rc))
     605                                rc = HGCMSvcGetU32(&paParms[2], &data.rc);
    606606                        }
    607607                        break;
     
    627627                        if (cParms == 5)
    628628                        {
    629                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    630                             if (RT_SUCCESS(rc))
    631                                 rc = paParms[1].getUInt32(&data.uDefAction);
    632                             if (RT_SUCCESS(rc))
    633                                 rc = paParms[2].getUInt32(&data.uAllActions);
    634                             if (RT_SUCCESS(rc))
    635                                 rc = paParms[3].getPointer((void**)&data.pszFormat, &data.cbFormat);
    636                             if (RT_SUCCESS(rc))
    637                                 rc = paParms[4].getUInt32(&data.cbFormat);
     629                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     630                            if (RT_SUCCESS(rc))
     631                                rc = HGCMSvcGetU32(&paParms[1], &data.uDefAction);
     632                            if (RT_SUCCESS(rc))
     633                                rc = HGCMSvcGetU32(&paParms[2], &data.uAllActions);
     634                            if (RT_SUCCESS(rc))
     635                                rc = HGCMSvcGetPv(&paParms[3], (void**)&data.pszFormat, &data.cbFormat);
     636                            if (RT_SUCCESS(rc))
     637                                rc = HGCMSvcGetU32(&paParms[4], &data.cbFormat);
    638638                        }
    639639                        break;
     
    645645                        if (cParms == 3)
    646646                        {
    647                             rc = paParms[0].getUInt32(&data.uDefAction);
    648                             if (RT_SUCCESS(rc))
    649                                 rc = paParms[1].getUInt32(&data.uAllActions);
    650                             if (RT_SUCCESS(rc))
    651                                 rc = paParms[2].getPointer((void**)&data.pszFormat, &data.cbFormat);
     647                            rc = HGCMSvcGetU32(&paParms[0], &data.uDefAction);
     648                            if (RT_SUCCESS(rc))
     649                                rc = HGCMSvcGetU32(&paParms[1], &data.uAllActions);
     650                            if (RT_SUCCESS(rc))
     651                                rc = HGCMSvcGetPv(&paParms[2], (void**)&data.pszFormat, &data.cbFormat);
    652652                        }
    653653                        break;
     
    667667                    RT_ZERO(data);
    668668                    data.hdr.uMagic = CB_MAGIC_DND_GH_SND_DATA_HDR;
    669                     rc = paParms[0].getUInt32(&data.hdr.uContextID);
    670                     if (RT_SUCCESS(rc))
    671                         rc = paParms[1].getUInt32(&data.data.uFlags);
    672                     if (RT_SUCCESS(rc))
    673                         rc = paParms[2].getUInt32(&data.data.uScreenId);
    674                     if (RT_SUCCESS(rc))
    675                         rc = paParms[3].getUInt64(&data.data.cbTotal);
    676                     if (RT_SUCCESS(rc))
    677                         rc = paParms[4].getUInt32(&data.data.cbMeta);
    678                     if (RT_SUCCESS(rc))
    679                         rc = paParms[5].getPointer(&data.data.pvMetaFmt, &data.data.cbMetaFmt);
    680                     if (RT_SUCCESS(rc))
    681                         rc = paParms[6].getUInt32(&data.data.cbMetaFmt);
    682                     if (RT_SUCCESS(rc))
    683                         rc = paParms[7].getUInt64(&data.data.cObjects);
    684                     if (RT_SUCCESS(rc))
    685                         rc = paParms[8].getUInt32(&data.data.enmCompression);
    686                     if (RT_SUCCESS(rc))
    687                         rc = paParms[9].getUInt32((uint32_t *)&data.data.enmChecksumType);
    688                     if (RT_SUCCESS(rc))
    689                         rc = paParms[10].getPointer(&data.data.pvChecksum, &data.data.cbChecksum);
    690                     if (RT_SUCCESS(rc))
    691                         rc = paParms[11].getUInt32(&data.data.cbChecksum);
     669                    rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     670                    if (RT_SUCCESS(rc))
     671                        rc = HGCMSvcGetU32(&paParms[1], &data.data.uFlags);
     672                    if (RT_SUCCESS(rc))
     673                        rc = HGCMSvcGetU32(&paParms[2], &data.data.uScreenId);
     674                    if (RT_SUCCESS(rc))
     675                        rc = HGCMSvcGetU64(&paParms[3], &data.data.cbTotal);
     676                    if (RT_SUCCESS(rc))
     677                        rc = HGCMSvcGetU32(&paParms[4], &data.data.cbMeta);
     678                    if (RT_SUCCESS(rc))
     679                        rc = HGCMSvcGetPv(&paParms[5], &data.data.pvMetaFmt, &data.data.cbMetaFmt);
     680                    if (RT_SUCCESS(rc))
     681                        rc = HGCMSvcGetU32(&paParms[6], &data.data.cbMetaFmt);
     682                    if (RT_SUCCESS(rc))
     683                        rc = HGCMSvcGetU64(&paParms[7], &data.data.cObjects);
     684                    if (RT_SUCCESS(rc))
     685                        rc = HGCMSvcGetU32(&paParms[8], &data.data.enmCompression);
     686                    if (RT_SUCCESS(rc))
     687                        rc = HGCMSvcGetU32(&paParms[9], (uint32_t *)&data.data.enmChecksumType);
     688                    if (RT_SUCCESS(rc))
     689                        rc = HGCMSvcGetPv(&paParms[10], &data.data.pvChecksum, &data.data.cbChecksum);
     690                    if (RT_SUCCESS(rc))
     691                        rc = HGCMSvcGetU32(&paParms[11], &data.data.cbChecksum);
    692692
    693693                    LogFlowFunc(("fFlags=0x%x, cbTotalSize=%RU64, cObj=%RU64\n",
     
    709709                            RT_ZERO(data);
    710710                            data.hdr.uMagic = CB_MAGIC_DND_GH_SND_DATA;
    711                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    712                             if (RT_SUCCESS(rc))
    713                                 rc = paParms[1].getPointer((void**)&data.data.u.v3.pvData, &data.data.u.v3.cbData);
    714                             if (RT_SUCCESS(rc))
    715                                 rc = paParms[2].getUInt32(&data.data.u.v3.cbData);
    716                             if (RT_SUCCESS(rc))
    717                                 rc = paParms[3].getPointer((void**)&data.data.u.v3.pvChecksum, &data.data.u.v3.cbChecksum);
    718                             if (RT_SUCCESS(rc))
    719                                 rc = paParms[4].getUInt32(&data.data.u.v3.cbChecksum);
     711                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     712                            if (RT_SUCCESS(rc))
     713                                rc = HGCMSvcGetPv(&paParms[1], (void**)&data.data.u.v3.pvData, &data.data.u.v3.cbData);
     714                            if (RT_SUCCESS(rc))
     715                                rc = HGCMSvcGetU32(&paParms[2], &data.data.u.v3.cbData);
     716                            if (RT_SUCCESS(rc))
     717                                rc = HGCMSvcGetPv(&paParms[3], (void**)&data.data.u.v3.pvChecksum, &data.data.u.v3.cbChecksum);
     718                            if (RT_SUCCESS(rc))
     719                                rc = HGCMSvcGetU32(&paParms[4], &data.data.u.v3.cbChecksum);
    720720                            DO_HOST_CALLBACK();
    721721                        }
     
    731731                            RT_ZERO(data);
    732732                            data.hdr.uMagic = CB_MAGIC_DND_GH_SND_DATA;
    733                             rc = paParms[0].getPointer((void**)&data.data.u.v1.pvData, &data.data.u.v1.cbData);
    734                             if (RT_SUCCESS(rc))
    735                                 rc = paParms[1].getUInt32(&data.data.u.v1.cbTotalSize);
     733                            rc = HGCMSvcGetPv(&paParms[0], (void**)&data.data.u.v1.pvData, &data.data.u.v1.cbData);
     734                            if (RT_SUCCESS(rc))
     735                                rc = HGCMSvcGetU32(&paParms[1], &data.data.u.v1.cbTotalSize);
    736736                            DO_HOST_CALLBACK();
    737737                        }
     
    755755                        if (cParms == 4)
    756756                        {
    757                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    758                             if (RT_SUCCESS(rc))
    759                                 rc = paParms[1].getPointer((void**)&data.pszPath, &data.cbPath);
    760                             if (RT_SUCCESS(rc))
    761                                 rc = paParms[2].getUInt32(&data.cbPath);
    762                             if (RT_SUCCESS(rc))
    763                                 rc = paParms[3].getUInt32(&data.fMode);
     757                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     758                            if (RT_SUCCESS(rc))
     759                                rc = HGCMSvcGetPv(&paParms[1], (void**)&data.pszPath, &data.cbPath);
     760                            if (RT_SUCCESS(rc))
     761                                rc = HGCMSvcGetU32(&paParms[2], &data.cbPath);
     762                            if (RT_SUCCESS(rc))
     763                                rc = HGCMSvcGetU32(&paParms[3], &data.fMode);
    764764                        }
    765765                        break;
     
    771771                        if (cParms == 3)
    772772                        {
    773                             rc = paParms[0].getPointer((void**)&data.pszPath, &data.cbPath);
    774                             if (RT_SUCCESS(rc))
    775                                 rc = paParms[1].getUInt32(&data.cbPath);
    776                             if (RT_SUCCESS(rc))
    777                                 rc = paParms[2].getUInt32(&data.fMode);
     773                            rc = HGCMSvcGetPv(&paParms[0], (void**)&data.pszPath, &data.cbPath);
     774                            if (RT_SUCCESS(rc))
     775                                rc = HGCMSvcGetU32(&paParms[1], &data.cbPath);
     776                            if (RT_SUCCESS(rc))
     777                                rc = HGCMSvcGetU32(&paParms[2], &data.fMode);
    778778                        }
    779779                        break;
     
    794794                    data.hdr.uMagic = CB_MAGIC_DND_GH_SND_FILE_HDR;
    795795
    796                     rc = paParms[0].getUInt32(&data.hdr.uContextID);
    797                     if (RT_SUCCESS(rc))
    798                         rc = paParms[1].getPointer((void**)&data.pszFilePath, &data.cbFilePath);
    799                     if (RT_SUCCESS(rc))
    800                         rc = paParms[2].getUInt32(&data.cbFilePath);
    801                     if (RT_SUCCESS(rc))
    802                         rc = paParms[3].getUInt32(&data.fFlags);
    803                     if (RT_SUCCESS(rc))
    804                         rc = paParms[4].getUInt32(&data.fMode);
    805                     if (RT_SUCCESS(rc))
    806                         rc = paParms[5].getUInt64(&data.cbSize);
     796                    rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     797                    if (RT_SUCCESS(rc))
     798                        rc = HGCMSvcGetPv(&paParms[1], (void**)&data.pszFilePath, &data.cbFilePath);
     799                    if (RT_SUCCESS(rc))
     800                        rc = HGCMSvcGetU32(&paParms[2], &data.cbFilePath);
     801                    if (RT_SUCCESS(rc))
     802                        rc = HGCMSvcGetU32(&paParms[3], &data.fFlags);
     803                    if (RT_SUCCESS(rc))
     804                        rc = HGCMSvcGetU32(&paParms[4], &data.fMode);
     805                    if (RT_SUCCESS(rc))
     806                        rc = HGCMSvcGetU64(&paParms[5], &data.cbSize);
    807807
    808808                    LogFlowFunc(("pszPath=%s, cbPath=%RU32, fMode=0x%x, cbSize=%RU64\n",
     
    827827                            data.hdr.uMagic = CB_MAGIC_DND_GH_SND_FILE_DATA;
    828828
    829                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    830                             if (RT_SUCCESS(rc))
    831                                 rc = paParms[1].getPointer((void**)&data.pvData, &data.cbData);
    832                             if (RT_SUCCESS(rc))
    833                                 rc = paParms[2].getUInt32(&data.cbData);
    834                             if (RT_SUCCESS(rc))
    835                                 rc = paParms[3].getPointer((void**)&data.u.v3.pvChecksum, &data.u.v3.cbChecksum);
    836                             if (RT_SUCCESS(rc))
    837                                 rc = paParms[4].getUInt32(&data.u.v3.cbChecksum);
     829                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     830                            if (RT_SUCCESS(rc))
     831                                rc = HGCMSvcGetPv(&paParms[1], (void**)&data.pvData, &data.cbData);
     832                            if (RT_SUCCESS(rc))
     833                                rc = HGCMSvcGetU32(&paParms[2], &data.cbData);
     834                            if (RT_SUCCESS(rc))
     835                                rc = HGCMSvcGetPv(&paParms[3], (void**)&data.u.v3.pvChecksum, &data.u.v3.cbChecksum);
     836                            if (RT_SUCCESS(rc))
     837                                rc = HGCMSvcGetU32(&paParms[4], &data.u.v3.cbChecksum);
    838838
    839839                            LogFlowFunc(("pvData=0x%p, cbData=%RU32\n", data.pvData, data.cbData));
     
    850850                            RT_ZERO(data);
    851851                            data.hdr.uMagic = CB_MAGIC_DND_GH_SND_FILE_DATA;
    852                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
    853                             if (RT_SUCCESS(rc))
    854                                 rc = paParms[1].getPointer((void**)&data.pvData, &data.cbData);
    855                             if (RT_SUCCESS(rc))
    856                                 rc = paParms[2].getUInt32(&data.cbData);
     852                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
     853                            if (RT_SUCCESS(rc))
     854                                rc = HGCMSvcGetPv(&paParms[1], (void**)&data.pvData, &data.cbData);
     855                            if (RT_SUCCESS(rc))
     856                                rc = HGCMSvcGetU32(&paParms[2], &data.cbData);
    857857
    858858                            LogFlowFunc(("cbData=%RU32, pvData=0x%p\n", data.cbData, data.pvData));
     
    870870                            data.hdr.uMagic = CB_MAGIC_DND_GH_SND_FILE_DATA;
    871871                            uint32_t cTmp;
    872                             rc = paParms[0].getPointer((void**)&data.u.v1.pszFilePath, &cTmp);
    873                             if (RT_SUCCESS(rc))
    874                                 rc = paParms[1].getUInt32(&data.u.v1.cbFilePath);
    875                             if (RT_SUCCESS(rc))
    876                                 rc = paParms[2].getPointer((void**)&data.pvData, &cTmp);
    877                             if (RT_SUCCESS(rc))
    878                                 rc = paParms[3].getUInt32(&data.cbData);
    879                             if (RT_SUCCESS(rc))
    880                                 rc = paParms[4].getUInt32(&data.u.v1.fMode);
     872                            rc = HGCMSvcGetPv(&paParms[0], (void**)&data.u.v1.pszFilePath, &cTmp);
     873                            if (RT_SUCCESS(rc))
     874                                rc = HGCMSvcGetU32(&paParms[1], &data.u.v1.cbFilePath);
     875                            if (RT_SUCCESS(rc))
     876                                rc = HGCMSvcGetPv(&paParms[2], (void**)&data.pvData, &cTmp);
     877                            if (RT_SUCCESS(rc))
     878                                rc = HGCMSvcGetU32(&paParms[3], &data.cbData);
     879                            if (RT_SUCCESS(rc))
     880                                rc = HGCMSvcGetU32(&paParms[4], &data.u.v1.fMode);
    881881
    882882                            LogFlowFunc(("pszFilePath=%s, cbData=%RU32, pvData=0x%p, fMode=0x%x\n",
     
    903903                        if (cParms == 2)
    904904                        {
    905                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
     905                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
    906906                            if (RT_SUCCESS(rc))
    907907                            {
    908908                                uint32_t rcOp;
    909                                 rc = paParms[1].getUInt32(&rcOp);
     909                                rc = HGCMSvcGetU32(&paParms[1], &rcOp);
    910910                                if (RT_SUCCESS(rc))
    911911                                    data.rc = rcOp;
     
    921921                        {
    922922                            uint32_t rcOp;
    923                             rc = paParms[0].getUInt32(&rcOp);
     923                            rc = HGCMSvcGetU32(&paParms[0], &rcOp);
    924924                            if (RT_SUCCESS(rc))
    925925                                data.rc = (int32_t)rcOp;
     
    953953                        /* Protocol v3+ at least requires the context ID. */
    954954                        if (cParms == 1)
    955                             rc = paParms[0].getUInt32(&data.hdr.uContextID);
     955                            rc = HGCMSvcGetU32(&paParms[0], &data.hdr.uContextID);
    956956
    957957                        break;
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