This patch fixes following SIAL error when loading ps.c SIAL sample
script on a
 non-SMP system (kernel):
 
     File /usr/share/sial/crash/ps.c, line 130, Error: Expression \
         for member 'counter' is not a struct/union
 
 The problem behind is that mm_counter_t is defined as 'unsigned long' on
 systems which have NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS (in practise for
 distribution kernels, that are only UMP kernels -- I don't know how to test for
 that condition in SIAL).
 
 
 Signed-off-by: Bernhard Walle <bwalle(a)suse.de>
 
 ---
  ps.c |   11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)
 
 --- a/ps.c
 +++ b/ps.c
 @@ -127,7 +127,16 @@ int getasattr(task_t *t, int f)
  				return t->mm->rss*4;
  			} else {
  				struct mm_struct *mm=t->mm?t->mm:t->active_mm;
 -				return (mm->_file_rss.counter+mm->_anon_rss.counter)*4;
 +
 +				/*
 +				 * on a SMP kernel (with a reasonable amount of NR_CPUS),
 +				 * the _anon_rss and _file_rss is a atomic_t, on a UMP kernel
 +				 * it's a normal integer
 +				 */
 +				if (exists("smp_num_cpus") || exists("__per_cpu_offset"))
 +				    return (mm->_file_rss.counter+mm->_anon_rss.counter)*4;
 +                                else
 +				    return (mm->_file_rss+mm->_anon_rss)*4;
  			}
  		case 2:
  			return t->mm->total_vm*4;
 
 --
 Crash-utility mailing list
 Crash-utility(a)redhat.com
 
https://www.redhat.com/mailman/listinfo/crash-utility