你好我正在尝试使用kmalloc在Linux内核中分配内存

时间:2018-06-26 16:51:56

标签: linux-kernel kmalloc

我正在尝试使用kmalloc在Linux内核中分配内存。我的结构设计如下:

struct st_fetch_point {
    struct sk_buff *end_pkt ;
    struct sk_buff *start_pkt ;
    struct sk_buff *current_pkt ;
    struct st_fetch_point *next_fortp ;
    struct st_fetch_point *next_consec ;
};

我创建了一个类型为st_fetch_point的新结构,并尝试以以下方式分配内存并为成员指针分配值:

struct st_fetch_point *first_fetch_point;

first_fetch_point = kmalloc((sizeof(struct st_fetch_point)), GFP_ATOMIC);

if (!first_fetch_point)
        return -ENOMEM;

skb = tcp_send_head(meta_sk);

first_fetch_point->start_pkt = skb;
first_fetch_point->current_pkt = skb;
first_fetch_point->end_pkt = NULL;
first_fetch_point->next_fortp = NULL;
first_fetch_point->next_consec = NULL;

但是,每次进入kmalloc()执行行时,内核似乎都冻结了。我正在研究ubuntu 14.04,确实可以解决。我检查了syslog和kernlog文件,但未发现与冻结有关的任何异常消息。 kmalloc()分配方法有什么问题吗?

0 个答案:

没有答案