# TESTSUITE
# ------------------------------------------------------------------------------
+EXTRA_DIST += testsuite/populate-modules.sh
+
+MODULE_PLAYGROUND = testsuite/module-playground
ROOTFS = testsuite/rootfs
ROOTFS_PRISTINE = $(top_srcdir)/testsuite/rootfs-pristine
CREATE_ROOTFS = $(AM_V_GEN) ( $(RM) -rf $(ROOTFS) && mkdir -p $(dir $(ROOTFS)) && \
cp -r $(ROOTFS_PRISTINE) $(ROOTFS) && \
touch testsuite/stamp-rootfs && \
- find $(ROOTFS) -type d -exec chmod +w {} \; )
-
-rootfs:
+ find $(ROOTFS) -type d -exec chmod +w {} \; && \
+ $(top_srcdir)/testsuite/populate-modules.sh \
+ $(MODULE_PLAYGROUND) $(ROOTFS) )
+
+build-module-playground:
+ $(AM_V_GEN)if test "$(top_srcdir)" != "$(top_builddir)"; then \
+ $(RM) -rf testsuite/module-playground && \
+ cp -r $(top_srcdir)/$(MODULE_PLAYGROUND) $(top_builddir)/$(MODULE_PLAYGROUND) && \
+ find $(top_builddir)/$(MODULE_PLAYGROUND) -type d -exec chmod +w {} \; ; \
+ fi
+ $(MAKE) -C $(MODULE_PLAYGROUND)
+
+rootfs: build-module-playground
$(CREATE_ROOTFS)
-.PHONY: rootfs
+
+.PHONY: rootfs build-playground
$(ROOTFS): $(ROOTFS_PRISTINE)
$(CREATE_ROOTFS)
check-am: rootfs check-sysconfdir
+EXTRA_DIST += testsuite/module-playground/Makefile \
+ testsuite/module-playground/mod-simple.c
+
+
check_LTLIBRARIES = $(TESTSUITE_OVERRIDE_LIBS)
testsuite_uname_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS)
testsuite-distclean:
$(RM) -r $(ROOTFS)
$(RM) testsuite/stamp-rootfs
+ $(MAKE) -C testsuite/module-playground/ clean
+ if test "$(top_srcdir)" != "$(top_builddir)"; then \
+ $(RM) -rf testsuite/module-playground; \
+ fi
DISTCLEAN_LOCAL_HOOKS += testsuite-distclean
EXTRA_DIST += testsuite/rootfs-pristine
ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
-obj-m := moduleA.o moduleB.o moduleC.o
+obj-m := mod-simple.o
else
# normal makefile
KDIR ?= /lib/modules/`uname -r`/build
KVER ?= `uname -r`
-TESTDIR_BASE := /tmp/test-kmod
-TESTDIR := $(TESTDIR_BASE)/lib/modules/$(KVER)/
default:
$(MAKE) -C $(KDIR) M=$$PWD
-install: default
- mkdir -p $(TESTDIR)/kernel/
- cp *.ko $(TESTDIR)/kernel/
- cp modules.order $(TESTDIR)
- depmod -a -b $(TESTDIR_BASE) $(KVER)
-
clean:
$(MAKE) -C $(KDIR) M=$$PWD clean
--- /dev/null
+#include <linux/init.h>
+#include <linux/module.h>
+
+static int __init test_module_init(void)
+{
+ return 0;
+}
+
+static void test_module_exit(void)
+{
+}
+module_init(test_module_init);
+module_exit(test_module_exit);
+
+MODULE_AUTHOR("Lucas De Marchi <lucas.demarchi@intel.com>");
+MODULE_LICENSE("LGPL");
+++ /dev/null
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/printk.h>
-
-#include "printmodule.h"
-
-static int __init test_module_init(void)
-{
- printA();
- printB();
- return 0;
-}
-module_init(test_module_init);
-
-void printA(void)
-{
- pr_warn("Hello, world A\n");
-}
-EXPORT_SYMBOL(printA);
-
-MODULE_AUTHOR("Lucas De Marchi <lucas.demarchi@intel.com>");
-MODULE_LICENSE("GPL");
+++ /dev/null
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/printk.h>
-
-#include "printmodule.h"
-
-static int __init test_module_init(void)
-{
- printB();
- printC();
-
- return 0;
-}
-module_init(test_module_init);
-
-void printB(void)
-{
- pr_warn("Hello, world B\n");
-}
-EXPORT_SYMBOL(printB);
-
-MODULE_AUTHOR("Lucas De Marchi <lucas.demarchi@intel.com>");
-MODULE_LICENSE("GPL");
+++ /dev/null
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/printk.h>
-
-#include "printmodule.h"
-
-static int __init test_module_init(void)
-{
- printC();
- printB();
- return 0;
-}
-module_init(test_module_init);
-
-void printC(void)
-{
- pr_warn("Hello, world C\n");
-}
-EXPORT_SYMBOL(printC);
-
-MODULE_AUTHOR("Lucas De Marchi <lucas.demarchi@intel.com>");
-MODULE_LICENSE("GPL");
+++ /dev/null
-#pragma once
-
-void printA(void);
-void printB(void);
-void printC(void);
--- /dev/null
+#!/bin/bash
+
+set -e
+
+MODULE_PLAYGROUND=$1
+ROOTFS=$2
+
+declare -A map
+map=(
+ ["test-depmod/search-order-simple/lib/modules/4.4.4/kernel/crypto/"]="mod-simple.ko"
+ ["test-depmod/search-order-simple/lib/modules/4.4.4/updates/"]="mod-simple.ko"
+)
+
+for k in ${!map[@]}; do
+ dst=${ROOTFS}/$k
+ src=${MODULE_PLAYGROUND}/${map[$k]}
+
+ install -d $dst
+ install -t $dst $src
+done
-updates/md5.ko:
+updates/mod-simple.ko: