功能说明:
驱动:驱动创建一个netlink,然后与应用程序的通信。当收到应用程序的信息时,驱动会打印相关的信息,然后广播一条信息出去。
应用程序:应用程序会每隔10S向驱动发送一条信息。然后接受驱动发送出来的所有信息。
驱动程序代码:
#include <linux/kernel.h>
#include <linux/module.h>
#include <net/net_namespace.h>
#include <linux/netlink.h>
#include <net/sock.h>
#define NETLINK_TEST (20)
#define BUFF_SIZE (64)
#define USER_GROUP (1)
static struct sock *netlink_test_sk;
struct mutex receive_mutex;
struct work_struct netlink_broad_work;
static int netlink_broad_send_msg(void)
{
struct sk_buff *nl_skb = NULL;
struct nlmsghdr *nlh = NULL;
static int broad_count = 1;
int ret = 0;
char data[BUFF_SIZE] = {0};
printk("%s %s %d: start netlink_broad_send_msg.\n", __FILE__, __func__, __LINE__);
nl_skb = nlmsg_new(BUFF_SIZE, GFP_ATOMIC);
if (nl_skb == NULL)
{
printk("%s %s %d: net