00001
00052 #ifndef __DRMAA_H
00053 #define __DRMAA_H
00054
00055 #include <stddef.h>
00056 #include <stdio.h>
00057
00061
00062
00063 typedef struct drmaa_job_template_s drmaa_job_template_t;
00064 typedef struct drmaa_attr_names_s drmaa_attr_names_t;
00065 typedef struct drmaa_attr_values_s drmaa_attr_values_t;
00066 typedef struct drmaa_job_ids_s drmaa_job_ids_t;
00067
00068 #define DRMAA_ATTR_BUFFER 1024
00069 #define DRMAA_CONTACT_BUFFER 1024
00070 #define DRMAA_DRM_SYSTEM_BUFFER 1024
00071 #define DRMAA_DRMAA_IMPL_BUFFER 1024
00072 #define DRMAA_ERROR_STRING_BUFFER 1024
00073 #define DRMAA_JOBNAME_BUFFER 1024
00074 #define DRMAA_SIGNAL_BUFFER 32
00075
00076 #define DRMAA_TIMEOUT_NO_WAIT 0
00077 #define DRMAA_TIMEOUT_WAIT_FOREVER -1
00078 #define DRMAA_PS_UNDETERMINED 0x00
00079 #define DRMAA_PS_QUEUED_ACTIVE 0x10
00080 #define DRMAA_PS_SYSTEM_ON_HOLD 0x11
00081 #define DRMAA_PS_USER_ON_HOLD 0x12
00082 #define DRMAA_PS_USER_SYSTEM_ON_HOLD 0x13
00083 #define DRMAA_PS_RUNNING 0x20
00084 #define DRMAA_PS_SYSTEM_SUSPENDED 0x21
00085 #define DRMAA_PS_USER_SUSPENDED 0x22
00086 #define DRMAA_PS_USER_SYSTEM_SUSPENDED 0x23
00087 #define DRMAA_PS_DONE 0x30
00088 #define DRMAA_PS_FAILED 0x40
00089 #define DRMAA_CONTROL_SUSPEND 0
00090 #define DRMAA_CONTROL_RESUME 1
00091 #define DRMAA_CONTROL_HOLD 2
00092 #define DRMAA_CONTROL_RELEASE 3
00093 #define DRMAA_CONTROL_TERMINATE 4
00094 #define DRMAA_JOB_IDS_SESSION_ALL "DRMAA_JOB_IDS_SESSION_ALL"
00095 #define DRMAA_JOB_IDS_SESSION_ANY "DRMAA_JOB_IDS_SESSION_ANY"
00096
00097 #define DRMAA_BLOCK_EMAIL "drmaa_block_email"
00098 #define DRMAA_DEADLINE_TIME "drmaa_deadline_time"
00099 #define DRMAA_DURATION_HLIMIT "drmaa_duration_hlimit"
00100 #define DRMAA_DURATION_SLIMIT "drmaa_duration_slimit"
00101 #define DRMAA_ERROR_PATH "drmaa_error_path"
00102 #define DRMAA_INPUT_PATH "drmaa_input_path"
00103 #define DRMAA_JOB_CATEGORY "drmaa_job_category"
00104 #define DRMAA_JOB_NAME "drmaa_job_name"
00105 #define DRMAA_JOIN_FILES "drmaa_join_files"
00106 #define DRMAA_JS_STATE "drmaa_js_state"
00107 #define DRMAA_NATIVE_SPECIFICATION "drmaa_native_specification"
00108 #define DRMAA_OUTPUT_PATH "drmaa_output_path"
00109 #define DRMAA_REMOTE_COMMAND "drmaa_remote_command"
00110 #define DRMAA_START_TIME "drmaa_start_time"
00111 #define DRMAA_TRANSFER_FILES "drmaa_transfer_files"
00112 #define DRMAA_V_ARGV "drmaa_v_argv"
00113 #define DRMAA_V_EMAIL "drmaa_v_email"
00114 #define DRMAA_V_ENV "drmaa_v_env"
00115 #define DRMAA_WCT_HLIMIT "drmaa_wct_hlimit"
00116 #define DRMAA_WCT_SLIMIT "drmaa_wct_slimit"
00117 #define DRMAA_WD "drmaa_wd"
00118
00119 #define DRMAA_SUBMISSION_STATE_ACTIVE "drmaa_active"
00120 #define DRMAA_SUBMISSION_STATE_HOLD "drmaa_hold"
00121 #define DRMAA_PLACEHOLDER_HD "$drmaa_hd_ph$"
00122 #define DRMAA_PLACEHOLDER_WD "$drmaa_wd_ph$"
00123 #define DRMAA_PLACEHOLDER_INCR "$drmaa_incr_ph$"
00124
00125 #define DRMAA_ERRNO_SUCCESS 0
00126 #define DRMAA_ERRNO_INTERNAL_ERROR 1
00127 #define DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE 2
00128 #define DRMAA_ERRNO_AUTH_FAILURE 3
00129 #define DRMAA_ERRNO_INVALID_ARGUMENT 4
00130 #define DRMAA_ERRNO_NO_ACTIVE_SESSION 5
00131 #define DRMAA_ERRNO_NO_MEMORY 6
00132 #define DRMAA_ERRNO_INVALID_CONTACT_STRING 7
00133 #define DRMAA_ERRNO_DEFAULT_CONTACT_STRING_ERROR 8
00134 #define DRMAA_ERRNO_NO_DEFAULT_CONTACT_STRING_SELECTED 9
00135 #define DRMAA_ERRNO_DRMS_INIT_FAILED 10
00136 #define DRMAA_ERRNO_ALREADY_ACTIVE_SESSION 11
00137 #define DRMAA_ERRNO_DRMS_EXIT_ERROR 12
00138 #define DRMAA_ERRNO_INVALID_ATTRIBUTE_FORMAT 13
00139 #define DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE 14
00140 #define DRMAA_ERRNO_CONFLICTING_ATTRIBUTE_VALUES 15
00141 #define DRMAA_ERRNO_TRY_LATER 16
00142 #define DRMAA_ERRNO_DENIED_BY_DRM 17
00143 #define DRMAA_ERRNO_INVALID_JOB 18
00144 #define DRMAA_ERRNO_RESUME_INCONSISTENT_STATE 19
00145 #define DRMAA_ERRNO_SUSPEND_INCONSISTENT_STATE 20
00146 #define DRMAA_ERRNO_HOLD_INCONSISTENT_STATE 21
00147 #define DRMAA_ERRNO_RELEASE_INCONSISTENT_STATE 22
00148 #define DRMAA_ERRNO_EXIT_TIMEOUT 23
00149 #define DRMAA_ERRNO_NO_RUSAGE 24
00150 #define DRMAA_ERRNO_NO_MORE_ELEMENTS 25
00151
00152 #if defined(__cplusplus)
00153 extern "C" {
00154 #endif
00155
00156
00172 int drmaa_init(
00173 const char *contact,
00174 char *error_diagnosis, size_t error_diag_len
00175 );
00176
00187 int drmaa_exit( char *error_diagnosis, size_t error_diag_len );
00188
00189
00190
00199 int drmaa_allocate_job_template(
00200 drmaa_job_template_t **jt,
00201 char *error_diagnosis,
00202 size_t error_diag_len
00203 );
00204
00210 int drmaa_delete_job_template(
00211 drmaa_job_template_t *jt,
00212 char *error_diagnosis, size_t error_diag_len
00213 );
00214
00220 int drmaa_set_attribute(
00221 drmaa_job_template_t *jt,
00222 const char *name, const char *value,
00223 char *error_diagnosis, size_t error_diag_len
00224 );
00225
00231 int drmaa_get_attribute(
00232 drmaa_job_template_t *jt,
00233 const char *name, char *value, size_t value_len,
00234 char *error_diagnosis, size_t error_diag_len
00235 );
00236
00243 int drmaa_set_vector_attribute(
00244 drmaa_job_template_t *jt,
00245 const char *name, const char *value[],
00246 char *error_diagnosis, size_t error_diag_len
00247 );
00248
00254 int drmaa_get_vector_attribute(
00255 drmaa_job_template_t *jt,
00256 const char *name, drmaa_attr_values_t **values,
00257 char *error_diagnosis, size_t error_diag_len
00258 );
00259
00260
00261
00269 int drmaa_get_attribute_names(
00270 drmaa_attr_names_t **values,
00271 char *error_diagnosis, size_t error_diag_len
00272 );
00273
00281 int drmaa_get_vector_attribute_names(
00282 drmaa_attr_names_t **values,
00283 char *error_diagnosis, size_t error_diag_len
00284 );
00285
00304
00305 int drmaa_get_next_attr_name( drmaa_attr_names_t* values,
00306 char *value, size_t value_len );
00307 int drmaa_get_next_attr_value( drmaa_attr_values_t* values,
00308 char *value, size_t value_len );
00309 int drmaa_get_next_job_id( drmaa_job_ids_t* values,
00310 char *value, size_t value_len );
00311 int drmaa_get_num_attr_names( drmaa_attr_names_t* values, size_t *size );
00312 int drmaa_get_num_attr_values(drmaa_attr_values_t* values, size_t *size );
00313 int drmaa_get_num_job_ids( drmaa_job_ids_t* values, size_t *size );
00314 void drmaa_release_attr_names( drmaa_attr_names_t* values );
00315 void drmaa_release_attr_values( drmaa_attr_values_t* values );
00316 void drmaa_release_job_ids( drmaa_job_ids_t* values );
00317
00318
00325 int drmaa_run_job(
00326 char *job_id, size_t job_id_len, const drmaa_job_template_t *jt,
00327 char *error_diagnosis, size_t error_diag_len
00328 );
00329
00351 int drmaa_run_bulk_jobs(
00352 drmaa_job_ids_t **jobids,
00353 const drmaa_job_template_t *jt,
00354 int start, int end, int incr,
00355 char *error_diagnosis,
00356 size_t error_diag_len
00357 );
00358
00374 int drmaa_control(
00375 const char *job_id, int action,
00376 char *error_diagnosis, size_t error_diag_len
00377 );
00378
00396 int drmaa_job_ps(
00397 const char *job_id, int *remote_ps,
00398 char *error_diagnosis, size_t error_diag_len
00399 );
00400
00429 int drmaa_synchronize(
00430 const char *job_ids[], signed long timeout, int dispose,
00431 char *error_diagnosis, size_t error_diag_len
00432 );
00433
00479 int drmaa_wait(
00480 const char *job_id,
00481 char *job_id_out, size_t job_id_out_len, int *stat,
00482 signed long timeout, drmaa_attr_values_t **rusage,
00483 char *error_diagnosis, size_t error_diag_len
00484 );
00485
00486 int drmaa_wifexited( int *exited, int stat,
00487 char *error_diagnosis, size_t error_diag_len );
00488 int drmaa_wexitstatus( int *exit_status, int stat,
00489 char *error_diagnosis, size_t error_diag_len );
00490 int drmaa_wifsignaled( int *signaled, int stat,
00491 char *error_diagnosis, size_t error_diag_len );
00492 int drmaa_wtermsig( char *signal, size_t signal_len, int stat,
00493 char *error_diagnosis, size_t error_diag_len );
00494 int drmaa_wcoredump( int *core_dumped, int stat,
00495 char *error_diagnosis, size_t error_diag_len );
00496 int drmaa_wifaborted( int *aborted, int stat,
00497 char *error_diagnosis, size_t error_diag_len );
00498
00503 const char *drmaa_strerror( int drmaa_errno );
00504
00513 int drmaa_get_contact( char *contact, size_t contact_len,
00514 char *error_diagnosis, size_t error_diag_len );
00515
00521 int drmaa_version( unsigned int *major, unsigned int *minor,
00522 char *error_diagnosis, size_t error_diag_len );
00523
00530 int drmaa_get_DRM_system( char *drm_system, size_t drm_system_len,
00531 char *error_diagnosis, size_t error_diag_len );
00532
00540 int drmaa_get_DRMAA_implementation( char *drmaa_impl, size_t drmaa_impl_len,
00541 char *error_diagnosis, size_t error_diag_len );
00542
00543 #if defined(__cplusplus)
00544 }
00545 #endif
00546
00547
00548
00549
00550
00551
00552
00553
00559 void drmaa_set_logging_output( FILE *file );
00560
00561 #endif
00562