LS_REQUEST_T * lsGetIRProcRusage_(char *host, int tid, int pid, struct jRusage *ru, appCompletionHandler appHandler, void *appExtra) { struct { struct LSFHeader hdr; struct resRusage rusageReq; } requestBuf; struct lsRequest *request; struct resRusage rusageReq; int s; int descriptor[2]; if (_isconnected_(host, descriptor)) s = descriptor[0]; else { lserrno = LSE_LOSTCON; return NULL; } if (!FD_ISSET(s,&connection_ok_)){ FD_SET(s,&connection_ok_); if (ackReturnCode_(s) < 0) { closesocket(s); _lostconnection_(host); return NULL; } } rusageReq.rid = pid; rusageReq.whatid = RES_RID_ISPID; if (callRes_(s, RES_RUSAGE, (char *)&rusageReq, (char *)&requestBuf, sizeof(requestBuf), xdr_resGetRusage, 0, 0, NULL) == -1) { closesocket(s); _lostconnection_(host); return NULL; } request = lsReqHandCreate_(tid, currentSN, s, (void *)ru, rgetRusageCompletionHandler_, appHandler, appExtra); if (request == NULL) return NULL; if (lsQueueDataAppend_((char *)request, requestQ)) { lsReqFree_(request); return NULL; } return(request); }
int lsRGetpgrp_(int sock, int taskid, int pid) { struct _buf_ { struct LSFHeader hdrBuf; struct resPid pidBuf; } buf; LS_REQUEST_T *request; char host[MAXHOSTNAMELEN]; struct resPid pidReq; int s, pgid; s = sock; gethostbysock_(s, host); if (!FD_ISSET(s,&connection_ok_)){ FD_SET(s,&connection_ok_); if (ackReturnCode_(s) < 0) { closesocket(s); _lostconnection_(host); return (-1); } } pidReq.rpid = taskid; pidReq.pid = pid; if (callRes_(s, RES_GETPID, (char *) &pidReq, (char *) &buf, sizeof(buf), xdr_resGetpid, 0, 0, NULL) == -1) { closesocket(s); _lostconnection_(host); return (-1); } request = lsReqHandCreate_(taskid, currentSN, s, (void *)&pgid, rgetpidCompletionHandler_, (appCompletionHandler) NULL, NULL); if (request == NULL) return(-1); if (lsQueueDataAppend_((char *)request, requestQ)) return(-1); if (lsReqWait_(request, 0) < 0) return (-1); lsReqFree_(request); return(pgid); }
int lsRGetRusage(int rpid, struct jRusage *ru, int options) { LS_REQUEST_T *request; request = lsIRGetRusage_(rpid, ru, (appCompletionHandler) NULL, NULL, options); if (! request) return -1; if (lsReqWait_(request, 0) < 0) return -1; lsReqFree_(request); return 0; }
LS_REQUEST_T * lsIRGetRusage_(int rpid, struct jRusage *ru, appCompletionHandler appHandler, void *appExtra, int options) { struct { struct LSFHeader hdr; struct resRusage rusageReq; } requestBuf; struct lsRequest *request; struct resRusage rusageReq; int s; struct tid *tid; char host[MAXHOSTNAMELEN]; if ((tid = tid_find(rpid)) == NULL) { return NULL; } s = tid->sock; gethostbysock_(s, host); if (!FD_ISSET(s,&connection_ok_)){ FD_SET(s,&connection_ok_); if (ackReturnCode_(s) < 0) { closesocket(s); _lostconnection_(host); return NULL; } } rusageReq.rid = rpid; if (options == 0 || (options & RID_ISTID)) rusageReq.whatid = RES_RID_ISTID; else rusageReq.whatid = RES_RID_ISPID; if (callRes_(s, RES_RUSAGE, (char *)&rusageReq, (char *)&requestBuf, sizeof(requestBuf), xdr_resGetRusage, 0, 0, NULL) == -1) { closesocket(s); _lostconnection_(host); return NULL; } request = lsReqHandCreate_(rpid, currentSN, s, (void *)ru, rgetRusageCompletionHandler_, appHandler, appExtra); if (request == NULL) return NULL; if (lsQueueDataAppend_((char *)request, requestQ)) { lsReqFree_(request); return NULL; } return(request); }
int lsGetRProcRusage(char *host, int pid, struct jRusage *ru, int options) { struct { struct LSFHeader hdr; struct resRusage rusageReq; } requestBuf; struct lsRequest *request; struct resRusage rusageReq; int s; int descriptor[2]; if (_isconnected_(host, descriptor)) s = descriptor[0]; else { lserrno = LSE_LOSTCON; return -1; } if (!FD_ISSET(s,&connection_ok_)){ FD_SET(s,&connection_ok_); if (ackReturnCode_(s) < 0) { closesocket(s); _lostconnection_(host); return -1; } } rusageReq.rid = pid; rusageReq.whatid = RES_RID_ISPID; if (options & RES_RPID_KEEPPID) { rusageReq.options |= RES_RPID_KEEPPID; } else { rusageReq.options = 0; } if (callRes_(s, RES_RUSAGE, (char *)&rusageReq, (char *)&requestBuf, sizeof(requestBuf), xdr_resGetRusage, 0, 0, NULL) == -1) { closesocket(s); _lostconnection_(host); return -1; } request = lsReqHandCreate_(pid, currentSN, s, (void *)ru, rgetRusageCompletionHandler_, NULL, NULL); if (request == NULL) return -1; if (lsQueueDataAppend_((char *)request, requestQ)) return -1; if (! request) return -1; if (lsReqWait_(request, 0) < 0) return -1; lsReqFree_(request); return 0; }