Module: DRMAA

Defined in:
lib/ood_core/job/adapters/drmaa.rb,
lib/ood_core/refinements/drmaa_extensions.rb

Defined Under Namespace

Classes: DRMAAAlreadyActiveSessionError, DRMAAAuthenticationError, DRMAACommunicationError, DRMAAConflictingAttributeValuesError, DRMAADefaultContactError, DRMAADeniedError, DRMAAException, DRMAAHoldInconsistent, DRMAAInternalError, DRMAAInvalidArgumentError, DRMAAInvalidAttributeFormatError, DRMAAInvalidAttributeValueError, DRMAAInvalidContactError, DRMAAInvalidJobError, DRMAANoActiveSessionError, DRMAANoDefaultContactSelected, DRMAANoMemoryError, DRMAANoMoreElements, DRMAAReleaseInconsistent, DRMAAResumeInconsistent, DRMAASessionExitError, DRMAASessionInitError, DRMAASuspendInconsistent, DRMAATimeoutExit, DRMAATryLater, JobInfo, JobTemplate, Session, SessionSingleton

Constant Summary collapse

STATE_UNDETERMINED =

drmaa_job_ps() constants

0x00
STATE_QUEUED_ACTIVE =
0x10
STATE_SYSTEM_ON_HOLD =
0x11
STATE_USER_ON_HOLD =
0x12
STATE_USER_SYSTEM_ON_HOLD =
0x13
STATE_RUNNING =
0x20
STATE_SYSTEM_SUSPENDED =
0x21
STATE_USER_SUSPENDED =
0x22
STATE_USER_SYSTEM_SUSPENDED =
0x23
STATE_DONE =
0x30
STATE_FAILED =
0x40
ACTION_SUSPEND =

drmaa_control() constants

0
ACTION_RESUME =
1
ACTION_HOLD =
2
ACTION_RELEASE =
3
ACTION_TERMINATE =
4
PLACEHOLDER_INCR =

placeholders for job input/output/error path and working dir

"$drmaa_incr_ph$"
PLACEHOLDER_HD =
"$drmaa_hd_ph$"
PLACEHOLDER_WD =
"$drmaa_wd_ph$"
DRMMA_TO_OOD_STATE_MAP =
{
  DRMAA::STATE_UNDETERMINED          => :undetermined,
  DRMAA::STATE_QUEUED_ACTIVE         => :queued,
  DRMAA::STATE_SYSTEM_ON_HOLD        => :queued_held,
  DRMAA::STATE_USER_ON_HOLD          => :queued_held,
  DRMAA::STATE_USER_SYSTEM_ON_HOLD   => :queued_held,
  DRMAA::STATE_RUNNING               => :running,
  DRMAA::STATE_SYSTEM_SUSPENDED      => :suspended,
  DRMAA::STATE_USER_SUSPENDED        => :suspended,
  DRMAA::STATE_USER_SYSTEM_SUSPENDED => :suspended,
  DRMAA::STATE_DONE                  => :completed,
  DRMAA::STATE_FAILED                => :completed
}

Class Method Summary collapse

Class Method Details

.allocate_job_templateObject

int drmaa_allocate_job_template(drmaa_job_template_t **, char *, size_t)



333
334
335
336
337
338
339
340
341
# File 'lib/ood_core/job/adapters/drmaa.rb', line 333

def DRMAA.allocate_job_template
    err=" " * ErrSize
    jt = FFI::MemoryPointer.new :pointer
    r = FFI_DRMAA.drmaa_allocate_job_template jt, err, ErrSize
    r1 = [jt,err,ErrSize]

    DRMAA.throw(r, r1[1])
    return jt
end

.attributesObject

int drmaa_get_attribute_names(drmaa_attr_names_t **, char *, size_t)



362
363
364
365
366
367
368
369
370
# File 'lib/ood_core/job/adapters/drmaa.rb', line 362

def DRMAA.attributes()
    err=""
    (0..100).each { |x| err << " "}
    jt = FFI::MemoryPointer.new :pointer
    r = FFI_DRMAA.get_attribute_names jt, err, ErrSize
    r1 = [jt,err,ErrSize]
    DRMAA.throw(r, r1[1])
    return DRMAA.get_attr_names(jt)
end

.contactObject

returns string specifying contact information int drmaa_get_contact(char *, size_t, char *, size_t)



252
253
254
255
256
257
258
259
260
261
# File 'lib/ood_core/job/adapters/drmaa.rb', line 252

def DRMAA.contact
    contact = " " * ErrSize
    err = " " * ErrSize
    r,r1 = FFI_DRMAA.drmaa_get_contact(contact, ErrSize, err, ErrSize)
    r1 = [contact, ErrSize, err, ErrSize]
    contact.delete! "\000"
    contact.strip!
    DRMAA.throw(r, r1[2])
    return r1[0]
end

.control(job, action) ⇒ Object

int drmaa_control(const char *, int , char *, size_t )



306
307
308
309
310
311
# File 'lib/ood_core/job/adapters/drmaa.rb', line 306

def DRMAA.control(job, action)
    err = ' ' * ErrSize
    r = FFI_DRMAA.drmaa_control(job, action, err, ErrSize)
    r1 = [job, action, err, ErrSize]
    DRMAA.throw(r, r1[2])
end

.delete_job_template(jt) ⇒ Object

int drmaa_delete_job_template(drmaa_job_template_t *, char *, size_t)



344
345
346
347
348
# File 'lib/ood_core/job/adapters/drmaa.rb', line 344

def DRMAA.delete_job_template(jt)
    err = EC
    r,r1 = @drmaa_delete_job_template.call(jt.ptr, err, ErrSize)
    DRMAA.throw(r, r1[1])
end

.drm_systemObject

returns string specifying the DRM system int drmaa_get_drm_system(char *, size_t , char *, size_t)



239
240
241
242
243
244
245
246
247
248
# File 'lib/ood_core/job/adapters/drmaa.rb', line 239

def DRMAA.drm_system
    drm = " " * 20
    err = " " * ErrSize
    r = FFI_DRMAA.drmaa_get_DRM_system(drm, 20, err, ErrSize)
    r1 = [drm, 20, err, ErrSize]
    DRMAA.throw(r, r1[2])
    drm.delete! "\000"
    drm.strip!
    return r1[0]
end

.drmaa_implementationObject

returns string specifying DRMAA implementation int drmaa_get_DRMAA_implementation(char *, size_t , char *, size_t)



265
266
267
268
269
270
271
272
273
274
# File 'lib/ood_core/job/adapters/drmaa.rb', line 265

def DRMAA.drmaa_implementation
    err = " " * ErrSize
    impl = " " * 30
    r = FFI_DRMAA.drmaa_get_DRMAA_implementation(impl, 30, err, ErrSize)
    r1 = [impl, 30, err, ErrSize]
    DRMAA.throw(r, r1[2])
    impl.delete! "\000"
    impl.strip!
    return r1[0]
end

.errno2str(drmaa_errno) ⇒ Object



207
208
209
210
211
212
213
214
215
216
217
218
# File 'lib/ood_core/job/adapters/drmaa.rb', line 207

def DRMAA.errno2str(drmaa_errno)
#            stack = caller
#            puts stack
    if DRMAA.version < 1.0
        s = ERRNO_MAP_095.find{ |pair| pair[1] == drmaa_errno }[0]
    else
        s = ERRNO_MAP_100.find{ |pair| pair[1] == drmaa_errno }[0]
    end
    s = "DRMAA_ERRNO_INTERNAL_ERROR" if s.nil?
     puts "errno2str(" + drmaa_errno.to_s + ") = " + s
    return s
end

.exitObject

int drmaa_exit(char *, size_t)



325
326
327
328
329
330
# File 'lib/ood_core/job/adapters/drmaa.rb', line 325

def DRMAA.exit
    err=" " * ErrSize
    r = FFI_DRMAA.drmaa_exit err, ErrSize-1
    r1 = [err,ErrSize-1]
    DRMAA.throw(r, r1[0])
end

.get_all(ids, nxt, rls) ⇒ Object



372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
# File 'lib/ood_core/job/adapters/drmaa.rb', line 372

def DRMAA.get_all(ids, nxt, rls)
    if DRMAA.version < 1.0
        errno_expect = DRMAA.str2errno("DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE")
    else
        errno_expect = DRMAA.str2errno("DRMAA_ERRNO_NO_MORE_ELEMENTS")
    end
    # STDERR.puts "get_all(1)"
    values = Array.new
    ret = 0
    while  ret != errno_expect do
        # STDERR.puts "get_all(2) " + DRMAA.errno2str(ret)
        err=" " * ErrSize
        jobid=" " * ErrSize
        r = FFI_DRMAA.send(nxt,ids.get_pointer(0), jobid, ErrSize)
        jobid = jobid.unpack('Z*')[0]
        # unpack null-terminated string , return first value
        r1 =  [ids.get_pointer(0),jobid,ErrSize]
        
        if r != errno_expect
            DRMAA.throw(r, "unexpected error")
            values.push(r1[1])
            # puts "get_all(3) " + DRMAA.errno2str(r)
        end
        ret = r
    end
    # puts "get_all(4)"
    FFI_DRMAA.send(rls,ids.get_pointer(0))
    return values
end

.get_attr_names(names) ⇒ Object

int drmaa_get_next_attr_name(drmaa_attr_names_t*, char *, size_t ) void drmaa_release_attr_names(drmaa_attr_names_t*)



411
412
413
# File 'lib/ood_core/job/adapters/drmaa.rb', line 411

def DRMAA.get_attr_names(names)
    return DRMAA.get_all(names, :drmaa_get_next_attr_name, :drmaa_release_attr_names)
end

.get_attr_values(ids) ⇒ Object

int drmaa_get_next_attr_value(drmaa_attr_values_t*, char *, size_t ) void drmaa_release_attr_values(drmaa_attr_values_t*)



417
418
419
# File 'lib/ood_core/job/adapters/drmaa.rb', line 417

def DRMAA.get_attr_values(ids)
    return DRMAA.get_all(ids, :drmaa_get_next_attr_value, :drmaa_release_attr_values)
end

.get_attribute(jt, name) ⇒ Object

int drmaa_get_attribute(drmaa_job_template_t *, const char *, char *,

size_t , char *, size_t)


562
563
564
565
566
567
568
569
570
571
# File 'lib/ood_core/job/adapters/drmaa.rb', line 562

def DRMAA.get_attribute(jt, name)
    err = " " * ErrSize
    value = " " * ErrSize
    r = FFI_DRMAA.drmaa_get_attribute jt.get_pointer(0), name, value, ErrSize, err, ErrSize
    value = value.unpack('Z*')[0]
    # unpack null-terminated string , return first value
    r1 = [jt.get_pointer(0), name, value, ErrSize, err, ErrSize]
    DRMAA.throw(r, r1[3])
    return r1[2]
end

.get_job_ids(ids) ⇒ Object

int drmaa_get_next_job_id(drmaa_job_ids_t*, char *, size_t ) void drmaa_release_job_ids(drmaa_job_ids_t*)



404
405
406
# File 'lib/ood_core/job/adapters/drmaa.rb', line 404

def DRMAA.get_job_ids(ids)
    return DRMAA.get_all(ids, :drmaa_get_next_job_id, :drmaa_release_job_ids)
end

.get_vector_attribute(jt, name) ⇒ Object

int drmaa_get_vector_attribute(drmaa_job_template_t *, const char *,

drmaa_attr_values_t **, char *, size_t )


575
576
577
578
579
580
581
582
583
584
# File 'lib/ood_core/job/adapters/drmaa.rb', line 575

def DRMAA.get_vector_attribute(jt, name)
    err=" " * ErrSize
    attr = FFI::MemoryPointer.new :pointer
    r = FFI_DRMAA.drmaa_get_vector_attribute jt.get_pointer(0), name, attr, err, ErrSize
    r1 = [jt.get_pointer(0), name, attr, err, ErrSize]  
    DRMAA.throw(r, r1[3])

    # Original author had a method called "drmaa_get_vector_attribute" that did the same thing as this
    return DRMAA.get_attr_values(attr)
end

.init(contact) ⇒ Object

int drmaa_init(const char *, char *, size_t)



315
316
317
318
319
320
321
322
# File 'lib/ood_core/job/adapters/drmaa.rb', line 315

def DRMAA.init(contact)
    err=" " * ErrSize
    r = FFI_DRMAA.drmaa_init contact, err, ErrSize-1
    r1 = [contact,err,ErrSize-1]
    contact.delete! "\000"
    contact.strip!
    DRMAA.throw(r, r1[1])
end

.job_ps(job) ⇒ Object

int drmaa_job_ps( const char *, int *, char *, size_t )



296
297
298
299
300
301
302
303
# File 'lib/ood_core/job/adapters/drmaa.rb', line 296

def DRMAA.job_ps(job)
    err = " " * ErrSize
    state = FFI::MemoryPointer.new(:int,4)
    r = FFI_DRMAA.drmaa_job_ps(job, state, err, ErrSize)
    r1 = [job, state.read_int, err, ErrSize]
    DRMAA.throw(r, r1[2])
    return r1[1]
end

.run_bulk_jobs(jt, first, last, incr) ⇒ Object

int drmaa_run_bulk_jobs(drmaa_job_ids_t **, const drmaa_job_template_t *jt,

int, int, int, char *, size_t)


502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
# File 'lib/ood_core/job/adapters/drmaa.rb', line 502

def DRMAA.run_bulk_jobs(jt, first, last, incr)
    err = " " * ErrSize
    #strptrs = []
    #numJobs = (last - first + 1) / incr
    #numJobs.times {|i| strptrs << FFI::MemoryPointer.from_string(i) }
    #strptrs << nil
    #ids = FFI::MemoryPointer.new(:pointer,strptrs.length)
    #strptrs.each_with_index do |p,i|
    #    ids[i].put_pointer(0, p)
    #end
    ids = FFI::MemoryPointer.new :pointer
    r = FFI_DRMAA.drmaa_run_bulk_jobs(ids, jt.get_pointer(0), first, last, incr, err, ErrSize)
    r1 = [ids, jt, first, last, incr, err, ErrSize]
    DRMAA.throw(r, r1[5])
    return DRMAA.get_job_ids(ids)
end

.run_job(jt) ⇒ Object

int drmaa_run_job(char *, size_t, const drmaa_job_template_t *, char *, size_t)



520
521
522
523
524
525
526
527
528
529
530
# File 'lib/ood_core/job/adapters/drmaa.rb', line 520

def DRMAA.run_job(jt)
    err=" " * ErrSize
    jobid=" " * ErrSize
    r = FFI_DRMAA.drmaa_run_job jobid, ErrSize, jt.get_pointer(0), err, ErrSize
    r1 = [jobid,ErrSize,jt.get_pointer(0), err, ErrSize]
    jobid.delete! "\000"
    jobid.strip!

    DRMAA.throw(r, r1[3])
    return r1[0]
end

.set_attribute(jt, name, value) ⇒ Object

int drmaa_set_attribute(drmaa_job_template_t *, const char *, const char *, char *, size_t)



533
534
535
536
537
538
# File 'lib/ood_core/job/adapters/drmaa.rb', line 533

def DRMAA.set_attribute(jt, name, value)
    err=" " * ErrSize
    r = FFI_DRMAA.drmaa_set_attribute jt.get_pointer(0), name, value, err, ErrSize
    r1 =  [jt.get_pointer(0),name,value,err,ErrSize]
    DRMAA.throw(r, r1[3])
end

.set_vector_attribute(jt, name, ary) ⇒ Object

int drmaa_set_vector_attribute(drmaa_job_template_t *, const char *,

const char *value[], char *, size_t)


542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
# File 'lib/ood_core/job/adapters/drmaa.rb', line 542

def DRMAA.set_vector_attribute(jt, name, ary)
    err=" " * ErrSize
    ary.flatten!

    strptrs = []
    ary.each { |x| strptrs << FFI::MemoryPointer.from_string(x) }
    strptrs << nil

    argv = FFI::MemoryPointer.new(:pointer,strptrs.length)
    strptrs.each_with_index do |p,i|
        argv[i].put_pointer(0, p)
    end

    r = FFI_DRMAA.drmaa_set_vector_attribute jt.get_pointer(0), name, argv, err, ErrSize
    r1 = [jt.get_pointer(0),name, argv, err, ErrSize]
    DRMAA.throw(r, r1[3])
end

.str2errno(str) ⇒ Object



220
221
222
223
224
225
226
227
228
229
# File 'lib/ood_core/job/adapters/drmaa.rb', line 220

def DRMAA.str2errno(str)
    if DRMAA.version < 1.0
        errno = ERRNO_MAP_095.find{ |pair| pair[0] == str }[1]
    else
        errno = ERRNO_MAP_100.find{ |pair| pair[0] == str }[1]
    end
    errno = 1 if errno.nil? # internal error
    # puts "str2errno(" + str + ") = " + errno.to_s
    return errno
end

.strerror(errno) ⇒ Object

const char *drmaa_strerror(int drmaa_errno)



290
291
292
293
# File 'lib/ood_core/job/adapters/drmaa.rb', line 290

def DRMAA.strerror(errno)
    r =  @drmaa_strerror.call(drmaa_errno)
    return r.to_s
end

.synchronize(jobs, timeout, dispose) ⇒ Object

int drmaa_synchronize(const char *job_ids[], signed long timeout, int dispose, char *, size_t)



587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
# File 'lib/ood_core/job/adapters/drmaa.rb', line 587

def DRMAA.synchronize(jobs, timeout, dispose)
    err = " " * ErrSize
    if dispose == false
        disp = 0
    else
        disp = 1
    end
    errno_timeout = DRMAA.str2errno("DRMAA_ERRNO_EXIT_TIMEOUT")
    jobs.flatten!
    strptrs = []
    jobs.each { |x| strptrs << FFI::MemoryPointer.from_string(x) }
    strptrs << nil
    job_ids = FFI::MemoryPointer.new(:pointer,strptrs.length)
    strptrs.each_with_index do |p,i|
        job_ids[i].put_pointer(0, p)
    end
    r = FFI_DRMAA.drmaa_synchronize job_ids, timeout, disp, err, ErrSize
    r1 = [job_ids, timeout, disp, err, ErrSize]
    if r == errno_timeout
        return false
    else
        DRMAA.throw(r, r1[3]) 
        return true
    end
end

.throw(r, diag) ⇒ Object



613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
# File 'lib/ood_core/job/adapters/drmaa.rb', line 613

def DRMAA.throw(r, diag)
    return if r == 0
    s_errno = DRMAA.errno2str(r)
    case s_errno
    when "DRMAA_ERRNO_INTERNAL_ERROR"
        raise DRMAAInternalError, diag
    when "DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE"
        raise DRMAACommunicationError, diag
    when "DRMAA_ERRNO_AUTH_FAILURE"
        raise DRMAAAuthenticationError, diag
    when "DRMAA_ERRNO_INVALID_ARGUMENT"
        raise DRMAAInvalidArgumentError, diag
    when "DRMAA_ERRNO_NO_ACTIVE_SESSION"
        raise DRMAANoActiveSessionError, diag
    when "DRMAA_ERRNO_NO_MEMORY"
        raise DRMAANoMemoryError, diag
    when "DRMAA_ERRNO_INVALID_CONTACT_STRING"
        raise DRMAAInvalidContactError, diag
    when "DRMAA_ERRNO_DEFAULT_CONTACT_STRING_ERROR"
        raise DRMAADefaultContactError, diag
    when "DRMAA_ERRNO_NO_DEFAULT_CONTACT_STRING_SELECTED"
        raise DRMAANoDefaultContactSelected, diag
    when "DRMAA_ERRNO_DRMS_INIT_FAILED"
        raise DRMAASessionInitError, diag
    when "DRMAA_ERRNO_ALREADY_ACTIVE_SESSION"
        raise DRMAAAlreadyActiveSessionError, diag
    when "DRMAA_ERRNO_DRMS_EXIT_ERROR"
        raise DRMAASessionExitError, diag
    when "DRMAA_ERRNO_INVALID_ATTRIBUTE_FORMAT"
        raise DRMAAInvalidAttributeFormatError, diag
    when "DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE"
        raise DRMAAInvalidAttributeValueError, diag
    when "DRMAA_ERRNO_CONFLICTING_ATTRIBUTE_VALUES"
        raise DRMAAConflictingAttributeValuesError, diag
    when "DRMAA_ERRNO_TRY_LATER"
        raise DRMAATryLater, diag
    when "DRMAA_ERRNO_DENIED_BY_DRM"
        raise DRMAADeniedError, diag
    when "DRMAA_ERRNO_INVALID_JOB"
        raise DRMAAInvalidJobError, diag
    when "DRMAA_ERRNO_RESUME_INCONSISTENT_STATE"
        raise DRMAAResumeInconsistent, diag
    when "DRMAA_ERRNO_SUSPEND_INCONSISTENT_STATE"
        raise DRMAASuspendInconsistent, diag
    when "DRMAA_ERRNO_HOLD_INCONSISTENT_STATE"
        raise DRMAAHoldInconsistent, diag
    when "DRMAA_ERRNO_RELEASE_INCONSISTENT_STATE"
        raise DRMAAReleaseInconsistent, diag
    when "DRMAA_ERRNO_EXIT_TIMEOUT"
        raise DRMAATimeoutExit, diag
    when "DRMAA_ERRNO_NO_RUSAGE"
        raise DRMAANoRusage, diag
    when "DRMAA_ERRNO_NO_MORE_ELEMENTS"
        raise DRMAANoMoreElements, diag
    end
end

.vector_attributesObject

int drmaa_get_vector_attribute_names(drmaa_attr_names_t **, char *, size_t)



351
352
353
354
355
356
357
358
359
# File 'lib/ood_core/job/adapters/drmaa.rb', line 351

def DRMAA.vector_attributes()
    err=""
    (0..100).each { |x| err << " "}
    jt = FFI::MemoryPointer.new :pointer
    r = FFI_DRMAA.drmaa_get_vector_attribute_names jt, err, ErrSize
    r1 = [jt,err,ErrSize]
    DRMAA.throw(r, r1[1])
    return DRMAA.get_attr_names(jt)
end

.versionObject

returns DRMAA version (e.g. 1.0 or 0.95) int drmaa_version(unsigned int *, unsigned int *, char *, size_t )



278
279
280
281
282
283
284
285
286
# File 'lib/ood_core/job/adapters/drmaa.rb', line 278

def DRMAA.version
    err= " " * ErrSize
    major = FFI::MemoryPointer.new(:int, 1)
    minor = FFI::MemoryPointer.new(:int, 1)
    r = FFI_DRMAA.drmaa_version major,minor, err, ErrSize
    r1 = [major.read_int,minor.read_int, err, ErrSize]  
    DRMAA.throw(r, r1[2])
    @version = r1[0] + (Float(r1[1])/100)
end

.wait(jobid, timeout) ⇒ Object

int drmaa_wait(const char *, char *, size_t , int *, signed long ,

drmaa_attr_values_t **, char *, size_t );


477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
# File 'lib/ood_core/job/adapters/drmaa.rb', line 477

def DRMAA.wait(jobid, timeout)
    errno_timeout = DRMAA.str2errno("DRMAA_ERRNO_EXIT_TIMEOUT")
    errno_no_rusage = DRMAA.str2errno("DRMAA_ERRNO_NO_RUSAGE")
    err = " " * ErrSize
    waited = " " * WaitSize
    stat = FFI::MemoryPointer.new(:int,4)
    usage = FFI::MemoryPointer.new :pointer, 1

    r = FFI_DRMAA.drmaa_wait jobid, waited, WaitSize, stat, timeout, usage, err, ErrSize
    r1 = [jobid, waited, WaitSize, stat, timeout, usage, err, ErrSize]
    # getting null's at end of string
    waited.delete! "\000"
    waited.strip!

    return nil if r == errno_timeout
    if r != errno_no_rusage
        DRMAA.throw(r, r1[6])
        return JobInfo.new(r1[1], r1[3], usage) 
    else
        return JobInfo.new(r1[1], r1[3])
    end
end

.wcoredump(stat) ⇒ Object

int drmaa_wcoredump(int *, int , char *, size_t)



437
438
439
# File 'lib/ood_core/job/adapters/drmaa.rb', line 437

def DRMAA.wcoredump(stat)
    return DRMAA.wif(stat, :drmaa_wcoredump)
end

.wexitstatus(stat) ⇒ Object

int drmaa_wexitstatus(int *, int, char *, size_t)



456
457
458
459
460
461
462
463
# File 'lib/ood_core/job/adapters/drmaa.rb', line 456

def DRMAA.wexitstatus(stat)
    err = " " * ErrSize
    ret = FFI::MemoryPointer.new(:int,4)
    r = FFI_DRMAA.drmaa_wexitstatus(ret, stat, err, ErrSize)
    r1 = [ret, stat, err, ErrSize]
    DRMAA.throw(r, r1[2]) 
    return r1[0].read_int
end

.wif(stat, method) ⇒ Object



441
442
443
444
445
446
447
448
449
450
451
452
453
# File 'lib/ood_core/job/adapters/drmaa.rb', line 441

def DRMAA.wif(stat, method)
    err = " " * ErrSize
    intp = FFI::MemoryPointer.new(:int,4)
    r = FFI_DRMAA.send(method, intp, stat, err, ErrSize)
    r1 = [intp, stat, err, ErrSize]
    DRMAA.throw(r, r1[2])
    boo = r1[0].read_int
    if boo == 0
        return false
    else
        return true
    end
end

.wifaborted(stat) ⇒ Object

int drmaa_wifaborted(int *, int , char *, size_t)



432
433
434
# File 'lib/ood_core/job/adapters/drmaa.rb', line 432

def DRMAA.wifaborted(stat)
    return DRMAA.wif(stat, :drmaa_wifaborted)
end

.wifexited(stat) ⇒ Object

int drmaa_wifexited(int *, int, char *, size_t)



422
423
424
# File 'lib/ood_core/job/adapters/drmaa.rb', line 422

def DRMAA.wifexited(stat)
    return DRMAA.wif(stat, :drmaa_wifexited)
end

.wifsignaled(stat) ⇒ Object

int drmaa_wifsignaled(int *, int, char *, size_t)



427
428
429
# File 'lib/ood_core/job/adapters/drmaa.rb', line 427

def DRMAA.wifsignaled(stat)
    return DRMAA.wif(stat, :drmaa_wifsignaled)
end

.wtermsig(stat) ⇒ Object

int drmaa_wtermsig(char *signal, size_t signal_len, int stat, char *error_diagnosis, size_t error_diag_len);



466
467
468
469
470
471
472
473
# File 'lib/ood_core/job/adapters/drmaa.rb', line 466

def DRMAA.wtermsig(stat)
    err = " " * ErrSize
    signal = " " * ErrSize
    r = FFI_DRMAA.drmaa_wtermsig(signal, ErrSize, stat, err, ErrSize)
    r1 = [signal, ErrSize, stat, err, ErrSize]
    DRMAA.throw(r, r1[3]) 
    return r1[0]
end