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
00065 typedef struct drmaa_attr_names_s drmaa_attr_names_t;
00066
00067 typedef struct drmaa_attr_values_s drmaa_attr_values_t;
00068
00069 typedef struct drmaa_job_ids_s drmaa_job_ids_t;
00070
00071 #define DRMAA_ATTR_BUFFER 1024
00072 #define DRMAA_CONTACT_BUFFER 1024
00073 #define DRMAA_DRM_SYSTEM_BUFFER 1024
00074 #define DRMAA_DRMAA_IMPL_BUFFER 1024
00075 #define DRMAA_ERROR_STRING_BUFFER 1024
00076 #define DRMAA_JOBNAME_BUFFER 1024
00077 #define DRMAA_SIGNAL_BUFFER 32
00078
00079 #define DRMAA_TIMEOUT_NO_WAIT 0
00080 #define DRMAA_TIMEOUT_WAIT_FOREVER -1
00081 #define DRMAA_PS_UNDETERMINED 0x00
00082 #define DRMAA_PS_QUEUED_ACTIVE 0x10
00083 #define DRMAA_PS_SYSTEM_ON_HOLD 0x11
00084 #define DRMAA_PS_USER_ON_HOLD 0x12
00085 #define DRMAA_PS_USER_SYSTEM_ON_HOLD 0x13
00086 #define DRMAA_PS_RUNNING 0x20
00087 #define DRMAA_PS_SYSTEM_SUSPENDED 0x21
00088 #define DRMAA_PS_USER_SUSPENDED 0x22
00089 #define DRMAA_PS_USER_SYSTEM_SUSPENDED 0x23
00090 #define DRMAA_PS_DONE 0x30
00091 #define DRMAA_PS_FAILED 0x40
00092 #define DRMAA_CONTROL_SUSPEND 0
00093 #define DRMAA_CONTROL_RESUME 1
00094 #define DRMAA_CONTROL_HOLD 2
00095 #define DRMAA_CONTROL_RELEASE 3
00096 #define DRMAA_CONTROL_TERMINATE 4
00097 #define DRMAA_JOB_IDS_SESSION_ALL "DRMAA_JOB_IDS_SESSION_ALL"
00098 #define DRMAA_JOB_IDS_SESSION_ANY "DRMAA_JOB_IDS_SESSION_ANY"
00099
00100 #define DRMAA_BLOCK_EMAIL "drmaa_block_email"
00101 #define DRMAA_DEADLINE_TIME "drmaa_deadline_time"
00102 #define DRMAA_DURATION_HLIMIT "drmaa_duration_hlimit"
00103 #define DRMAA_DURATION_SLIMIT "drmaa_duration_slimit"
00104 #define DRMAA_ERROR_PATH "drmaa_error_path"
00105 #define DRMAA_INPUT_PATH "drmaa_input_path"
00106 #define DRMAA_JOB_CATEGORY "drmaa_job_category"
00107 #define DRMAA_JOB_NAME "drmaa_job_name"
00108 #define DRMAA_JOIN_FILES "drmaa_join_files"
00109 #define DRMAA_JS_STATE "drmaa_js_state"
00110 #define DRMAA_NATIVE_SPECIFICATION "drmaa_native_specification"
00111 #define DRMAA_OUTPUT_PATH "drmaa_output_path"
00112 #define DRMAA_REMOTE_COMMAND "drmaa_remote_command"
00113 #define DRMAA_START_TIME "drmaa_start_time"
00114 #define DRMAA_TRANSFER_FILES "drmaa_transfer_files"
00115 #define DRMAA_V_ARGV "drmaa_v_argv"
00116 #define DRMAA_V_EMAIL "drmaa_v_email"
00117 #define DRMAA_V_ENV "drmaa_v_env"
00118 #define DRMAA_WCT_HLIMIT "drmaa_wct_hlimit"
00119 #define DRMAA_WCT_SLIMIT "drmaa_wct_slimit"
00120 #define DRMAA_WD "drmaa_wd"
00121
00122 #define DRMAA_SUBMISSION_STATE_ACTIVE "drmaa_active"
00123 #define DRMAA_SUBMISSION_STATE_HOLD "drmaa_hold"
00124 #define DRMAA_PLACEHOLDER_HD "$drmaa_hd_ph$"
00125 #define DRMAA_PLACEHOLDER_WD "$drmaa_wd_ph$"
00126 #define DRMAA_PLACEHOLDER_INCR "$drmaa_incr_ph$"
00127
00128 #define DRMAA_ERRNO_SUCCESS 0
00129 #define DRMAA_ERRNO_INTERNAL_ERROR 1
00130 #define DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE 2
00131 #define DRMAA_ERRNO_AUTH_FAILURE 3
00132 #define DRMAA_ERRNO_INVALID_ARGUMENT 4
00133 #define DRMAA_ERRNO_NO_ACTIVE_SESSION 5
00134 #define DRMAA_ERRNO_NO_MEMORY 6
00135 #define DRMAA_ERRNO_INVALID_CONTACT_STRING 7
00136 #define DRMAA_ERRNO_DEFAULT_CONTACT_STRING_ERROR 8
00137 #define DRMAA_ERRNO_NO_DEFAULT_CONTACT_STRING_SELECTED 9
00138 #define DRMAA_ERRNO_DRMS_INIT_FAILED 10
00139 #define DRMAA_ERRNO_ALREADY_ACTIVE_SESSION 11
00140 #define DRMAA_ERRNO_DRMS_EXIT_ERROR 12
00141 #define DRMAA_ERRNO_INVALID_ATTRIBUTE_FORMAT 13
00142 #define DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE 14
00143 #define DRMAA_ERRNO_CONFLICTING_ATTRIBUTE_VALUES 15
00144 #define DRMAA_ERRNO_TRY_LATER 16
00145 #define DRMAA_ERRNO_DENIED_BY_DRM 17
00146 #define DRMAA_ERRNO_INVALID_JOB 18
00147 #define DRMAA_ERRNO_RESUME_INCONSISTENT_STATE 19
00148 #define DRMAA_ERRNO_SUSPEND_INCONSISTENT_STATE 20
00149 #define DRMAA_ERRNO_HOLD_INCONSISTENT_STATE 21
00150 #define DRMAA_ERRNO_RELEASE_INCONSISTENT_STATE 22
00151 #define DRMAA_ERRNO_EXIT_TIMEOUT 23
00152 #define DRMAA_ERRNO_NO_RUSAGE 24
00153 #define DRMAA_ERRNO_NO_MORE_ELEMENTS 25
00154
00155 #if defined(__cplusplus)
00156 extern "C"
00157 {
00158 #endif
00159
00160
00176 int drmaa_init(
00177 const char *contact,
00178 char *error_diagnosis, size_t error_diag_len
00179 );
00180
00191 int drmaa_exit(char *error_diagnosis, size_t error_diag_len);
00192
00193
00194
00203 int drmaa_allocate_job_template(
00204 drmaa_job_template_t **jt,
00205 char *error_diagnosis,
00206 size_t error_diag_len
00207 );
00208
00214 int drmaa_delete_job_template(
00215 drmaa_job_template_t *jt,
00216 char *error_diagnosis, size_t error_diag_len
00217 );
00218
00224 int drmaa_set_attribute(
00225 drmaa_job_template_t *jt,
00226 const char *name, const char *value,
00227 char *error_diagnosis, size_t error_diag_len
00228 );
00229
00235 int drmaa_get_attribute(
00236 drmaa_job_template_t *jt,
00237 const char *name, char *value, size_t value_len,
00238 char *error_diagnosis, size_t error_diag_len
00239 );
00240
00247 int drmaa_set_vector_attribute(
00248 drmaa_job_template_t *jt,
00249 const char *name, const char *value[],
00250 char *error_diagnosis, size_t error_diag_len
00251 );
00252
00258 int drmaa_get_vector_attribute(
00259 drmaa_job_template_t *jt,
00260 const char *name, drmaa_attr_values_t **values,
00261 char *error_diagnosis, size_t error_diag_len
00262 );
00263
00264
00265
00273 int drmaa_get_attribute_names(
00274 drmaa_attr_names_t **values,
00275 char *error_diagnosis, size_t error_diag_len
00276 );
00277
00285 int drmaa_get_vector_attribute_names(
00286 drmaa_attr_names_t **values,
00287 char *error_diagnosis, size_t error_diag_len
00288 );
00289
00308
00309 int drmaa_get_next_attr_name(drmaa_attr_names_t* values,
00310 char *value, size_t value_len);
00311 int drmaa_get_next_attr_value(drmaa_attr_values_t* values,
00312 char *value, size_t value_len);
00313 int drmaa_get_next_job_id(drmaa_job_ids_t* values,
00314 char *value, size_t value_len);
00315 int drmaa_get_num_attr_names(drmaa_attr_names_t* values, size_t *size);
00316 int drmaa_get_num_attr_values(drmaa_attr_values_t* values, size_t *size);
00317 int drmaa_get_num_job_ids(drmaa_job_ids_t* values, size_t *size);
00318 void drmaa_release_attr_names(drmaa_attr_names_t* values);
00319 void drmaa_release_attr_values(drmaa_attr_values_t* values);
00320 void drmaa_release_job_ids(drmaa_job_ids_t* values);
00321
00322
00329 int drmaa_run_job(
00330 char *job_id, size_t job_id_len, const drmaa_job_template_t *jt,
00331 char *error_diagnosis, size_t error_diag_len
00332 );
00333
00355 int drmaa_run_bulk_jobs(
00356 drmaa_job_ids_t **jobids,
00357 const drmaa_job_template_t *jt,
00358 int start, int end, int incr,
00359 char *error_diagnosis,
00360 size_t error_diag_len
00361 );
00362
00378 int drmaa_control(
00379 const char *job_id, int action,
00380 char *error_diagnosis, size_t error_diag_len
00381 );
00382
00400 int drmaa_job_ps(
00401 const char *job_id, int *remote_ps,
00402 char *error_diagnosis, size_t error_diag_len
00403 );
00404
00433 int drmaa_synchronize(
00434 const char *job_ids[], signed long timeout, int dispose,
00435 char *error_diagnosis, size_t error_diag_len
00436 );
00437
00483 int drmaa_wait(
00484 const char *job_id,
00485 char *job_id_out, size_t job_id_out_len, int *stat,
00486 signed long timeout, drmaa_attr_values_t **rusage,
00487 char *error_diagnosis, size_t error_diag_len
00488 );
00489
00490 int drmaa_wifexited(int *exited, int stat,
00491 char *error_diagnosis, size_t error_diag_len);
00492 int drmaa_wexitstatus(int *exit_status, int stat,
00493 char *error_diagnosis, size_t error_diag_len);
00494 int drmaa_wifsignaled(int *signaled, int stat,
00495 char *error_diagnosis, size_t error_diag_len);
00496 int drmaa_wtermsig(char *signal, size_t signal_len, int stat,
00497 char *error_diagnosis, size_t error_diag_len);
00498 int drmaa_wcoredump(int *core_dumped, int stat,
00499 char *error_diagnosis, size_t error_diag_len);
00500 int drmaa_wifaborted(int *aborted, int stat,
00501 char *error_diagnosis, size_t error_diag_len);
00502
00507 const char *drmaa_strerror(int drmaa_errno);
00508
00517 int drmaa_get_contact(char *contact, size_t contact_len,
00518 char *error_diagnosis, size_t error_diag_len);
00519
00525 int drmaa_version(unsigned int *major, unsigned int *minor,
00526 char *error_diagnosis, size_t error_diag_len);
00527
00534 int drmaa_get_DRM_system(char *drm_system, size_t drm_system_len,
00535 char *error_diagnosis, size_t error_diag_len);
00536
00544 int drmaa_get_DRMAA_implementation(char *drmaa_impl, size_t drmaa_impl_len,
00545 char *error_diagnosis, size_t error_diag_len);
00546
00547 #if defined(__cplusplus)
00548 }
00549
00550 #endif
00551
00552
00553
00554
00555
00556
00557
00558
00564 void drmaa_set_logging_output(FILE *file);
00565
00566 #endif
00567