Boolean Process::getUserModeTime (Uint64& i64) const { int status = SS$_NORMAL; long lKernelTicks = 0; long lExecTicks = 0; long lSuperTicks = 0; long lUserTicks = 0; struct k1_arglist { // kernel call arguments long lCount; // number of arguments long epid; long *pKernelTicks; long *pExecTicks; long *pSuperTicks; long *pUserTicks; } getcputickskargs = {5}; // init to 5 arguments getcputickskargs.epid = pInfo.pid; getcputickskargs.pKernelTicks = &lKernelTicks; getcputickskargs.pExecTicks = &lExecTicks; getcputickskargs.pSuperTicks = &lSuperTicks; getcputickskargs.pUserTicks = &lUserTicks; status = sys$cmkrnl (GetCPUTicks, &getcputickskargs); if (!$VMS_STATUS_SUCCESS (status)) { return false; } i64 = lUserTicks / 10; // milliseconds return true; }
Boolean ComputerSystem::getSerialNumber(CIMProperty& p) { long status = SS$_NORMAL, i; char lrSerNum[16]="",lSerNum[16]=""; struct k1_arglist { // kernel call arguments long lCount; // number of arguments char *pSerNum; } getsernumkargs = {1}; // init 1 argument getsernumkargs.pSerNum = lrSerNum; status = sys$cmkrnl(GetSerNum,&getsernumkargs); if ($VMS_STATUS_SUCCESS(status)) { for (i=0;i<strlen(lrSerNum);i++) { lSerNum[strlen(lrSerNum)-i-1] = lrSerNum[i]; } _serialNumber.assign(lSerNum); p = CIMProperty(PROPERTY_SERIAL_NUMBER, _serialNumber); return true; } return false; }
int rms_std$deanonpgdsiz (void *pool, int size) { long arglst[3]; arglst[0] = 2; arglst[1] = pool; arglst[2] = size; return sys$cmkrnl(exe_std$deanonpgdsiz, &arglst[0]); }
int rms_std$alononpaged (int reqsize, int32 *alosize_p, void **pool_p) { long arglst[4]; arglst[0] = 3; arglst[1] = reqsize; arglst[2] = alosize_p; arglst[3] = pool_p; return sys$cmkrnl(exe_std$alononpaged, &arglst[0]); }
main(){ #if 0 #ifdef __i386__ long arg=0; sys$cmkrnl(getpcb,&arg); printf("%x\n",pcb); #endif #endif }
int cliutl$getmem(const void *src, void *dest, int n) { if (n==0) n = sizeof(void *); long arglst[4]; arglst[0]=3; arglst[1]=dest; arglst[2]=src; arglst[3]=n; sys$cmkrnl(memcpy, &arglst[0]); }
Boolean Process::getCPUTime (Uint32& i32) const { int status = SS$_NORMAL; long lKernelTicks = 0; long lExecTicks = 0; long lSuperTicks = 0; long lUserTicks = 0; long lTotalTicks = 0; long avcpucnt; __int64 pstartime; __int64 qcurtime; float fTotalTicks; float fpercntime; struct k1_arglist { // kernel call arguments long lCount; // number of arguments long epid; long *pKernelTicks; long *pExecTicks; long *pSuperTicks; long *pUserTicks; } getcputickskargs = {5}; // init to 5 arguments item_list itmlst3[2]; getcputickskargs.epid = pInfo.pid; getcputickskargs.pKernelTicks = &lKernelTicks; getcputickskargs.pExecTicks = &lExecTicks; getcputickskargs.pSuperTicks = &lSuperTicks; getcputickskargs.pUserTicks = &lUserTicks; status = sys$cmkrnl (GetCPUTicks, &getcputickskargs); if (!$VMS_STATUS_SUCCESS (status)) { return false; } lTotalTicks = lKernelTicks + lExecTicks + lSuperTicks + lUserTicks; fTotalTicks = lTotalTicks; // 10 millisec ticks fTotalTicks = fTotalTicks * 10000000; // 100 nanosec ticks pstartime = pInfo.p_stime; // 100 nanosec ticks itmlst3[0].wlength = 4; itmlst3[0].wcode = SYI$_AVAILCPU_CNT; itmlst3[0].pbuffer = &avcpucnt; itmlst3[0].pretlen = NULL; itmlst3[1].wlength = 0; itmlst3[1].wcode = 0; itmlst3[1].pbuffer = NULL; itmlst3[1].pretlen = NULL; status = sys$getsyiw (0, 0, 0, itmlst3, 0, 0, 0); if (!$VMS_STATUS_SUCCESS (status)) { return false; } status = sys$gettim (&qcurtime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } fpercntime = avcpucnt; fpercntime = fpercntime * (qcurtime - pstartime); fpercntime = (fTotalTicks / fpercntime) * 100; i32 = fpercntime; return true; }