13e12c5d1SDavid du Colombier #include <sys/types.h> 23e12c5d1SDavid du Colombier #include <sys/stat.h> 33e12c5d1SDavid du Colombier #include <fcntl.h> 43e12c5d1SDavid du Colombier #include <sys/times.h> 53e12c5d1SDavid du Colombier #include <unistd.h> 63e12c5d1SDavid du Colombier #include <errno.h> 73e12c5d1SDavid du Colombier #include <string.h> 83e12c5d1SDavid du Colombier #include <stdlib.h> 93e12c5d1SDavid du Colombier 103e12c5d1SDavid du Colombier static 113e12c5d1SDavid du Colombier char* skip(char * p)123e12c5d1SDavid du Colombierskip(char *p) 133e12c5d1SDavid du Colombier { 143e12c5d1SDavid du Colombier 153e12c5d1SDavid du Colombier while(*p == ' ') 163e12c5d1SDavid du Colombier p++; 173e12c5d1SDavid du Colombier while(*p != ' ' && *p != 0) 183e12c5d1SDavid du Colombier p++; 193e12c5d1SDavid du Colombier return p; 203e12c5d1SDavid du Colombier } 213e12c5d1SDavid du Colombier 223e12c5d1SDavid du Colombier clock_t times(struct tms * buf)233e12c5d1SDavid du Colombiertimes(struct tms *buf) 243e12c5d1SDavid du Colombier { 253e12c5d1SDavid du Colombier char b[200], *p; 26*9a747e4fSDavid du Colombier int f; 273e12c5d1SDavid du Colombier unsigned long r; 283e12c5d1SDavid du Colombier 293e12c5d1SDavid du Colombier memset(b, 0, sizeof(b)); 303e12c5d1SDavid du Colombier f = open("/dev/cputime", O_RDONLY); 313e12c5d1SDavid du Colombier if(f >= 0) { 323e12c5d1SDavid du Colombier lseek(f, SEEK_SET, 0); 333e12c5d1SDavid du Colombier read(f, b, sizeof(b)); 34*9a747e4fSDavid du Colombier close(f); 353e12c5d1SDavid du Colombier } 363e12c5d1SDavid du Colombier p = b; 373e12c5d1SDavid du Colombier if(buf) 383e12c5d1SDavid du Colombier buf->tms_utime = atol(p); 393e12c5d1SDavid du Colombier p = skip(p); 403e12c5d1SDavid du Colombier if(buf) 413e12c5d1SDavid du Colombier buf->tms_stime = atol(p); 423e12c5d1SDavid du Colombier p = skip(p); 433e12c5d1SDavid du Colombier r = atol(p); 443e12c5d1SDavid du Colombier if(buf){ 453e12c5d1SDavid du Colombier p = skip(p); 463e12c5d1SDavid du Colombier buf->tms_cutime = atol(p); 473e12c5d1SDavid du Colombier p = skip(p); 483e12c5d1SDavid du Colombier buf->tms_cstime = atol(p); 493e12c5d1SDavid du Colombier } 503e12c5d1SDavid du Colombier return r; 513e12c5d1SDavid du Colombier } 52