/* *********************************************************************** */ extern int slurm_proctrack_init(void) { int retval = SLURM_SUCCESS; char *plugin_type = "proctrack"; char *type = NULL; if (init_run && g_context) return retval; slurm_mutex_lock(&g_context_lock); if (g_context) goto done; type = slurm_get_proctrack_type(); g_context = plugin_context_create( plugin_type, type, (void **)&ops, syms, sizeof(syms)); if (!g_context) { error("cannot create %s context for %s", plugin_type, type); retval = SLURM_ERROR; goto done; } init_run = true; done: slurm_mutex_unlock(&g_context_lock); xfree(type); return retval; }
/* *********************************************************************** */ extern int slurm_proctrack_init(void) { int retval = SLURM_SUCCESS; char *proctrack_type = NULL; slurm_mutex_lock(&g_proctrack_context_lock); if (g_proctrack_context) goto done; proctrack_type = slurm_get_proctrack_type(); g_proctrack_context = _proctrack_context_create(proctrack_type); if (g_proctrack_context == NULL) { error("cannot create proctrack context for %s", proctrack_type); retval = SLURM_ERROR; goto done; } if (_proctrack_get_ops(g_proctrack_context) == NULL) { error("cannot resolve proctrack plugin operations for %s", proctrack_type); _proctrack_context_destroy(g_proctrack_context); g_proctrack_context = NULL; retval = SLURM_ERROR; } done: slurm_mutex_unlock(&g_proctrack_context_lock); xfree(proctrack_type); return retval; }
extern int jobacct_gather_init(void) { char *plugin_type = "jobacct_gather"; char *type = NULL; int retval=SLURM_SUCCESS; if (init_run && g_context) return retval; slurm_mutex_lock(&g_context_lock); if (g_context) goto done; type = slurm_get_jobacct_gather_type(); g_context = plugin_context_create( plugin_type, type, (void **)&ops, syms, sizeof(syms)); if (!g_context) { error("cannot create %s context for %s", plugin_type, type); retval = SLURM_ERROR; goto done; } if (!strcasecmp(type, "jobacct_gather/none")) { plugin_polling = false; goto done; } plugin_type = type; type = slurm_get_proctrack_type(); if (!strcasecmp(type, "proctrack/pgid")) { info("WARNING: We will use a much slower algorithm with " "proctrack/pgid, use Proctracktype=proctrack/linuxproc " "or some other proctrack when using %s", plugin_type); pgid_plugin = true; } xfree(type); xfree(plugin_type); type = slurm_get_accounting_storage_type(); if (!strcasecmp(type, ACCOUNTING_STORAGE_TYPE_NONE)) { error("WARNING: Even though we are collecting accounting " "information you have asked for it not to be stored " "(%s) if this is not what you have in mind you will " "need to change it.", ACCOUNTING_STORAGE_TYPE_NONE); } init_run = true; done: slurm_mutex_unlock(&g_context_lock); xfree(type); return(retval); }
/* * init() is called when the plugin is loaded, before any other functions * are called. Put global initialization here. */ extern int init ( void ) { char *temp = slurm_get_proctrack_type(); if(!strcasecmp(temp, "proctrack/pgid")) { info("WARNING: We will use a much slower algorithm with " "proctrack/pgid, use Proctracktype=proctrack/aix " "with %s", plugin_name); pgid_plugin = true; } xfree(temp); temp = slurm_get_accounting_storage_type(); if(!strcasecmp(temp, ACCOUNTING_STORAGE_TYPE_NONE)) { error("WARNING: Even though we are collecting accounting " "information you have asked for it not to be stored " "(%s) if this is not what you have in mind you will " "need to change it.", ACCOUNTING_STORAGE_TYPE_NONE); } xfree(temp); verbose("%s loaded", plugin_name); return SLURM_SUCCESS; }