30/09/2018, 19:53

Operating System Concept 9th bài tập

Mọi người cho mình hỏi, mình vừa đọc xong chương II của cuốn Operating System Concept 9th, thấy có bài tập lập trình ở trang 96. Không biết có bạn nào có kinh nghiệm, có thể chỉ mình cách chạy đoạn code này ko, mình ko biết chạy nó bằng cách nào cả.

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>

struct birthday {
  int day;
  int month;
  int year;
  struct list_head list;
};

static LIST_HEAD(birthday_list);

int simple_init(void) {
  struct birthday *people[3];
  struct birthday *ptr;

  people[0] = kmalloc(sizeof(struct birthday), GFP_KERNEL);
  people[0]->day = 10;
  people[0]->month = 2;
  people[0]->year = 1972;
  INIT_LIST_HEAD(&people[0]->list);
  list_add_tail(&people[0]->list, &birthday_list);

  people[1] = kmalloc(sizeof(struct birthday), GFP_KERNEL);
  people[1]->day = 2;
  people[1]->month = 1;
  people[1]->year = 1978;
  INIT_LIST_HEAD(&people[1]->list);
  list_add_tail(&people[1]->list, &birthday_list);

  people[2] = kmalloc(sizeof(struct birthday), GFP_KERNEL);
  people[2]->day = 8;
  people[2]->month = 3;
  people[2]->year = 1972;
  INIT_LIST_HEAD(&people[2]->list);
  list_add_tail(&people[2]->list, &birthday_list);

  printk(KERN_INFO "Loading Module
");

  list_for_each_entry(ptr, &birthday_list, list) {
    printk(KERN_INFO "%d/%d/%d
", ptr->day, ptr->month, ptr->year);
  }

  return 0;
}

void simple_exit(void) {
  struct birthday *ptr, *next;

  printk(KERN_INFO "Removing Module
");

  list_for_each_entry_safe(ptr, next, &birthday_list, list) {
    printk(KERN_INFO "Deleting %d/%d/%d
", ptr->day, ptr->month, ptr->year);
    list_del(&ptr->list);
    kfree(ptr);
  }
}

module_init(simple_init);
module_exit(simple_exit);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Simple Module");
MODULE_AUTHOR("SGG");`
Bài liên quan
0