/*Disclaimer: This is a machine generated file.*/
/*For modifying any attribute change corresponding XML file */

      #include <pbs_config.h>
      #include <sys/types.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <ctype.h>
      #include "pbs_ifl.h"
      #include "server_limits.h"
      #include <string.h>
      #include "list_link.h"
      #include "attribute.h"
      #include "resource.h"
      #include "pbs_error.h"
      #include "pbs_nodes.h"
      #include "svrfunc.h"
      #include "grunt.h"

      extern int set_node_ct(resource *, attribute *, void *, int, int actmode);
      extern int decode_place(attribute *, char *, char *, char *);
      extern int preempt_targets_action(resource *presc, attribute *pattr, void *pobject, int type, int actmode);
      extern int action_soft_walltime(resource *presc, attribute *pattr, void *pobject, int type, int actmode);
      extern int action_walltime(resource *presc, attribute *pattr, void *pobject, int type, int actmode);
      extern int action_min_walltime(resource *presc, attribute *pattr, void *pobject, int type, int actmode);
      extern int action_max_walltime(resource *presc, attribute *pattr, void *pobject, int type, int actmode);
      extern int zero_or_positive_action  (resource *, attribute *, void *, int, int actmode);
      #ifndef PBS_MOM
      extern int host_action(resource *, attribute *, void *, int, int actmode);
      extern int resc_select_action(resource *, attribute *, void *, int, int);
      #endif /* PBS_MOM */
      /* ordered by guess to put ones most often used at front */

      static resource_def svr_resc_defm[] = {

	{
		"cput",
		decode_time,
		encode_time,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_ALTRUN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"mem",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN | ATR_DFLAG_ANASSN |ATR_DFLAG_CVTSLT,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"walltime",
		decode_time,
		encode_time,
		set_l,
		comp_l,
		free_null,
		action_walltime,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_ALTRUN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"soft_walltime",
		decode_time,
		encode_time,
		set_l,
		comp_l,
		free_null,
		action_soft_walltime,
		MGR_ONLY_SET | ATR_DFLAG_ALTRUN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"min_walltime",
		decode_time,
		encode_time,
		set_l,
		comp_l,
		free_null,
		action_min_walltime,
		READ_WRITE | ATR_DFLAG_ALTRUN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"max_walltime",
		decode_time,
		encode_time,
		set_l,
		comp_l,
		free_null,
		action_max_walltime,
		READ_WRITE | ATR_DFLAG_ALTRUN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"ncpus",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		zero_or_positive_action,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN | ATR_DFLAG_ANASSN | ATR_DFLAG_CVTSLT,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"naccelerators",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN | ATR_DFLAG_ANASSN | ATR_DFLAG_CVTSLT,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"select",
		decode_select,
		encode_str,
		set_str,
		comp_str,
		free_str,
		
#ifdef PBS_MOM
		NULL_FUNC_RESC
#else
		resc_select_action
#endif
      ,
		READ_WRITE,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"place",
		decode_place,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"nodes",
		decode_nodes,
		encode_str,
		set_str,
		comp_str,
		free_str,
		set_node_ct,
		READ_WRITE,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"nodect",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_ONLY | ATR_DFLAG_MGWR | ATR_DFLAG_RASSN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"arch",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_CVTSLT | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"nchunk",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		NO_USER_SET | ATR_DFLAG_CVTSLT,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"vntype",
		decode_arst,
		encode_arst,
		set_arst,
		comp_arst,
		free_arst,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_ARST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		MPIPROCS,
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		zero_or_positive_action,
		READ_WRITE | ATR_DFLAG_RASSN | ATR_DFLAG_CVTSLT,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		OMPTHREADS,
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		zero_or_positive_action,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"cpupercent",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		NO_USER_SET,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"energy",
		decode_f,
		encode_f,
		set_f,
		comp_f,
		free_null,
		NULL_FUNC_RESC,
		NO_USER_SET,
		ATR_TYPE_FLOAT,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"file",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"pmem",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"vmem",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN | ATR_DFLAG_ANASSN | ATR_DFLAG_CVTSLT,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"pvmem",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"nice",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"pcput",
		decode_time,
		encode_time,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"nodemask",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_null,
		NULL_FUNC_RESC,
		NO_USER_SET | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"hpm",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"ssinodes",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"host",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		
#ifdef PBS_MOM
		NULL_FUNC_RESC
#else
		host_action
#endif
      ,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"vnode",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"resc",
		decode_arst,
		encode_arst,
		set_arst,
		comp_arst,
		free_arst,
		NULL_FUNC_RESC,
		READ_WRITE,
		ATR_TYPE_ARST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"software",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"site",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"exec_vnode",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		NO_USER_SET,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"start_time",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		NULL_FUNC_RESC,
		NO_USER_SET,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},

#if PE_MASK != 0
	{
		"pe_mask",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		NO_USER_SET | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
#else
	{
		"noop"
	},
#endif
	{
		"partition",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		NO_USER_SET | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},

#ifndef PBS_MOM
	{
		"aoe",
		decode_arst,
		encode_arst,
		set_arst,
		comp_arst,
		free_arst,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_ARST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
#else
	{
		"noop"
	},
#endif

#ifndef PBS_MOM
	{
		"eoe",
		decode_arst,
		encode_arst,
		set_arst,
		comp_arst,
		free_arst,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_ARST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
#else
	{
		"noop"
	},
#endif
	{
		"preempt_targets",
		decode_arst,
		encode_arst,
		set_arst,
		comp_arst,
		free_arst,
		preempt_targets_action,
		READ_WRITE,
		ATR_TYPE_ARST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"accelerator",
		decode_b,
		encode_b,
		set_b,
		comp_b,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_CVTSLT,
		ATR_TYPE_BOOL,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"accelerator_model",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_CVTSLT,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"accelerator_memory",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN | ATR_DFLAG_ANASSN |ATR_DFLAG_CVTSLT,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"accelerator_group",
		decode_arst,
		encode_arst,
		set_arst,
		comp_arst,
		free_arst,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_CVTSLT,
		ATR_TYPE_ARST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"pstate",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"hbmem",
		decode_size,
		encode_size,
		set_size,
		comp_size,
		free_null,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM | ATR_DFLAG_RASSN | ATR_DFLAG_ANASSN |ATR_DFLAG_CVTSLT,
		ATR_TYPE_SIZE,
		PBS_ENTLIM_NOLIMIT,
		(struct resource_def *)0
	},
	{
		"pgov",
		decode_str,
		encode_str,
		set_str,
		comp_str,
		free_str,
		NULL_FUNC_RESC,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_STR,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"pcap_node",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		zero_or_positive_action,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"pcap_accelerator",
		decode_l,
		encode_l,
		set_l,
		comp_l,
		free_null,
		zero_or_positive_action,
		READ_WRITE | ATR_DFLAG_MOM,
		ATR_TYPE_LONG,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
	{
		"|unknown|",
		decode_unkn,
		encode_unkn,
		set_unkn,
		comp_unkn,
		free_unkn,
		NULL_FUNC_RESC,
		READ_WRITE,
		ATR_TYPE_LIST,
		PBS_ENTLIM_NOLIMIT,
		NULL
	},
};
int svr_resc_size = sizeof(svr_resc_defm) / sizeof(resource_def);
resource_def *svr_resc_def = svr_resc_defm;
int svr_resc_unk = sizeof(svr_resc_defm) / sizeof(resource_def) - 1;