2 Commits

Author SHA1 Message Date
f11d2bc921 add script for automatic module insertion testing 2024-12-01 20:42:43 +02:00
331a1ecb0b hotfix: move msg_count argument
Move msg_count handling to hello2 to comply with lab5 requirements
2024-12-01 19:43:54 +02:00
5 changed files with 68 additions and 16 deletions

View File

@@ -44,7 +44,6 @@ struct TimingList {
ktime_t t_after;
};
static unsigned int msg_count = 1;
static struct TimingList *tl_head;
static struct TimingList* write_first_node(void)
@@ -97,19 +96,10 @@ void destroy_list(void)
static int __init hello_init(void)
{
if (msg_count > 10) {
pr_err("Error: msg_count too large (%d > 10)\n", msg_count);
return -EINVAL;
}
if (msg_count == 0 || msg_count >= 5) {
pr_warn("Warning: msg_count = %d (msg_count == 0 or 5 <= msg_count <= 10)\n", msg_count);
}
return 0;
}
void print_hello(void)
void print_hello(int msg_count)
{
int i;
struct TimingList *current_tail = tl_head;
@@ -128,9 +118,6 @@ static void __exit hello_exit(void)
destroy_list();
}
module_param(msg_count, uint, 0444);
MODULE_PARM_DESC(msg_count, "Amount of hello world outputs on load");
EXPORT_SYMBOL(print_hello);
EXPORT_SYMBOL(destroy_list);

View File

@@ -40,9 +40,20 @@ MODULE_AUTHOR("Serhii Popovych <serhii.popovych@globallogic.com>");
MODULE_DESCRIPTION("Hello, world in Linux Kernel Training");
MODULE_LICENSE("Dual BSD/GPL");
static unsigned int msg_count = 1;
static int __init hello_init(void)
{
print_hello();
if (msg_count > 10) {
pr_err("Error: msg_count too large (%d > 10)\n", msg_count);
return -EINVAL;
}
if (msg_count == 0 || msg_count >= 5) {
pr_warn("Warning: msg_count = %d (msg_count == 0 or 5 <= msg_count <= 10)\n", msg_count);
}
print_hello(msg_count);
return 0;
}
@@ -51,5 +62,8 @@ static void __exit hello_exit(void)
destroy_list();
}
module_param(msg_count, uint, 0444);
MODULE_PARM_DESC(msg_count, "Amount of hello world outputs on load");
module_init(hello_init);
module_exit(hello_exit);

View File

@@ -1,2 +1,2 @@
void print_hello(void);
void print_hello(int);
void destroy_list(void);

18
test.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
if [ -z "$1" ]; then
echo "Error: no script supplied"
echo "Usage: $0 path/to/testing/script"
exit 1
fi
while read l; do
if [ -z "$l" ]; then
continue;
fi;
echo "$ $l";
$($l);
echo -e ""
done < $1

33
tests/lab5-test Normal file
View File

@@ -0,0 +1,33 @@
insmod hello2.ko
insmod hello1.ko
insmod hello2.ko
rmmod hello2.ko
insmod hello2.ko msg_count=0
rmmod hello2.ko
insmod hello2.ko msg_count=1
rmmod hello2.ko
insmod hello2.ko msg_count=3
rmmod hello2.ko
insmod hello2.ko msg_count=5
rmmod hello2.ko
insmod hello2.ko msg_count=8
rmmod hello2.ko
insmod hello2.ko msg_count=10
rmmod hello2.ko
insmod hello2.ko msg_count=12
rmmod hello2.ko
insmod hello2.ko
rmmod hello1.ko
rmmod hello2.ko
rmmod hello1.ko