kernel & libbsd.so: add getloadavg() and _user_get_loadavg()
the algorithm and reference values are from FreeBSD. Change-Id: Ia74a796e13adce6a70434c7546c25ca3d553f11f Reviewed-on: https://review.haiku-os.org/c/haiku/+/9150 Reviewed-by: waddlesplash <[email protected]> Reviewed-by: Jérôme Duval <[email protected]> Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
@@ -30,6 +30,8 @@ int mkstemps(char *templat, int slen);
|
||||
long long strtonum(const char *numstr, long long minval,
|
||||
long long maxval, const char **errstrp);
|
||||
|
||||
int getloadavg(double array[], int size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -85,6 +85,7 @@ void scheduler_add_listener(struct SchedulerListener* listener);
|
||||
void scheduler_remove_listener(struct SchedulerListener* listener);
|
||||
|
||||
void scheduler_init(void);
|
||||
status_t scheduler_loadavg_init();
|
||||
void scheduler_enable_scheduling(void);
|
||||
void scheduler_update_policy(void);
|
||||
|
||||
@@ -95,6 +96,9 @@ status_t _user_analyze_scheduling(bigtime_t from, bigtime_t until, void* buffer,
|
||||
status_t _user_set_scheduler_mode(int32 mode);
|
||||
int32 _user_get_scheduler_mode(void);
|
||||
|
||||
status_t _user_get_loadavg(struct loadavg* info, size_t size);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -62,4 +62,10 @@ struct scheduling_analysis {
|
||||
};
|
||||
|
||||
|
||||
struct loadavg {
|
||||
uint32 ldavg[3];
|
||||
long fscale;
|
||||
};
|
||||
|
||||
|
||||
#endif /* _SYSTEM_SCHEDULER_DEFS_H */
|
||||
|
||||
@@ -28,6 +28,7 @@ struct fd_info;
|
||||
struct fd_set;
|
||||
struct fs_info;
|
||||
struct iovec;
|
||||
struct loadavg;
|
||||
struct msqid_ds;
|
||||
struct net_stat;
|
||||
struct pollfd;
|
||||
@@ -212,6 +213,7 @@ extern bigtime_t _kern_estimate_max_scheduling_latency(thread_id thread);
|
||||
|
||||
extern status_t _kern_set_scheduler_mode(int32 mode);
|
||||
extern int32 _kern_get_scheduler_mode(void);
|
||||
extern status_t _kern_get_loadavg(struct loadavg* info, size_t size);
|
||||
|
||||
// user/group functions
|
||||
extern gid_t _kern_getgid(bool effective);
|
||||
|
||||
Reference in New Issue
Block a user