6.下面的代码是 linux kernel的代码,请指出其中的错误来: struct student{ int id; char name[20]; struct list_head list; }; static LIST_HEAD(student_list); static DEFINE_MUTEX(student_mutex); static int add_student(struct student *stu) { struct student *new_stu = NULL; if(!stu) { printk(KERN_ ERR " Invalid argument\n"); return -EINVAL; } if (stu->id <= 0){ printk(KERN_ ERR "Invalid id\n"); return -EINVAL; } if(!mutex_trylock(&student_mutex)){ printk(KERN_INFO "Failed to lock mutex\n"); return-EBUSY; } new_stu = kmalloc(sizeof(struct student), GFP_KERNEL); if(!new_stu) { printk(KERN_ERR "Failed to allocate memory\n"); return -ENOMEM; *new_stu= *stu; list_add_ tail(&new_stu->list, &student_list); printk(KERN_INFO "Added student: id=%d, name-%s\n", stu->id, stu->name); mutex_unlock(&student_mutex); return 0; }
时间: 2023-12-06 09:42:47 浏览: 122
以下是一个简单的C语言学生成绩管理系统的示例代码:.docx
有几个错误:
1. 第20行,缺少右括号,应该是 `return -ENOMEM; }`
2. 第22行,赋值语句 `*new_stu= *stu;` 应该在 `kmalloc` 成功之后执行。
3. 第24行,应该是 `list_add_tail(&new_stu->list, &student_list);`,`list_add_ tail` 应该是笔误。
4. 第27行,缺少空格,应该是 `return -EBUSY;`,这样才符合代码风格。
5. 第29行,缺少空格,应该是 `return 0;`,这样才符合代码风格。
阅读全文