I will look into this.

Regards--
Subrata

On Wed, 2009-06-03 at 14:49 +0200, Francesco RUNDO wrote: 
> Hi All,
> 
> I'd like to submit a request to change the method to check if CGROUPS 
> support is enabled and available or not.
> 
> I'm referring to the kernel/controllers/xxx testcase. I'm using the 
> LTP-full-20090430 cross-compiled for SH based arch with a kernel 2.6.23
> 
> The used/released  method placed inside kernel/controllers/Makefile,  
> tries to understand if the cgroups (and others related...) support has 
> been enabled in the current kernel, performing a check in the root 
> filesystem under "/proc". It makes something like that:
> 
> CHECK_CGROUP := $(shell test -f /proc/cgroups && echo 'cgroup')
> 
> Now, in the context of LTP built for i386, the above check works fine.
> 
> But what happen if LTP is cross-built ?
> 
> Unfortunately, the "/proc" entry checked by the above Makefile rule, is 
> the ones placed in the host and not the "/proc" of the  target root 
> filesysetm (in my case SH based target). This is wrong!
> 
> Moreover,  "/proc" is an entry which makes sense at runtime while it is 
> useless at built time so the above check is "always" not applicable in 
> case of LTP is built for other arch different from i386.
> 
> In order to cover the scenario in which LTP is cross-built, I've patched 
> the Makefile , replacing the above rule with the following ones:
> 
> ifdef $(CROSS_COMPILE)
> CHECK_CGROUP := $(shell test -f 
> $(TARGET_DIR)/usr/include/linux/cgroupstats.h && echo 'cgroup')
> else
>  CHECK_CGROUP := $(shell test -f /proc/cgroups && echo 'cgroup')
>  CHECK_CPUCTL := $(shell grep -w cpu /proc/cgroups 2>/dev/null|cut -f1)
>  CHECK_MEMCTL := $(shell grep -w memory /proc/cgroups 2>/dev/null|cut -f1)
>  CHECK_BLOCKIOCTL := $(shell grep -w blockio /proc/cgroups 
> 2>/dev/null|cut -f1)
>  CHECK_FREEZER := $(shell grep -w freezer /proc/cgroups 2>/dev/null| cut 
> -f1)
>  CHECK_CPUSETCTL = $(shell grep -w cpuset /proc/cgroups 2>/dev/null|cut -f1)
> endif
> 
> ifdef $(CROSS_COMPILE)
>    ifeq ($(CHECK_CGROUP),cgroup)
>       SUBDIRS += cgroup
>       SUBDIRS += cpuctl
>       SUBDIRS += memctl
>       SUBDIRS += io-throttle
>       SUBDIRS += freezer
>       SUBDIRS += cpuset
>   else
>       $(info "Kernel is not compiled with control cgroup support")
>   endif
> else
>    ifeq ($(CHECK_CGROUP),cgroup)
>         SUBDIRS += cgroup
>    else
>    ..............................................(the same rules placed 
> in the original released Makefile).
> 
> The above checked header file "cgroupstats.h" is placed in the target 
> rootfs.  If the cgroups support is available (and enabled...likely ;-) 
> the above header is placed in the target rootfs. 
> 
> In that way, in case of cross-compilation (the env CROSS_COMPILE was 
> defined) the check will be done in the header file instead of  /proc.
> 
> The env TARGET_DIR works like a "--prefix" fixing the path of the 
> cross-target rootfs.
> 
> Of course, If you have another checks/methods which can be done to 
> understand -at build time- if cgroups support is available and/or 
> enabled -for target platform-, please feel free to post a comment to LTP.
> 
> Anyway, I'll attach the patch I've applied in our system.
> 
> Advices and feedbacks are welcome!
> 
> Regards
> Francesco Rundo
> 
> 
> plain text document attachment
> (ltp-full-20090430-fix-cgroups-testcase.patch)
> This patch allows the cross-build of kernel/controllers (cgroups tests) 
> testcase changing the policy to check the cgroups capability at build-time.
> Signed-off-by: Francesco Rundo <[email protected]>
> --- ltp-full-20090430-cross/testcases/kernel/controllers/Makefile.orig        
> 2009-05-26 15:37:35.140000000 +0200
> +++ ltp-full-20090430-cross/testcases/kernel/controllers/Makefile     
> 2009-05-28 13:36:36.669998000 +0200
> @@ -1,10 +1,26 @@
> +ifdef $(CROSS_COMPILE)
> +CHECK_CGROUP := $(shell test -f 
> $(TARGET_DIR)/usr/include/linux/cgroupstats.h && echo 'cgroup')
> +else
>  CHECK_CGROUP := $(shell test -f /proc/cgroups && echo 'cgroup')
>  CHECK_CPUCTL := $(shell grep -w cpu /proc/cgroups 2>/dev/null|cut -f1)
>  CHECK_MEMCTL := $(shell grep -w memory /proc/cgroups 2>/dev/null|cut -f1)
>  CHECK_BLOCKIOCTL := $(shell grep -w blockio /proc/cgroups 2>/dev/null|cut 
> -f1)
>  CHECK_FREEZER := $(shell grep -w freezer /proc/cgroups 2>/dev/null| cut -f1)
>  CHECK_CPUSETCTL = $(shell grep -w cpuset /proc/cgroups 2>/dev/null|cut -f1)
> +endif
> 
> +ifdef $(CROSS_COMPILE)
> +ifeq ($(CHECK_CGROUP),cgroup)
> +SUBDIRS += cgroup
> +SUBDIRS += cpuctl
> +SUBDIRS += memctl
> +SUBDIRS += io-throttle
> +SUBDIRS += freezer
> +SUBDIRS += cpuset
> +else
> +$(info "Kernel is not compiled with control cgroup support")
> +endif
> +else
>  ifeq ($(CHECK_CGROUP),cgroup)
>  SUBDIRS += cgroup
>  else
> @@ -36,6 +52,7 @@
>  else
>  $(info "Kernel is not compiled with cpuset resource controller support")
>  endif
> +endif
> 
>  # If at least one of the controllers is available then build libcontrollers.
>  ifneq ($(SUBDIRS),)
> ------------------------------------------------------------------------------
> OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
> looking to deploy the next generation of Solaris that includes the latest 
> innovations from Sun and the OpenSource community. Download a copy and 
> enjoy capabilities such as Networking, Storage and Virtualization. 
> Go to: http://p.sf.net/sfu/opensolaris-get
> _______________________________________________ Ltp-list mailing list 
> [email protected] 
> https://lists.sourceforge.net/lists/listinfo/ltp-list


------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to