首页 > 其他 > 详细

Busybox中的free命令

时间:2014-04-22 15:02:05      阅读:948      评论:0      收藏:0      [点我收藏+]

Busybox中包含了一个free命令,其用来查看内存信息。其输出如下:

--->8---

$ free
             total       used       free     shared    buffers     cached
Mem:       6122180    3908872    2213308          0     270864    2578388
-/+ buffers/cache:    1059620    5062560
Swap:      4628476          0    4628476

---8<---

其中这些信息是从那里来的呢?查看free命令的源代码(busybox/procps/free.c)可以发现,其调用sysinfo来获取这些信息。

sysinfo是Linux内核的一个API,其源码在(<kernel/sys.c>),定义如下:

--->8---

SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)

---8<---

sysinfo结构体的定义在<include/uapi/linux/sysinfo.h>.

--->8---

struct sysinfo {
        __kernel_long_t uptime;         /* Seconds since boot */
        __kernel_ulong_t loads[3];      /* 1, 5, and 15 minute load averages */
        __kernel_ulong_t totalram;      /* Total usable main memory size */    
        __kernel_ulong_t freeram;       /* Available memory size */
        __kernel_ulong_t sharedram;     /* Amount of shared memory */
        __kernel_ulong_t bufferram;     /* Memory used by buffers */           
        __kernel_ulong_t totalswap;     /* Total swap space size */            
        __kernel_ulong_t freeswap;      /* swap space still available */       
        __u16 procs;                    /* Number of current processes */      
        __u16 pad;                      /* Explicit padding for m68k */        
        __kernel_ulong_t totalhigh;     /* Total high memory size */           
        __kernel_ulong_t freehigh;      /* Available high memory size */       
        __u32 mem_unit;                 /* Memory unit size in bytes */        
        char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)];   /* Padding: libc5 uses this.. */
};

---8<---

uptime通过调用get_monotonic_boottime()来获取,其定义在<kernel/time/timekeeping.c>

loads[3]通过调用get_avenrun()来获取,其定义在<kernel/sched/proc.c>

ram信息通过si_meminfo()来获取,其定义在<mm/page_alloc.c>

swap信息通过si_swapinfo()来获取,其定义在<mm/swapfile.c>

Busybox中的free命令,布布扣,bubuko.com

Busybox中的free命令

原文:http://blog.csdn.net/voice_shen/article/details/24272517

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!