Add 'getidle' CPU utilization measurement infrastructure

This commit is contained in:
David van Moolenbroek
2009-12-02 11:52:26 +00:00
parent be2087ecf9
commit fce9fd4b4e
22 changed files with 190 additions and 31 deletions

View File

@@ -482,6 +482,7 @@
# define GET_HZ 18 /* get HZ value */
# define GET_WHOAMI 19 /* get own name and endpoint */
# define GET_RANDOMNESS_BIN 20 /* get one randomness bin */
# define GET_IDLETSC 21 /* get cumulative idle time stamp counter */
#define I_ENDPT m7_i4 /* calling process */
#define I_VAL_PTR m7_p1 /* virtual address at caller */
#define I_VAL_LEN m7_i1 /* max length of value */

View File

@@ -11,6 +11,7 @@ _PROTOTYPE( ssize_t getsysinfo_up, (endpoint_t who, int what, size_t size,
#define SIU_LOADINFO 1 /* retrieve load info data */
#define SIU_SYSTEMHZ 2 /* retrieve system clock frequency */
#define SIU_IDLETSC 3 /* retrieve cumulative idle timestamp count */
/* Exported system parameters. */

View File

@@ -179,6 +179,7 @@ _PROTOTYPE(int sys_segctl, (int *index, u16_t *seg, vir_bytes *off,
#define sys_getschedinfo(v1,v2) sys_getinfo(GET_SCHEDINFO, v1,0, v2,0)
#define sys_getlocktimings(dst) sys_getinfo(GET_LOCKTIMING, dst, 0,0,0)
#define sys_getprivid(nr) sys_getinfo(GET_PRIVID, 0, 0,0, nr)
#define sys_getidletsc(dst) sys_getinfo(GET_IDLETSC, dst, 0,0,0)
_PROTOTYPE(int sys_getinfo, (int request, void *val_ptr, int val_len,
void *val_ptr2, int val_len2) );
_PROTOTYPE(int sys_whoami, (endpoint_t *ep, char *name, int namelen));
@@ -242,9 +243,5 @@ _PROTOTYPE( int sys_cprof, (int action, int size, endpoint_t endpt,
void *ctl_ptr, void *mem_ptr) );
_PROTOTYPE( int sys_profbuf, (void *ctl_ptr, void *mem_ptr) );
/* read_tsc() and friends. */
_PROTOTYPE( void read_tsc_64, (u64_t *t) );
_PROTOTYPE( void read_tsc, (u32_t *hi, u32_t *lo) );
#endif /* _SYSLIB_H */

View File

@@ -51,6 +51,7 @@ _PROTOTYPE( int getuptime2, (clock_t *ticks, time_t *boottime));
_PROTOTYPE( int tickdelay, (clock_t ticks));
_PROTOTYPE( int micro_delay_calibrate, (void));
_PROTOTYPE( u32_t sys_hz, (void));
_PROTOTYPE( double getidle, (void));
_PROTOTYPE( void util_stacktrace, (void));
_PROTOTYPE( void util_nstrcat, (char *str, unsigned long n) );
_PROTOTYPE( void util_stacktrace_strcat, (char *));
@@ -81,5 +82,9 @@ struct util_timingdata {
typedef struct util_timingdata util_timingdata_t;
/* read_tsc() and friends. */
_PROTOTYPE( void read_tsc_64, (u64_t *t) );
_PROTOTYPE( void read_tsc, (u32_t *hi, u32_t *lo) );
#endif /* _MINIX_SYSUTIL_H */