#include #include #include #include #include #include #include #include #include #include #include #include uint64_t get_basetimer(void) { uint32_t h = 0; uint32_t l = 0; uint32_t h1 = 0; // unsigned long flags; //asm volatile ("mfmsr %0":"=r"(flags)); //asm volatile ("mtmsr %0"::"r"(flags & ~MSR_EE):"memory"); asm volatile("loop:\n" "mftbu %0 \n" "mftb %1 \n" "mftbu %2 \n" "cmpw %0,%2\n" "bne loop\n" :"=r"(h), "=r"(l), "=r"(h1):); //asm volatile ("mtmsr %0"::"r"(flags):"memory"); return (((uint64_t)h) << 32) | l; } void dump_msghdr(struct msghdr* msg) { printk(KERN_DEBUG "msghdr.msg_name: %p\n", msg->msg_name); printk(KERN_DEBUG "msghdr.msg_namelen: %d\n", msg->msg_namelen); printk(KERN_DEBUG "msghdr.msg_iov: %p\n", msg->msg_iov); printk(KERN_DEBUG "msghdr.msg_iovlen: %d\n", msg->msg_iovlen); printk(KERN_DEBUG "msghdr.msg_control: %p\n", msg->msg_control); printk(KERN_DEBUG "msghdr.msg_controllen: %d\n", msg->msg_controllen); printk(KERN_DEBUG "msghdr.msg_flags: 0x%x\n", msg->msg_flags); }