diff options
author | Wenji Huang <wenji.huang@oracle.com> | 2010-03-11 17:59:16 +0800 |
---|---|---|
committer | Wenji Huang <wenji.huang@oracle.com> | 2010-03-11 17:59:16 +0800 |
commit | df841db1a8a3dd18228edc20b12044d5d31001a5 (patch) | |
tree | 13b0fe57d3f0fb2085f6b04edf1a48e5befb1160 | |
parent | da9e11bd5cd3cbedbf794a0e8a83956bd178ba60 (diff) | |
download | systemtap-steved-df841db1a8a3dd18228edc20b12044d5d31001a5.tar.gz systemtap-steved-df841db1a8a3dd18228edc20b12044d5d31001a5.tar.xz systemtap-steved-df841db1a8a3dd18228edc20b12044d5d31001a5.zip |
Update tapset proc_mem for 2.6.34
* tapset/proc_mem.stp(_stp_get_mm_counter_file_rss,
_stp_get_mm_counter_anon_rss): Use embedded function.
-rw-r--r-- | tapset/proc_mem.stp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tapset/proc_mem.stp b/tapset/proc_mem.stp index 825a7570..e4386bde 100644 --- a/tapset/proc_mem.stp +++ b/tapset/proc_mem.stp @@ -30,9 +30,25 @@ return NULL; return current->mm; } +#include <linux/mm_types.h> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34) +static inline unsigned long k_get_mm_counter(struct mm_struct *mm, int member) +{ +#if USE_SPLIT_PTLOCKS + return (unsigned long)atomic_long_read(&mm->rss_stat.count[member]); +#else + return mm->rss_stat.count[member]; +#endif +} +#endif %} function _stp_get_mm_counter_file_rss:long(mm:long) +%(kernel_v >= "2.6.34" %? +%{ /* pure */ /* unprivileged */ + THIS->__retvalue = k_get_mm_counter((struct mm_struct*)(unsigned long)THIS->mm, MM_FILEPAGES); +%} +%: { %( CONFIG_NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS %? return @cast(mm, "mm_struct", "kernel<linux/sched.h>")->_file_rss->counter; @@ -40,8 +56,14 @@ function _stp_get_mm_counter_file_rss:long(mm:long) return @cast(mm, "mm_struct", "kernel<linux/sched.h>")->_file_rss; %) } +%) function _stp_get_mm_counter_anon_rss(mm:long) +%(kernel_v >= "2.6.34" %? +%{ /* pure */ /* unprivileged */ + THIS->__retvalue = k_get_mm_counter((struct mm_struct*)(unsigned long)THIS->mm, MM_ANONPAGES); +%} +%: { %( CONFIG_NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS %? return @cast(mm, "mm_struct", "kernel<linux/sched.h>")->_anon_rss->counter; @@ -49,6 +71,7 @@ function _stp_get_mm_counter_anon_rss(mm:long) return @cast(mm, "mm_struct", "kernel<linux/sched.h>")->_anon_rss; %) } +%) /** * sfunction proc_mem_size - Total program virtual memory size in pages @@ -98,8 +121,13 @@ function proc_mem_rss:long () %{ /* pure */ /* unprivileged */ struct mm_struct *mm = _stp_proc_mm (); if (mm) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34) + THIS->__retvalue = k_get_mm_counter(mm, MM_FILEPAGES) + + k_get_mm_counter(mm, MM_ANONPAGES); +#else THIS->__retvalue = (get_mm_counter(mm, file_rss) + get_mm_counter(mm, anon_rss)); +#endif else THIS->__retvalue = 0; %} @@ -137,7 +165,11 @@ function proc_mem_shr:long () %{ /* pure */ /* unprivileged */ struct mm_struct *mm = _stp_proc_mm (); if (mm) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34) + THIS->__retvalue = k_get_mm_counter(mm, MM_FILEPAGES); +#else THIS->__retvalue = get_mm_counter(mm, file_rss); +#endif else THIS->__retvalue = 0; %} |