blob: 18dcf350f32ef46c42ba013a08b5fdcf44333956 [file] [log] [blame]
mbligh9f857922008-06-05 16:19:07 +00001import re, os
mbligh34d01172008-06-05 16:26:31 +00002from autotest_lib.client.bin import autotest_utils, test
mbligh9f857922008-06-05 16:19:07 +00003from autotest_lib.client.common_lib import utils, error
mbligh62eaf662006-09-30 15:58:59 +00004
5class libhugetlbfs(test.test):
jadmanskie80d4712008-10-03 16:15:59 +00006 version = 6
mbligh62eaf662006-09-30 15:58:59 +00007
mbligha57e5ab2008-08-27 19:58:08 +00008 def initialize(self, dir = None, pages_requested = 20):
mblighc5ddfd12008-08-04 17:15:00 +00009 self.job.require_gcc()
jadmanskie80d4712008-10-03 16:15:59 +000010
jadmanski0afbb632008-06-06 21:10:57 +000011 autotest_utils.check_kernel_ver("2.6.16")
mblighf1e7c3f2008-02-14 16:19:12 +000012
jadmanski0afbb632008-06-06 21:10:57 +000013 # Check huge page number
14 pages_available = 0
15 if os.path.exists('/proc/sys/vm/nr_hugepages'):
16 utils.write_one_line('/proc/sys/vm/nr_hugepages',
17 str(pages_requested))
mbligh8b352852008-06-07 01:07:08 +000018 nr_hugepages = utils.read_one_line('/proc/sys/vm/nr_hugepages')
19 pages_available = int(nr_hugepages)
jadmanski0afbb632008-06-06 21:10:57 +000020 else:
21 raise error.TestNAError('Kernel does not support hugepages')
jadmanski153cc8b2008-05-20 19:57:47 +000022
jadmanski0afbb632008-06-06 21:10:57 +000023 if pages_available < pages_requested:
24 raise error.TestError('%d huge pages available, < %d pages requested' % (pages_available, pages_requested))
mblighf1e7c3f2008-02-14 16:19:12 +000025
jadmanski0afbb632008-06-06 21:10:57 +000026 # Check if hugetlbfs has been mounted
27 if not autotest_utils.file_contains_pattern('/proc/mounts', 'hugetlbfs'):
28 if not dir:
29 dir = os.path.join(self.tmpdir, 'hugetlbfs')
30 os.makedirs(dir)
31 utils.system('mount -t hugetlbfs none %s' % dir)
mbligha57e5ab2008-08-27 19:58:08 +000032 self.dir = dir
mblighf1e7c3f2008-02-14 16:19:12 +000033
mbligha57e5ab2008-08-27 19:58:08 +000034
mbligh4b849522008-09-16 16:29:24 +000035 # http://libhugetlbfs.ozlabs.org/releases/libhugetlbfs-2.0.tar.gz
36 def setup(self, tarball = 'libhugetlbfs-2.0.tar.gz'):
mbligha57e5ab2008-08-27 19:58:08 +000037 tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
38 autotest_utils.extract_tarball_to_dir(tarball, self.srcdir)
jadmanski0afbb632008-06-06 21:10:57 +000039 os.chdir(self.srcdir)
mbligh62eaf662006-09-30 15:58:59 +000040
mbligha57e5ab2008-08-27 19:58:08 +000041 # make might fail if there are no proper headers for the 32 bit
42 # version, in that case try only for the 64 bit version
43 try:
44 utils.system('make')
45 except:
46 utils.system('make OBJDIRS=obj64')
47
48
49 def run_once(self):
50 os.chdir(self.srcdir)
jadmanski0afbb632008-06-06 21:10:57 +000051 # make check might fail for 32 bit if the 32 bit compile earlier
52 # had failed. See if it passes for 64 bit in that case.
53 try:
54 utils.system('make check')
55 except:
56 utils.system('make check OBJDIRS=obj64')
mbligh62eaf662006-09-30 15:58:59 +000057
mbligha57e5ab2008-08-27 19:58:08 +000058
59 def cleanup(self):
60 utils.system('umount %s' % self.dir)