/* Receive Message from Kernel */ static void nl_recv_msg(struct sk_buff *skb) { struct nlmsghdr *nlh = NULL; struct dispmgr_command_hdr cmd_hdr = {0, }; unsigned int hdr_size = sizeof(struct dispmgr_command_hdr); if (skb == NULL) { DRM_ERROR("kdispmgr: received null command.\n"); return; } nlh = (struct nlmsghdr *)skb->data; g_pid = nlh->nlmsg_pid; pr_debug("kdispmgr: received message from user mode\n"); memcpy((void *)(&cmd_hdr), NLMSG_DATA(nlh), hdr_size); if (cmd_hdr.data_size) cmd_hdr.data = NLMSG_DATA(nlh) + hdr_size; execute_recv_command(&cmd_hdr); }
/* Receive Message from Kernel */ static void nl_recv_msg(struct sk_buff *skb) { struct nlmsghdr *nlh = NULL; struct dispmgr_command_hdr cmd_hdr; unsigned int hdr_size = sizeof(struct dispmgr_command_hdr); if (skb == NULL) { printk("kdispmgr: received null command.\n"); return; } nlh = (struct nlmsghdr *)skb->data; g_pid = nlh->nlmsg_pid; memcpy((void *)(&cmd_hdr), NLMSG_DATA(nlh), hdr_size); if (cmd_hdr.data_size) { cmd_hdr.data = (uint64_t)(NLMSG_DATA(nlh) + hdr_size); } execute_recv_command(&cmd_hdr); }