home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.0 / LINUX-1.0 / LINUX-1 / linux / kernel / info.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-01  |  892 b   |  43 lines

  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.  
  17. asmlinkage 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.