home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
mint
/
mntlib16.lzh
/
MNTLIB16
/
GETRUSAG.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-08-03
|
1KB
|
66 lines
/* getrusage emulation for MiNT */
#include <osbind.h>
#include <mintbind.h>
#include <time.h>
#include <resource.h>
#include <errno.h>
extern int __mint;
extern long _childtime;
void
_ms2tval(milliseconds, tval)
unsigned long milliseconds;
struct timeval *tval;
{
tval->tv_sec = milliseconds/1000;
tval->tv_usec = (milliseconds % 1000) * 1000;
}
void
_add_tval(orig, new)
struct timeval *orig, *new;
{
long t;
t = orig->tv_usec + new->tv_usec;
if (t > 1000000) {
orig->tv_sec += t/1000000;
t = t % 1000000;
}
orig->tv_usec = t;
orig->tv_sec += new->tv_sec;
}
int
getrusage(which, data)
int which;
struct rusage *data;
{
long r;
long usage[8];
if (__mint) {
r = Prusage(usage);
if (r < 0) {
errno = -r;
return -1;
}
} else {
usage[0] = usage[2] = 0;
usage[1] = clock() - _childtime;
usage[3] = _childtime;
}
if (which == RUSAGE_SELF) {
_ms2tval(usage[0], &(data->ru_stime));
_ms2tval(usage[1], &(data->ru_utime));
}
else if (which == RUSAGE_CHILDREN) {
_ms2tval(usage[2], &(data->ru_stime));
_ms2tval(usage[3], &(data->ru_utime));
}
return 0;
}