blob: d386e79f373ef1c0f90c18e6d43e4619ff92b337 [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import subprocess
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
class kernel_AsyncDriverProbe(test.test):
Handle checking asynchronous device probing.
version = 1
def module_loaded(self, module):
Detect if the given module is already loaded in the kernel.
@param module: name of module to check
module = module.replace('-', '_')
match = "%s " % (module)
for line in open("/proc/modules"):
if line.startswith(match):
return True
return False
def rmmod(self, module):
Unload a module if it is already loaded in the kernel.
@param module: name of module to unload
if self.module_loaded(module):["rmmod", module])
def run_once(self):
Try loading the test module. It will time registration for
synchronous and asynchronous cases and will fail to load if
timing is off.
module = "test_async_driver_probe"
# Start from a clean slate.
exit_code =["modprobe", "-n", "-q", module])
if exit_code:
raise error.TestNAError(
"%s.ko module does not seem to be available "
"(modprobe rc=%s); skipping async probe test" %
(module, exit_code))
# Try loading the module. If it loads successfully test passes.["modprobe", module])
loaded = self.module_loaded(module)
# Clean up after ourselves
if not loaded:
raise error.TestFail("Test module failed to load")