Skip to content

Commit 39d4ae7

Browse files
committed
Add kernel module .c file with compilation res
1 parent 5cf44d3 commit 39d4ae7

9 files changed

+123
-0
lines changed

Makefile

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
obj-m += net_device.o
2+
3+
all:
4+
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
5+
6+
clean:
7+
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
8+
rm -f *.c~
9+
rm -f test

Module.symvers

Whitespace-only changes.

modules.order

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/home/guy/projects/NetDevice/net_device.ko

net_device.c

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include <linux/module.h>
2+
#include <linux/kernel.h>
3+
#include <linux/init.h>
4+
#include <linux/netdevice.h>
5+
#include <linux/etherdevice.h>
6+
7+
static struct net_device *netdev;
8+
9+
static int my_netdev_open(struct net_device *dev)
10+
{
11+
printk(KERN_INFO "my_netdev: device opened\n");
12+
netif_start_queue(dev);
13+
return 0;
14+
}
15+
16+
static int my_netdev_release(struct net_device *dev)
17+
{
18+
printk(KERN_INFO "my_netdev: device released\n");
19+
netif_stop_queue(dev);
20+
return 0;
21+
}
22+
23+
static netdev_tx_t my_netdev_xmit(struct sk_buff *skb, struct net_device *dev)
24+
{
25+
printk(KERN_INFO "my_netdev: packet transmitted\n");
26+
dev_kfree_skb(skb);
27+
return NETDEV_TX_OK;
28+
}
29+
30+
static const struct net_device_ops my_netdev_ops = {
31+
.ndo_open = my_netdev_open,
32+
.ndo_stop = my_netdev_release,
33+
.ndo_start_xmit = my_netdev_xmit,
34+
};
35+
36+
static int __init my_netdev_init(void)
37+
{
38+
netdev = alloc_etherdev(0);
39+
if (!netdev) {
40+
printk(KERN_ERR "my_netdev: failed to allocate etherdev\n");
41+
return -ENOMEM;
42+
}
43+
44+
netdev->netdev_ops = &my_netdev_ops;
45+
strcpy(netdev->name, "my_netdev");
46+
47+
if (register_netdev(netdev)) {
48+
printk(KERN_ERR "my_netdev: failed to register netdev\n");
49+
free_netdev(netdev);
50+
return -EINVAL;
51+
}
52+
53+
printk(KERN_INFO "my_netdev: driver loaded\n");
54+
return 0;
55+
}
56+
57+
static void __exit my_netdev_exit(void)
58+
{
59+
unregister_netdev(netdev);
60+
free_netdev(netdev);
61+
printk(KERN_INFO "my_netdev: driver unloaded\n");
62+
}
63+
64+
module_init(my_netdev_init);
65+
module_exit(my_netdev_exit);
66+
MODULE_AUTHOR("Guy Davidi");
67+
MODULE_LICENSE("GPL");

net_device.ko

342 KB
Binary file not shown.

net_device.mod

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/home/guy/projects/NetDevice/net_device.o
2+

net_device.mod.c

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <linux/module.h>
2+
#define INCLUDE_VERMAGIC
3+
#include <linux/build-salt.h>
4+
#include <linux/elfnote-lto.h>
5+
#include <linux/vermagic.h>
6+
#include <linux/compiler.h>
7+
8+
BUILD_SALT;
9+
BUILD_LTO_INFO;
10+
11+
MODULE_INFO(vermagic, VERMAGIC_STRING);
12+
MODULE_INFO(name, KBUILD_MODNAME);
13+
14+
__visible struct module __this_module
15+
__section(".gnu.linkonce.this_module") = {
16+
.name = KBUILD_MODNAME,
17+
.init = init_module,
18+
#ifdef CONFIG_MODULE_UNLOAD
19+
.exit = cleanup_module,
20+
#endif
21+
.arch = MODULE_ARCH_INIT,
22+
};
23+
24+
#ifdef CONFIG_RETPOLINE
25+
MODULE_INFO(retpoline, "Y");
26+
#endif
27+
28+
static const struct modversion_info ____versions[]
29+
__used __section("__versions") = {
30+
{ 0x32e21920, "module_layout" },
31+
{ 0x78dfd8d2, "unregister_netdev" },
32+
{ 0xc61dab50, "free_netdev" },
33+
{ 0x777d7983, "register_netdev" },
34+
{ 0xe89b1ac0, "alloc_etherdev_mqs" },
35+
{ 0xeca961fe, "consume_skb" },
36+
{ 0x5b8239ca, "__x86_return_thunk" },
37+
{ 0x92997ed8, "_printk" },
38+
{ 0xbdfb6dbb, "__fentry__" },
39+
};
40+
41+
MODULE_INFO(depends, "");
42+
43+
44+
MODULE_INFO(srcversion, "3FCE99531E4FB4057BC2A04");

net_device.mod.o

49.2 KB
Binary file not shown.

net_device.o

294 KB
Binary file not shown.

0 commit comments

Comments
 (0)