Linux kernel 如何在内核模式下将char*转换为char[]

Linux kernel 如何在内核模式下将char*转换为char[],linux-kernel,kernel,Linux Kernel,Kernel,这是我的linux内核代码 当我尝试将char*name的val设置为结构中的字段时,得到null stuct中的值总是空的,但是如果我显式设置person->key_day=“11”;我没有得到空值。我想从char*day和char*name中获取值,然后分配给person->key\u day和person->value\u name。好心帮忙 typedef struct _birthday { char *key_day; char *value_name;

这是我的linux内核代码 当我尝试将char*name的val设置为结构中的字段时,得到null stuct中的值总是空的,但是如果我显式设置person->key_day=“11”;我没有得到空值。我想从char*day和char*name中获取值,然后分配给person->key\u day和person->value\u name。好心帮忙

     typedef struct _birthday {
     char *key_day;
     char *value_name;
        struct list_head list;
    }birthday;

    birthday *person;

    /* Declare and init the head of the linked list. */

    LIST_HEAD(birthday_list);

    void mymap(char *day , char *name)
    {

            /* Request malloc to the kernel. */
            person = kmalloc(sizeof(*person), GFP_KERNEL);

            /* Assign value to the struct. */
            person->key_day =  day;
            person->value_name = name;

            /* Init the list within the struct. */
            INIT_LIST_HEAD(&person->list);

            /* Add this struct to the tail of the list. */
            list_add_tail(&person->list, &birthday_list);

            //This print statement gives me null value.
            printk("\n New Entry %s , %s" , person->key_day , person->value_name );
    }

这更多的是一个C问题,而不是Linux内核特有的。你为什么要这样做?我在我的程序中使用了一个链表,一个结构的链表。我用你分配给结构生日的实际代码编辑了我的问题,但该结构包含指向字符数组的指针。您必须malloc将分配给这些指针的内存,然后将数据复制到分配的内存中,并将其分配给指针。谢谢peter,您能给我看一个小的eg代码吗。。这样我就有了一个想法