VirtualBox

Changeset 59893 in vbox for trunk


Ignore:
Timestamp:
Mar 2, 2016 9:45:03 AM (9 years ago)
Author:
vboxsync
Message:

FE/VBoxBalloonCtrl: Added "--disable-<module>" to disable specific modules if not wanted/needed.

Location:
trunk/src/VBox/Frontends/VBoxBalloonCtrl
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModBallooning.cpp

    r57358 r59893  
    55
    66/*
    7  * Copyright (C) 2011-2013 Oracle Corporation
     7 * Copyright (C) 2011-2016 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2929using namespace com;
    3030
    31 #define VBOX_MOD_BALLOONING_NAME "balloonctrl"
     31#define VBOX_MOD_BALLOONING_NAME "balloon"
    3232
    3333/**
  • trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdog.cpp

    r57358 r59893  
    55
    66/*
    7  * Copyright (C) 2011-2013 Oracle Corporation
     7 * Copyright (C) 2011-2016 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    9090 * The details of the services that has been compiled in.
    9191 */
    92 static struct
     92typedef struct VBOXWATCHDOGMOD
    9393{
    9494    /** Pointer to the service descriptor. */
     
    9898    /** Whether the module is enabled or not. */
    9999    bool            fEnabled;
    100 } g_aModules[] =
     100} VBOXWATCHDOGMOD, *PVBOXWATCHDOGMOD;
     101
     102static VBOXWATCHDOGMOD g_aModules[] =
    101103{
    102104    { &g_ModBallooning, false /* Pre-inited */, true /* Enabled */ },
     
    106108enum GETOPTDEF_WATCHDOG
    107109{
    108     GETOPTDEF_WATCHDOG_DRYRUN = 1000
     110    GETOPTDEF_WATCHDOG_DISABLE_MODULE = 1000,
     111    GETOPTDEF_WATCHDOG_DRYRUN
    109112};
    110113
     
    117120#endif
    118121    /** For displayHelp(). */
    119     { "--dryrun",               GETOPTDEF_WATCHDOG_DRYRUN,                 RTGETOPT_REQ_NOTHING },
    120     { "--help",                 'h',                                       RTGETOPT_REQ_NOTHING },
    121     { "--verbose",              'v',                                       RTGETOPT_REQ_NOTHING },
    122     { "--pidfile",              'P',                                       RTGETOPT_REQ_STRING },
    123     { "--logfile",              'F',                                       RTGETOPT_REQ_STRING },
    124     { "--logrotate",            'R',                                       RTGETOPT_REQ_UINT32 },
    125     { "--logsize",              'S',                                       RTGETOPT_REQ_UINT64 },
    126     { "--loginterval",          'I',                                       RTGETOPT_REQ_UINT32 }
     122    { "--disable-<module>",     GETOPTDEF_WATCHDOG_DISABLE_MODULE, RTGETOPT_REQ_NOTHING },
     123    { "--dryrun",               GETOPTDEF_WATCHDOG_DRYRUN,         RTGETOPT_REQ_NOTHING },
     124    { "--help",                 'h',                               RTGETOPT_REQ_NOTHING },
     125    { "--verbose",              'v',                               RTGETOPT_REQ_NOTHING },
     126    { "--pidfile",              'P',                               RTGETOPT_REQ_STRING },
     127    { "--logfile",              'F',                               RTGETOPT_REQ_STRING },
     128    { "--logrotate",            'R',                               RTGETOPT_REQ_UINT32 },
     129    { "--logsize",              'S',                               RTGETOPT_REQ_UINT64 },
     130    { "--loginterval",          'I',                               RTGETOPT_REQ_UINT32 }
    127131};
    128132
     
    629633
    630634    for (unsigned j = 0; j < RT_ELEMENTS(g_aModules); j++)
    631         if (g_aModules[j].fEnabled)
    632         {
    633             rc = g_aModules[j].pDesc->pfnInit();
    634             if (RT_FAILURE(rc))
     635    {
     636        const PVBOXWATCHDOGMOD pMod = &g_aModules[j];
     637        if (pMod->fEnabled)
     638        {
     639            int rc2 = pMod->pDesc->pfnInit();
     640            if (RT_FAILURE(rc2))
    635641            {
    636                 if (rc != VERR_SERVICE_DISABLED)
     642                if (rc2 != VERR_SERVICE_DISABLED)
    637643                {
    638                     serviceLog("Module '%s' failed to initialize: %Rrc\n",
    639                                g_aModules[j].pDesc->pszName, rc);
     644                    serviceLog("Module '%s' failed to initialize: %Rrc\n", pMod->pDesc->pszName, rc2);
    640645                    return rc;
    641646                }
    642                 g_aModules[j].fEnabled = false;
    643                 serviceLog(0, "Module '%s' was disabled because of missing functionality\n",
    644                            g_aModules[j].pDesc->pszName);
     647                pMod->fEnabled = false;
     648                serviceLog("Module '%s' was disabled because of missing functionality\n", pMod->pDesc->pszName);
    645649
    646650            }
    647651        }
     652        else
     653            serviceLog("Module '%s' disabled, skipping ...\n", pMod->pDesc->pszName);
     654    }
    648655
    649656    return rc;
     
    847854        switch (g_aOptions[i].iShort)
    848855        {
     856            case GETOPTDEF_WATCHDOG_DISABLE_MODULE:
     857                pcszDescr = "Disables a module. See module list for built-in modules.";
     858                break;
     859
    849860            case GETOPTDEF_WATCHDOG_DRYRUN:
    850861                pcszDescr = "Dryrun mode -- do not perform any actions.";
     
    887898    {
    888899        if (g_aModules[j].pDesc->pszOptions)
    889             RTPrintf("%s", g_aModules[j].pDesc->pszOptions);
     900            RTStrmPrintf(g_pStdErr, "%s", g_aModules[j].pDesc->pszOptions);
    890901    }
    891902
    892903    /** @todo Change VBOXBALLOONCTRL_RELEASE_LOG to WATCHDOG*. */
    893904    RTStrmPrintf(g_pStdErr, "\nUse environment variable VBOXBALLOONCTRL_RELEASE_LOG for logging options.\n");
     905
     906    RTStrmPrintf(g_pStdErr, "\nValid module names are: ");
     907    for (unsigned j = 0; j < RT_ELEMENTS(g_aModules); j++)
     908    {
     909        if (j > 0)
     910            RTStrmPrintf(g_pStdErr, ", ");
     911        RTStrmPrintf(g_pStdErr, "%s", g_aModules[j].pDesc->pszName);
     912    }
     913    RTStrmPrintf(g_pStdErr, "\n\n");
    894914}
    895915
     
    10261046                bool fFound = false;
    10271047
    1028                 /** @todo Add "--disable-<module>" etc. here! */
     1048                char szModDisable[64];
     1049                for (unsigned j = 0; !fFound && j < RT_ELEMENTS(g_aModules); j++)
     1050                {
     1051                    if (!RTStrPrintf(szModDisable, sizeof(szModDisable), "--disable-%s", g_aModules[j].pDesc->pszName))
     1052                        continue;
     1053
     1054                    if (!RTStrICmp(szModDisable, ValueUnion.psz))
     1055                    {
     1056                        g_aModules[j].fEnabled = false;
     1057                        fFound = true;
     1058                    }
     1059                }
    10291060
    10301061                if (!fFound)
     
    10361067                    for (unsigned j = 0; !fFound && j < RT_ELEMENTS(g_aModules); j++)
    10371068                    {
     1069                        if (!g_aModules[j].fEnabled)
     1070                            continue;
     1071
    10381072                        int iArgCnt = argc - GetState.iNext + 1;
    10391073                        int iArgIndex = GetState.iNext - 1;
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