Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
ace684facc
|
|||
|
f11d2bc921
|
|||
|
331a1ecb0b
|
19
hello1.c
19
hello1.c
@@ -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)
|
||||
@@ -94,22 +93,14 @@ void destroy_list(void)
|
||||
curr_tl = next_tl;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(destroy_list);
|
||||
|
||||
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;
|
||||
@@ -122,17 +113,13 @@ void print_hello(void)
|
||||
current_tail->t_after = ktime_get();
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(print_hello);
|
||||
|
||||
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);
|
||||
|
||||
module_init(hello_init);
|
||||
module_exit(hello_exit);
|
||||
|
||||
15
hello2.c
15
hello2.c
@@ -40,9 +40,19 @@ 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 +61,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);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
void print_hello(void);
|
||||
void print_hello(int msg_count);
|
||||
void destroy_list(void);
|
||||
|
||||
18
test.sh
Executable file
18
test.sh
Executable 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
33
tests/lab5-test
Normal 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
|
||||
Reference in New Issue
Block a user