Esempio n. 1
0
long
REG_POLY_FUN_HDR(sml_getpwnam, long tuple, Region homeR, Region shellR, String nameML, long s, long exn)
{
    long res;
    char *b;
    struct passwd pbuf, *pbuf2;
    char *name = &(nameML->data);
    mkTagRecordML(tuple,5);
    s = convertIntToC(s) + 1;
    b = (char *) malloc(s);
    if (!b)
    {
        res = errno;
        elemRecordML(tuple,4) = res;
        return tuple;
    }
    res = getpwnam_r(name, &pbuf, b, s-1, &pbuf2);
    elemRecordML(tuple,4) = res;
    if (res)
    {
        free(b);
        return tuple;
    }
    if (!pbuf2)
    {
        free(b);
        raise_exn(exn);
    }
    elemRecordML(tuple,0) = (long) pbuf2->pw_uid;
    elemRecordML(tuple,1) = (long) pbuf2->pw_gid;
    elemRecordML(tuple,2) = (long) REG_POLY_CALL(convertStringToML, homeR, pbuf2->pw_dir);
    elemRecordML(tuple,3) = (long) REG_POLY_CALL(convertStringToML, shellR, pbuf2->pw_shell);
    free(b);
    return tuple;
}
Esempio n. 2
0
uintptr_t 
sml_getrutime(uintptr_t vAddr) 
{
  struct rusage rusages;
  getrusage(RUSAGE_SELF, &rusages);
  elemRecordML(vAddr,2) = convertIntToML(rusages.ru_stime.tv_sec);
  elemRecordML(vAddr,3) = convertIntToML(rusages.ru_stime.tv_usec);
  elemRecordML(vAddr,4) = convertIntToML(rusages.ru_utime.tv_sec);
  elemRecordML(vAddr,5) = convertIntToML(rusages.ru_utime.tv_usec);
  mkTagRecordML(vAddr,6);
  elemRecordML(vAddr,0) = convertIntToML(0);   /* zero gc */
  elemRecordML(vAddr,1) = convertIntToML(0);
  return vAddr;
}
Esempio n. 3
0
uintptr_t
sml_times(uintptr_t tuple)
{
    struct tms buf;
    clock_t r;
    mkTagRecordML(tuple, 5);
    r = times(&buf);
    if (r == (clock_t) -1) raise_exn((uintptr_t)&exn_OVERFLOW);
    elemRecordML(tuple,0) = convertIntToML(r & (SIZE_MAX / 4));
    elemRecordML(tuple,1) = convertIntToML(buf.tms_utime & (SIZE_MAX / 4));
    elemRecordML(tuple,2) = convertIntToML(buf.tms_stime & (SIZE_MAX / 4));
    elemRecordML(tuple,3) = convertIntToML(buf.tms_cutime & (SIZE_MAX / 4));
    elemRecordML(tuple,4) = convertIntToML(buf.tms_cstime & (SIZE_MAX / 4));
    return tuple;
}
Esempio n. 4
0
uintptr_t 
sml_gmtime (uintptr_t vAddr, uintptr_t r) 
{
  struct tm tmr;
  time_t clock = (long)(get_d(r));
  gmtime_r(&clock,&tmr);
  mkTagRecordML(vAddr,9);
  elemRecordML(vAddr,0) = convertIntToML(tmr.tm_hour);
  elemRecordML(vAddr,1) = convertIntToML(tmr.tm_isdst);
  elemRecordML(vAddr,2) = convertIntToML(tmr.tm_mday);
  elemRecordML(vAddr,3) = convertIntToML(tmr.tm_min);
  elemRecordML(vAddr,4) = convertIntToML(tmr.tm_mon);
  elemRecordML(vAddr,5) = convertIntToML(tmr.tm_sec);
  elemRecordML(vAddr,6) = convertIntToML(tmr.tm_wday);
  elemRecordML(vAddr,7) = convertIntToML(tmr.tm_yday);
  elemRecordML(vAddr,8) = convertIntToML(tmr.tm_year);
  return vAddr;
}