linux-old/kernel/info.c
<<
>>
Prefs
   1/*
   2 * linux/kernel/info.c
   3 *
   4 * Copyright (C) 1992 Darren Senn
   5 */
   6
   7/* This implements the sysinfo() system call */
   8
   9#include <asm/segment.h>
  10
  11#include <linux/sched.h>
  12#include <linux/string.h>
  13#include <linux/unistd.h>
  14#include <linux/types.h>
  15#include <linux/mm.h>
  16
  17asmlinkage int sys_sysinfo(struct sysinfo *info)
  18{
  19        int error;
  20        struct sysinfo val;
  21        struct task_struct **p;
  22
  23        error = verify_area(VERIFY_WRITE, info, sizeof(struct sysinfo));
  24        if (error)
  25                return error;
  26        memset((char *)&val, 0, sizeof(struct sysinfo));
  27
  28        val.uptime = jiffies / HZ;
  29
  30        val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
  31        val.loads[1] = avenrun[1] << (SI_LOAD_SHIFT - FSHIFT);
  32        val.loads[2] = avenrun[2] << (SI_LOAD_SHIFT - FSHIFT);
  33
  34        for (p = &LAST_TASK; p > &FIRST_TASK; p--)
  35                if (*p) val.procs++;
  36
  37        si_meminfo(&val);
  38        si_swapinfo(&val);
  39
  40        memcpy_tofs(info, &val, sizeof(struct sysinfo));
  41        return 0;
  42}
  43
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.