···5757#include <asm/div64.h>5858#include "internal.h"59596060-#define LOAD_INT(x) ((x) >> FSHIFT)6161-#define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)6260/*6361 * Warning: stuff below (imported functions) assumes that its output will fit6462 * into one page. For some of those functions it may be wrong. Moreover, we···7678 if (len>count) len = count;7779 if (len<0) len = 0;7880 return len;7979-}8080-8181-static int loadavg_read_proc(char *page, char **start, off_t off,8282- int count, int *eof, void *data)8383-{8484- int a, b, c;8585- int len;8686- unsigned long seq;8787-8888- do {8989- seq = read_seqbegin(&xtime_lock);9090- a = avenrun[0] + (FIXED_1/200);9191- b = avenrun[1] + (FIXED_1/200);9292- c = avenrun[2] + (FIXED_1/200);9393- } while (read_seqretry(&xtime_lock, seq));9494-9595- len = sprintf(page,"%d.%02d %d.%02d %d.%02d %ld/%d %d\n",9696- LOAD_INT(a), LOAD_FRAC(a),9797- LOAD_INT(b), LOAD_FRAC(b),9898- LOAD_INT(c), LOAD_FRAC(c),9999- nr_running(), nr_threads,100100- task_active_pid_ns(current)->last_pid);101101- return proc_calc_metrics(page, start, off, count, eof, len);10281}1038210483static int uptime_read_proc(char *page, char **start, off_t off,···836861 char *name;837862 int (*read_proc)(char*,char**,off_t,int,int*,void*);838863 } *p, simple_ones[] = {839839- {"loadavg", loadavg_read_proc},840864 {"uptime", uptime_read_proc},841865 {"meminfo", meminfo_read_proc},842866 {"version", version_read_proc},