source: branches/2.0/drmaa2_utils/drmaa_utils/drmaa2.h @ 77

Revision 77, 18.2 KB checked in by mmamonski, 12 years ago (diff)

DRMAA 2.0 utils - first skeleton

Line 
1#include <time.h>
2
3#ifndef DRMAA2_H
4#define DRMAA2_H
5
6typedef enum drmaa2_jstate {
7  DRMAA2_UNDETERMINED                =  0,
8  DRMAA2_QUEUED                      =  1,
9  DRMAA2_QUEUED_HELD                 =  2,
10  DRMAA2_RUNNING                     =  3,
11  DRMAA2_SUSPENDED                   =  4,
12  DRMAA2_REQUEUED                    =  5,
13  DRMAA2_REQUEUED_HELD               =  6,
14  DRMAA2_DONE                        =  7,
15  DRMAA2_FAILED                      =  8
16} drmaa2_jstate;
17
18typedef enum drmaa2_os {
19  DRMAA2_OTHER_OS                    =  0,
20  DRMAA2_AIX                         =  1,
21  DRMAA2_BSD                         =  2,
22  DRMAA2_LINUX                       =  3,
23  DRMAA2_HPUX                        =  4,
24  DRMAA2_IRIX                        =  5,
25  DRMAA2_MACOS                       =  6,
26  DRMAA2_SUNOS                       =  7,
27  DRMAA2_TRU64                       =  8,
28  DRMAA2_UNIXWARE                    =  9,
29  DRMAA2_WIN                         = 10,
30  DRMAA2_WINNT                       = 11
31} drmaa2_os;
32
33typedef enum drmaa2_cpu {
34  DRMAA2_OTHER_CPU                   =  0,
35  DRMAA2_ALPHA                       =  1,
36  DRMAA2_ARM                         =  2,
37  DRMAA2_ARM64                       =  3,
38  DRMAA2_CELL                        =  4,
39  DRMAA2_PARISC                      =  5,
40  DRMAA2_PARISC64                    =  6,
41  DRMAA2_X86                         =  7,
42  DRMAA2_X64                         =  8,
43  DRMAA2_IA64                        =  9,
44  DRMAA2_MIPS                        = 10,
45  DRMAA2_MIPS64                      = 11,
46  DRMAA2_PPC                         = 12,
47  DRMAA2_PPC64                       = 13,
48  DRMAA2_SPARC                       = 14,
49  DRMAA2_SPARC64                     = 15
50} drmaa2_cpu;
51
52typedef enum drmaa2_limit {
53  DRMAA2_CORE_FILE_SIZE              =  0,
54  DRMAA2_CPU_TIME                    =  1,
55  DRMAA2_DATA_SIZE                   =  2,
56  DRMAA2_FILE_SIZE                   =  3,
57  DRMAA2_OPEN_FILES                  =  4,
58  DRMAA2_STACK_SIZE                  =  5,
59  DRMAA2_VIRTUAL_MEMORY              =  6,
60  DRMAA2_WALLCLOCK_TIME              =  7
61} drmaa2_limit;
62
63typedef enum drmaa2_event {
64  DRMAA2_NEW_STATE                   =  0,
65  DRMAA2_MIGRATED                    =  1,
66  DRMAA2_ATTRIBUTE_CHANGE            =  2
67} drmaa2_event;
68
69typedef enum drmaa2_capability {
70  DRMAA2_ADVANCE_RESERVATION         =  0,
71  DRMAA2_RESERVE_SLOTS               =  1,
72  DRMAA2_CALLBACK                    =  2,
73  DRMAA2_BULK_JOBS_MAXPARALLEL       =  3,
74  DRMAA2_JT_EMAIL                    =  4,
75  DRMAA2_JT_STAGING                  =  5,
76  DRMAA2_JT_DEADLINE                 =  6,
77  DRMAA2_JT_MAXSLOTS                 =  7,
78  DRMAA2_JT_ACCOUNTINGID             =  8,
79  DRMAA2_RT_STARTNOW                 =  9,
80  DRMAA2_RT_DURATION                 = 10,
81  DRMAA2_RT_MACHINEOS                = 11,
82  DRMAA2_RT_MACHINEARCH              = 12
83} drmaa2_capability;
84
85typedef enum drmaa2_bool {
86  DRMAA2_FALSE                       =  0,
87  DRMAA2_TRUE                        =  1
88} drmaa2_bool;
89
90typedef enum drmaa2_error {
91  DRMAA2_SUCCESS                 =  0,
92  DRMAA2_DENIED_BY_DRMS          =  1,
93  DRMAA2_DRM_COMMUNICATION       =  2,
94  DRMAA2_TRY_LATER               =  3,
95  DRMAA2_SESSION_MANAGEMENT      =  4,
96  DRMAA2_TIMEOUT                 =  5,
97  DRMAA2_INTERNAL                =  6,
98  DRMAA2_INVALID_ARGUMENT        =  7,
99  DRMAA2_INVALID_SESSION         =  8,
100  DRMAA2_INVALID_STATE           =  9,
101  DRMAA2_OUT_OF_RESOURCE         = 10,
102  DRMAA2_UNSUPPORTED_ATTRIBUTE   = 11,
103  DRMAA2_UNSUPPORTED_OPERATION   = 12,
104  DRMAA2_IMPLEMENTATION_SPECIFIC = 13,
105  DRMAA2_LASTERROR               = 14
106} drmaa2_error;
107
108typedef char * drmaa2_string;
109void drmaa2_string_free(drmaa2_string *);
110
111drmaa2_error  drmaa2_lasterror(void);
112drmaa2_string drmaa2_lasterror_text(void);
113
114struct drmaa2_list_s;        /*forward*/
115typedef struct drmaa2_list_s * drmaa2_list;
116typedef struct drmaa2_list_s * drmaa2_string_list;
117typedef struct drmaa2_list_s * drmaa2_j_list;
118typedef struct drmaa2_list_s * drmaa2_queueinfo_list;
119typedef struct drmaa2_list_s * drmaa2_machineinfo_list;
120typedef struct drmaa2_list_s * drmaa2_slotinfo_list;
121typedef struct drmaa2_list_s * drmaa2_r_list;
122
123typedef enum drmaa2_listtype {
124  DRMAA2_STRINGLIST,       
125  DRMAA2_JOBLIST,
126  DRMAA2_QUEUEINFOLIST,
127  DRMAA2_MACHINEINFOLIST,
128  DRMAA2_SLOTINFOLIST,
129  DRMAA2_RESERVATIONLIST
130} drmaa2_listtype;
131
132typedef void (*drmaa2_list_entryfree)(void **value);
133drmaa2_list  drmaa2_list_create (const drmaa2_listtype t, const drmaa2_list_entryfree callback);
134void         drmaa2_list_free   (      drmaa2_list * l);
135const void * drmaa2_list_get    (const drmaa2_list l, long pos);
136drmaa2_error drmaa2_list_add    (      drmaa2_list l, const void * value);
137drmaa2_error drmaa2_list_del    (      drmaa2_list l, long pos);
138long         drmaa2_list_size   (const drmaa2_list l);
139
140struct drmaa2_dict_s;        /*forward*/
141typedef struct drmaa2_dict_s * drmaa2_dict;
142
143typedef void (*drmaa2_dict_entryfree)(char **key, char **val);
144drmaa2_dict         drmaa2_dict_create (const drmaa2_dict_entryfree callback);
145void                drmaa2_dict_free   (      drmaa2_dict * d);
146drmaa2_string_list  drmaa2_dict_list   (const drmaa2_dict d);           
147drmaa2_bool         drmaa2_dict_has    (const drmaa2_dict d, const char * key);
148const char *        drmaa2_dict_get    (const drmaa2_dict d, const char * key);
149drmaa2_error        drmaa2_dict_del    (      drmaa2_dict d, const char * key);
150drmaa2_error        drmaa2_dict_set    (      drmaa2_dict d, const char * key, const char * val);
151
152#define  DRMAA2_ZERO_TIME       ((time_t)  0)
153#define  DRMAA2_INFINITE_TIME   ((time_t) -1)
154#define  DRMAA2_NOW             ((time_t) -2)
155#define  DRMAA2_HOME_DIR        "$DRMAA2_HOME_DIR$"
156#define  DRMAA2_WORKING_DIR     "$DRMAA2_WORKING_DIR$"
157#define  DRMAA2_INDEX           "$DRMAA2_INDEX$"
158
159#define  DRMAA2_UNSET_BOOL      DRMAA2_FALSE
160#define  DRMAA2_UNSET_STRING    NULL   
161#define  DRMAA2_UNSET_NUM       -1     
162#define  DRMAA2_UNSET_ENUM      -1
163#define  DRMAA2_UNSET_LIST      NULL
164#define  DRMAA2_UNSET_DICT      NULL
165#define  DRMAA2_UNSET_TIME      ((time_t) -3)
166#define  DRMAA2_UNSET_CALLBACK  NULL   
167#define  DRMAA2_UNSET_JINFO     NULL
168
169
170typedef struct {
171  drmaa2_string      jobId;
172  int                exitStatus;       
173  drmaa2_string      terminatingSignal;
174  drmaa2_string      annotation;
175  drmaa2_jstate      jobState;
176  drmaa2_string      jobSubState;
177  drmaa2_string_list allocatedMachines;
178  drmaa2_string      submissionMachine;
179  drmaa2_string      jobOwner;
180  long long          slots;
181  drmaa2_string      queueName;
182  time_t             wallclockTime;
183  long long          cpuTime;
184  time_t             submissionTime;
185  time_t             dispatchTime;
186  time_t             finishTime;
187} drmaa2_jinfo_s;
188typedef drmaa2_jinfo_s * drmaa2_jinfo;
189
190drmaa2_jinfo drmaa2_jinfo_create (void);
191void         drmaa2_jinfo_free   (drmaa2_jinfo * ji);
192
193typedef struct {
194  drmaa2_string        machineName;
195  long long            slots;
196} drmaa2_slotinfo_s;
197typedef drmaa2_slotinfo_s * drmaa2_slotinfo;
198
199void drmaa2_slotinfo_free   (drmaa2_slotinfo * si);
200
201typedef struct {
202  drmaa2_string        reservationId;
203  drmaa2_string        reservationName;
204  time_t               reservedStartTime;
205  time_t               reservedEndTime;
206  drmaa2_string_list   usersACL;
207  long long            reservedSlots;
208  drmaa2_slotinfo_list reservedMachines;
209} drmaa2_rinfo_s;
210typedef drmaa2_rinfo_s * drmaa2_rinfo;
211
212void drmaa2_rinfo_free   (drmaa2_rinfo * ri);
213
214typedef struct {
215  drmaa2_string      remoteCommand;         
216  drmaa2_string_list args;         
217  drmaa2_bool        submitAsHold;
218  drmaa2_bool        rerunnable;
219  drmaa2_dict        jobEnvironment;       
220  drmaa2_string      workingDirectory;       
221  drmaa2_string      jobCategory;           
222  drmaa2_string_list email;           
223  drmaa2_bool        emailOnStarted;
224  drmaa2_bool        emailOnTerminated;
225  drmaa2_string      jobName;             
226  drmaa2_string      inputPath;           
227  drmaa2_string      outputPath;           
228  drmaa2_string      errorPath;           
229  drmaa2_bool        joinFiles;
230  drmaa2_string      reservationId;         
231  drmaa2_string      queueName;           
232  long long          minSlots;             
233  long long          maxSlots;             
234  long long          priority;             
235  drmaa2_string_list candidateMachines; 
236  long long          minPhysMemory;           
237  drmaa2_os          machineOS;       
238  drmaa2_cpu         machineArch;     
239  time_t             startTime;         
240  time_t             deadlineTime;       
241  drmaa2_dict        stageInFiles;       
242  drmaa2_dict        stageOutFiles;       
243  drmaa2_dict        resourceLimits;     
244  drmaa2_string      accountingId;         
245} drmaa2_jtemplate_s;
246typedef drmaa2_jtemplate_s * drmaa2_jtemplate;
247
248drmaa2_jtemplate drmaa2_jtemplate_create   (void);
249void             drmaa2_jtemplate_free     (drmaa2_jtemplate * jt);
250
251typedef struct {
252  drmaa2_string      reservationName;         
253  time_t             startTime;         
254  time_t             endTime;         
255  time_t             duration;         
256  long long          minSlots;             
257  long long          maxSlots;
258  drmaa2_string      jobCategory;
259  drmaa2_string_list usersACL;           
260  drmaa2_string_list candidateMachines; 
261  long long          minPhysMemory;           
262  drmaa2_os          machineOS;       
263  drmaa2_cpu         machineArch;     
264} drmaa2_rtemplate_s;
265typedef drmaa2_rtemplate_s * drmaa2_rtemplate;
266
267drmaa2_rtemplate     drmaa2_rtemplate_create (void);
268void                 drmaa2_rtemplate_free   (drmaa2_rtemplate * rt);
269
270typedef struct {
271  drmaa2_event   event;
272  drmaa2_string  jobId;
273  drmaa2_string  sessionName;
274  drmaa2_jstate  jobState;
275} drmaa2_notification_s;
276typedef drmaa2_notification_s * drmaa2_notification;
277
278void drmaa2_notification_free   (drmaa2_notification * n);
279
280typedef struct {
281  drmaa2_string                name;
282} drmaa2_queueinfo_s;
283typedef drmaa2_queueinfo_s * drmaa2_queueinfo;
284
285void drmaa2_queueinfo_free   (drmaa2_queueinfo * qi);
286
287typedef struct {
288  drmaa2_string                major;
289  drmaa2_string                minor;
290} drmaa2_version_s;
291typedef drmaa2_version_s * drmaa2_version;
292
293void drmaa2_version_free   (drmaa2_version * v);
294
295typedef struct {
296  drmaa2_string   name; 
297  drmaa2_bool     available;   
298  long long       sockets;     
299  long long       coresPerSocket;
300  long long       threadsPerCore; 
301  float           load; 
302  long long       physMemory;
303  long long       virtMemory;   
304  drmaa2_os       machineOS; 
305  drmaa2_version  machineOSVersion;
306  drmaa2_cpu      machineArch;
307} drmaa2_machineinfo_s;
308typedef drmaa2_machineinfo_s * drmaa2_machineinfo;
309
310void drmaa2_machineinfo_free   (drmaa2_machineinfo * mi);
311
312drmaa2_string_list drmaa2_jtemplate_impl_spec     (void);
313drmaa2_string_list drmaa2_jinfo_impl_spec         (void);
314drmaa2_string_list drmaa2_rtemplate_impl_spec     (void);
315drmaa2_string_list drmaa2_rinfo_impl_spec         (void);
316drmaa2_string_list drmaa2_queueinfo_impl_spec     (void);
317drmaa2_string_list drmaa2_machineinfo_impl_spec   (void);
318drmaa2_string_list drmaa2_notification_impl_spec  (void);
319
320drmaa2_string drmaa2_get_instance_value (const void * instance, const char * name);
321drmaa2_string drmaa2_describe_attribute (const void * instance, const char * name);
322drmaa2_error  drmaa2_set_instance_value (      void * instance, const char * name, const char * value);
323
324typedef void (*drmaa2_callback)(drmaa2_notification * notification);
325
326struct drmaa2_jsession_s; /*forward*/
327struct drmaa2_rsession_s; /*forward*/
328struct drmaa2_msession_s; /*forward*/
329struct drmaa2_j_s;            /*forward*/
330struct drmaa2_jarray_s;   /*forward*/
331struct drmaa2_r_s;        /*forward*/
332
333typedef struct drmaa2_jsession_s * drmaa2_jsession;
334typedef struct drmaa2_rsession_s * drmaa2_rsession;
335typedef struct drmaa2_msession_s * drmaa2_msession;
336typedef struct drmaa2_j_s        * drmaa2_j;
337typedef struct drmaa2_jarray_s   * drmaa2_jarray;
338typedef struct drmaa2_r_s        * drmaa2_r;
339
340void drmaa2_jsession_free(drmaa2_jsession * js);
341void drmaa2_rsession_free(drmaa2_rsession * rs);
342void drmaa2_msession_free(drmaa2_msession * ms);
343void drmaa2_j_free       (drmaa2_j * j);
344void drmaa2_jarray_free  (drmaa2_jarray * ja);
345void drmaa2_r_free       (drmaa2_r * r);
346
347drmaa2_string  drmaa2_rsession_get_contact          (const drmaa2_rsession rs);
348drmaa2_string  drmaa2_rsession_get_session_name     (const drmaa2_rsession rs);
349drmaa2_r       drmaa2_rsession_get_reservation      (const drmaa2_rsession rs, const drmaa2_string reservationId);
350drmaa2_r       drmaa2_rsession_request_reservation  (const drmaa2_rsession rs, const drmaa2_rtemplate rt);
351drmaa2_r_list  drmaa2_rsession_get_reservations     (const drmaa2_rsession rs);
352
353drmaa2_string     drmaa2_r_get_id                   (const drmaa2_r r);
354drmaa2_string     drmaa2_r_get_session_name         (const drmaa2_r r);
355drmaa2_rtemplate  drmaa2_r_get_reservation_template (const drmaa2_r r);
356drmaa2_rinfo      drmaa2_r_get_info                 (const drmaa2_r r);
357drmaa2_error      drmaa2_r_terminate                (drmaa2_r r);
358
359drmaa2_string    drmaa2_jarray_get_id            (const drmaa2_jarray ja);
360drmaa2_j_list    drmaa2_jarray_get_jobs          (const drmaa2_jarray ja);
361drmaa2_string    drmaa2_jarray_get_session_name  (const drmaa2_jarray ja);
362drmaa2_jtemplate drmaa2_jarray_get_job_template  (const drmaa2_jarray ja);
363drmaa2_error     drmaa2_jarray_suspend           (drmaa2_jarray ja);
364drmaa2_error     drmaa2_jarray_resume            (drmaa2_jarray ja);
365drmaa2_error     drmaa2_jarray_hold              (drmaa2_jarray ja);
366drmaa2_error     drmaa2_jarray_release           (drmaa2_jarray ja);
367drmaa2_error     drmaa2_jarray_terminate         (drmaa2_jarray ja);
368
369drmaa2_string       drmaa2_jsession_get_contact         (const drmaa2_jsession js);
370drmaa2_string       drmaa2_jsession_get_session_name    (const drmaa2_jsession js);
371drmaa2_string_list  drmaa2_jsession_get_job_categories  (const drmaa2_jsession js);
372drmaa2_j_list       drmaa2_jsession_get_jobs            (const drmaa2_jsession js,
373                                                         const drmaa2_jinfo filter);
374drmaa2_jarray       drmaa2_jsession_get_job_array       (const drmaa2_jsession js,
375                                                         const drmaa2_string jobarrayId);
376drmaa2_j            drmaa2_jsession_run_job             (const drmaa2_jsession js,
377                                                         const drmaa2_jtemplate jt);
378drmaa2_jarray       drmaa2_jsession_run_bulk_jobs       (const drmaa2_jsession js,
379                                                         const drmaa2_jtemplate jt,
380                                                         unsigned long begin_index,
381                                                         unsigned long end_index,
382                                                         unsigned long step,
383                                                         unsigned long max_parallel);
384drmaa2_j            drmaa2_jsession_wait_any_started    (const drmaa2_jsession js,
385                                                         const drmaa2_j_list l,
386                                                         const time_t timeout);
387drmaa2_j            drmaa2_jsession_wait_any_terminated (const drmaa2_jsession js,
388                                                         const drmaa2_j_list l,
389                                                         const time_t timeout);
390
391drmaa2_string      drmaa2_j_get_id            (const drmaa2_j j);
392drmaa2_string      drmaa2_j_get_session_name  (const drmaa2_j j);
393drmaa2_jtemplate   drmaa2_j_get_jt            (const drmaa2_j j);
394drmaa2_error       drmaa2_j_suspend           (drmaa2_j j);
395drmaa2_error       drmaa2_j_resume            (drmaa2_j j);
396drmaa2_error       drmaa2_j_hold              (drmaa2_j j);
397drmaa2_error       drmaa2_j_release           (drmaa2_j j);
398drmaa2_error       drmaa2_j_terminate         (drmaa2_j j);
399drmaa2_jstate      drmaa2_j_get_state         (const drmaa2_j j, drmaa2_string * substate);
400drmaa2_jinfo       drmaa2_j_get_info          (const drmaa2_j j);
401drmaa2_error       drmaa2_j_wait_started      (const drmaa2_j j, const time_t timeout);
402drmaa2_error       drmaa2_j_wait_terminated   (const drmaa2_j j, const time_t timeout);
403
404drmaa2_r_list            drmaa2_msession_get_all_reservations  (const drmaa2_msession ms);
405drmaa2_j_list            drmaa2_msession_get_all_jobs          (const drmaa2_msession ms,
406                                                                const drmaa2_jinfo filter);
407drmaa2_queueinfo_list    drmaa2_msession_get_all_queues        (const drmaa2_msession ms,
408                                                                const drmaa2_string_list names);
409drmaa2_machineinfo_list  drmaa2_msession_get_all_machines      (const drmaa2_msession ms,
410                                                                const drmaa2_string_list names);
411
412drmaa2_string       drmaa2_get_drms_name                (void);
413drmaa2_version      drmaa2_get_drms_version             (void);
414drmaa2_string       drmaa2_get_drmaa_name               (void);
415drmaa2_version      drmaa2_get_drmaa_version            (void);
416drmaa2_bool         drmaa2_supports                     (const drmaa2_capability c);
417drmaa2_jsession     drmaa2_create_jsession              (const char * session_name, const char * contact);
418drmaa2_rsession     drmaa2_create_rsession              (const char * session_name, const char * contact);
419drmaa2_jsession     drmaa2_open_jsession                (const char * session_name);
420drmaa2_rsession     drmaa2_open_rsession                (const char * session_name);
421drmaa2_msession     drmaa2_open_msession                (const char * session_name);
422drmaa2_error        drmaa2_close_jsession               (drmaa2_jsession js);
423drmaa2_error        drmaa2_close_rsession               (drmaa2_rsession rs);
424drmaa2_error        drmaa2_close_msession               (drmaa2_msession ms);
425drmaa2_error        drmaa2_destroy_jsession             (const char * session_name);
426drmaa2_error        drmaa2_destroy_rsession             (const char * session_name);
427drmaa2_string_list  drmaa2_get_jsession_names           (void);
428drmaa2_string_list  drmaa2_get_rsession_names           (void);
429drmaa2_error        drmaa2_register_event_notification  (const drmaa2_callback callback);
430
431#endif
Note: See TracBrowser for help on using the repository browser.