source: trunk/pbs_drmaa/pbs_attrib.gperf @ 4

Revision 4, 7.7 KB checked in by mmamonski, 13 years ago (diff)

Missing Resource_List.mem attribute added

Line 
1%{
2/* $Id: pbs_attrib.gperf 2677 2009-09-08 14:32:22Z mmamonski $ */
3/*
4 *  FedStage DRMAA for PBS Pro
5 *  Copyright (C) 2006-2009  FedStage Systems
6 *
7 *  This program is free software: you can redistribute it and/or modify
8 *  it under the terms of the GNU General Public License as published by
9 *  the Free Software Foundation, either version 3 of the License, or
10 *  (at your option) any later version.
11 *
12 *  This program is distributed in the hope that it will be useful,
13 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 *  GNU General Public License for more details.
16 *
17 *  You should have received a copy of the GNU General Public License
18 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20#ifdef HAVE_CONFIG_H
21#       include <config.h>
22#endif
23
24#include <drmaa_utils/drmaa_attrib.h>
25#include <drmaa_utils/template.h>
26#include <pbs_drmaa/pbs_attrib.h>
27
28#ifndef lint
29static char rcsid[]
30#       ifdef __GNUC__
31                __attribute__ ((unused))
32#       endif
33        = "$Id: pbs_attrib.gperf 2677 2009-09-08 14:32:22Z mmamonski $";
34#endif
35
36extern const fsd_attribute_t pbsdrmaa_pbs_attributes[];
37#define t(code) \
38        ( & pbsdrmaa_pbs_attributes[ code ] )
39%}
40
41%language=ANSI-C
42%includes
43%readonly-tables
44%pic
45%define lookup-function-name pbsdrmaa_pbs_attrib_lookup
46%struct-type
47struct pbs_attrib { int name; const fsd_attribute_t *attr; }
48
49%%
50Execution_Time, t(PBSDRMAA_ATTR_EXECUTION_TIME)
51Checkpoint, t(PBSDRMAA_ATTR_CHECKPOINT)
52Error_Path, t(PBSDRMAA_ATTR_ERROR_PATH)
53group_list, t(PBSDRMAA_ATTR_GROUPS)
54Hold_Types, t(PBSDRMAA_ATTR_HOLD_TYPES)
55Join_Path, t(PBSDRMAA_ATTR_JOIN_FILES)
56Keep_Files, t(PBSDRMAA_ATTR_KEEP_FILES)
57# Resource_List, t(PBSDRMAA_ATTR_RESOURCES)
58Resource_List.cput, t(PBSDRMAA_ATTR_CPU_TIME_LIMIT)
59Resource_List.file, t(PBSDRMAA_ATTR_FILE_SIZE_LIMIT)
60Resource_List.nice, t(PBSDRMAA_ATTR_NICE)
61Resource_List.vmem, t(PBSDRMAA_ATTR_VMEM_LIMIT)
62Resource_List.mem, t(PBSDRMAA_ATTR_MEM_LIMIT)
63Resource_List.pcput, t(PBSDRMAA_ATTR_SINGLE_CPU_TIME_LIMIT)
64Resource_List.pmem, t(PBSDRMAA_ATTR_SINGLE_RSS_LIMIT)
65Resource_List.pvmem, t(PBSDRMAA_ATTR_SINGLE_VMEM_LIMIT)
66Resource_List.walltime, t(PBSDRMAA_ATTR_WALLTIME_LIMIT)
67Resource_List.arch, t(PBSDRMAA_ATTR_ARCHITECTURE)
68Resource_List.host, t(PBSDRMAA_ATTR_HOST)
69Resource_List.nodes, t(PBSDRMAA_ATTR_NODES)
70Resource_List.software, t(PBSDRMAA_ATTR_SOFTWARE)
71Mail_Points, t(PBSDRMAA_ATTR_MAIL_POINTS)
72Output_Path, t(PBSDRMAA_ATTR_OUTPUT_PATH)
73Priority, t(PBSDRMAA_ATTR_PRIORITY)
74destination, t(PBSDRMAA_ATTR_DESITINATION)
75Rerunable, t(PBSDRMAA_ATTR_RERUNABLE)
76job_array_request, t(PBSDRMAA_ATTR_BULK_REQ)
77job_array_id, t(PBSDRMAA_ATTR_BULK_IDX)
78User_List, t(PBSDRMAA_ATTR_USERS)
79Variable_List, t(PBSDRMAA_ATTR_JOB_ENVIRONMENT)
80Account_Name, t(PBSDRMAA_ATTR_ACCOUNT_NAME)
81Mail_Users, t(PBSDRMAA_ATTR_EMAIL)
82Job_Name, t(PBSDRMAA_ATTR_JOB_NAME)
83Shell_Path_List, t(PBSDRMAA_ATTR_SHELL)
84depend, t(PBSDRMAA_ATTR_DEPEND)
85interactive, t(PBSDRMAA_ATTR_INTERACTIVE)
86stagein, t(PBSDRMAA_ATTR_STAGEIN)
87stageout, t(PBSDRMAA_ATTR_STAGEOUT)
88# additional job and general attribute names
89exec_host, t(PBSDRMAA_ATTR_EXECUTION_HOST)
90Job_Owner, t(PBSDRMAA_ATTR_JOB_OWNER)
91resources_used, t(PBSDRMAA_ATTR_RESOURCES_USED)
92job_state, t(PBSDRMAA_ATTR_JOB_STATE)
93queue, t(PBSDRMAA_ATTR_QUEUE)
94server, t(PBSDRMAA_ATTR_SERVER)
95comment, t(PBSDRMAA_ATTR_COMMENT)
96exit_status, t(PBSDRMAA_ATTR_EXIT_STATUS)
97start_time, t(PBSDRMAA_ATTR_START_TIME)
98x, t(PBSDRMAA_ATTR_EXTENSION)
99submit_args, t(PBSDRMAA_ATTR_SUBMIT_ARGS)
100mtime, t(PBSDRMAA_ATTR_MTIME)
101# reservation attributes:
102# reserve_start,       t(PBSDRMAA_ATTR_RESERVATION_START)
103# reserve_end,         t(PBSDRMAA_ATTR_RESERVATION_END)
104# reserve_duration,    t(PBSDRMAA_ATTR_RESERVATION_DURATION)
105# reserve_state,       t(PBSDRMAA_ATTR_RESERVATION_STATE)
106# reserve_substate,    t(PBSDRMAA_ATTR_RESERVATION_SUBSTATE)
107%%
108#undef t
109
110int
111pbsdrmaa_pbs_attrib_by_name( const char *name )
112{
113        const struct pbs_attrib *found;
114        found = pbsdrmaa_pbs_attrib_lookup( name, strlen(name) );
115        if( found )
116                return found->attr->code;
117        else
118                return -1;
119}
120
121static const fsd_attribute_t *
122pbsdrmaa_pbs_template_by_name( const fsd_template_t *self, const char *name )
123{
124        const struct pbs_attrib *found;
125        found = pbsdrmaa_pbs_attrib_lookup( name, strlen(name) );
126        if( found != NULL )
127         {
128                fsd_assert( found->attr - pbsdrmaa_pbs_attributes == found->attr->code );
129                return found->attr;
130         }
131        else
132                fsd_exc_raise_fmt(
133                                FSD_ERRNO_INVALID_ARGUMENT,
134                                "invalid PBS attribute name: %s", name
135                                );
136}
137
138
139static const fsd_attribute_t *
140pbsdrmaa_pbs_template_by_code( const fsd_template_t *self, int code )
141{
142        if( 0 <= code  &&  code < PBSDRMAA_N_PBS_ATTRIBUTES )
143         {
144                fsd_assert( pbsdrmaa_pbs_attributes[code].code == code );
145                return & pbsdrmaa_pbs_attributes[ code ];
146         }
147        else
148                fsd_exc_raise_fmt(
149                                FSD_ERRNO_INVALID_ARGUMENT,
150                                "invalid PBS attribute code: %d", code
151                                );
152}
153
154
155fsd_template_t *
156pbsdrmaa_pbs_template_new(void)
157{
158        return fsd_template_new(
159                        pbsdrmaa_pbs_template_by_name,
160                        pbsdrmaa_pbs_template_by_code,
161                        PBSDRMAA_N_PBS_ATTRIBUTES
162                        );
163}
164
165const fsd_attribute_t pbsdrmaa_pbs_attributes[ PBSDRMAA_N_PBS_ATTRIBUTES ] = {
166        { "Execution_Time", PBSDRMAA_ATTR_EXECUTION_TIME, false },
167        { "Checkpoint", PBSDRMAA_ATTR_CHECKPOINT, false },
168        { "Error_Path", PBSDRMAA_ATTR_ERROR_PATH, false },
169        { "group_list", PBSDRMAA_ATTR_GROUPS, false },
170        { "Hold_Types", PBSDRMAA_ATTR_HOLD_TYPES, false },
171        { "Join_Path", PBSDRMAA_ATTR_JOIN_FILES, false },
172        { "Keep_Files", PBSDRMAA_ATTR_KEEP_FILES, false },
173        { "Resource_List.cput", PBSDRMAA_ATTR_CPU_TIME_LIMIT, false },
174        { "Resource_List.file", PBSDRMAA_ATTR_FILE_SIZE_LIMIT, false },
175        { "Resource_List.nice", PBSDRMAA_ATTR_NICE, false },
176        { "Resource_List.vmem", PBSDRMAA_ATTR_VMEM_LIMIT, false },
177        { "Resource_List.mem", PBSDRMAA_ATTR_MEM_LIMIT, false },
178        { "Resource_List.pcput", PBSDRMAA_ATTR_SINGLE_CPU_TIME_LIMIT, false },
179        { "Resource_List.pmem", PBSDRMAA_ATTR_SINGLE_RSS_LIMIT, false },
180        { "Resource_List.pvmem", PBSDRMAA_ATTR_SINGLE_VMEM_LIMIT, false },
181        { "Resource_List.walltime", PBSDRMAA_ATTR_WALLTIME_LIMIT, false },
182        { "Resource_List.arch", PBSDRMAA_ATTR_ARCHITECTURE, false },
183        { "Resource_List.host", PBSDRMAA_ATTR_HOST, false },
184        { "Resource_List.nodes", PBSDRMAA_ATTR_NODES, false },
185        { "Resource_List.software", PBSDRMAA_ATTR_SOFTWARE, false },
186        { "Mail_Points", PBSDRMAA_ATTR_MAIL_POINTS, false },
187        { "Output_Path", PBSDRMAA_ATTR_OUTPUT_PATH, false },
188        { "Priority", PBSDRMAA_ATTR_PRIORITY, false },
189        { "destination", PBSDRMAA_ATTR_DESITINATION, false },
190        { "Rerunable", PBSDRMAA_ATTR_RERUNABLE, false },
191        { "job_array_request", PBSDRMAA_ATTR_BULK_REQ, false },
192        { "job_array_id", PBSDRMAA_ATTR_BULK_IDX, false },
193        { "User_List", PBSDRMAA_ATTR_USERS, false },
194        { "Variable_List", PBSDRMAA_ATTR_JOB_ENVIRONMENT, false },
195        { "Account_Name", PBSDRMAA_ATTR_ACCOUNT_NAME, false },
196        { "Mail_Users", PBSDRMAA_ATTR_EMAIL, false },
197        { "Job_Name", PBSDRMAA_ATTR_JOB_NAME, false },
198        { "Shell_Path_List", PBSDRMAA_ATTR_SHELL, false },
199        { "depend", PBSDRMAA_ATTR_DEPEND, false },
200        { "interactive", PBSDRMAA_ATTR_INTERACTIVE, false },
201        { "stagein", PBSDRMAA_ATTR_STAGEIN, false },
202        { "stageout", PBSDRMAA_ATTR_STAGEOUT, false },
203        { "exec_host", PBSDRMAA_ATTR_EXECUTION_HOST, false },
204        { "Job_Owner", PBSDRMAA_ATTR_JOB_OWNER, false },
205        { "resources_used", PBSDRMAA_ATTR_RESOURCES_USED, false },
206        { "job_state", PBSDRMAA_ATTR_JOB_STATE, false },
207        { "queue", PBSDRMAA_ATTR_QUEUE, false },
208        { "server", PBSDRMAA_ATTR_SERVER, false },
209        { "comment", PBSDRMAA_ATTR_COMMENT, false },
210        { "exit_status", PBSDRMAA_ATTR_EXIT_STATUS, false },
211        { "start_time", PBSDRMAA_ATTR_START_TIME, false },
212        { "x", PBSDRMAA_ATTR_EXTENSION, false },
213        { "submit_args", PBSDRMAA_ATTR_SUBMIT_ARGS, false },
214        { "mtime", PBSDRMAA_ATTR_MTIME, false },
215};
216
217/* vim: set ft=c: */
Note: See TracBrowser for help on using the repository browser.