Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <linux/module.h>
- #include <linux/slab.h>
- #include <linux/list.h>
- #define SIZE 10
- static int elements = 0;
- static int values[SIZE];
- module_param_array(values, int, &elements, 0644);
- MODULE_PARM_DESC(values, "Wartosci poczatkowe kolejki FIFO");
- static LIST_HEAD(fifo);
- struct fifo_struct {
- int data;
- struct list_head fifo_element;
- };
- static void enqueue(int data)
- {
- struct fifo_struct *element = (struct fifo_struct *) kmalloc(sizeof(struct fifo_struct), GFP_KERNEL);
- if (!IS_ERR(element)) {
- element->data = data;
- INIT_LIST_HEAD(&element->fifo_element); //inicjalizacja wskaznikow w jej pojedynczym elemencie
- list_add_tail(&element->fifo_element, &fifo); //funckja dodajaca nowy element na przed elementem glownym(fifo)
- } else {
- pr_alert("Blad\n");
- }
- }
- static int __init program_init(void)
- {
- int i;
- pr_cont("Wartosci dodane:");
- for (i = 0; i < elements; i++) {
- enqueue(values[i]);
- pr_cont(" %d", values[i]);
- }
- pr_cont("\n");
- return 0;
- }
- static void __exit program_exit(void)
- {
- struct fifo_struct *element, *next;
- pr_cont("Wartosci zdjete:");
- list_for_each_entry_safe(element, next, &fifo, fifo_element) //funkcja przegladajaca liste za pomcoa wskaznika, podczas przegladania usuwa elementy
- {
- list_del(&element->fifo_element); //funcja usuwajaca element z listy
- pr_cont(" %d", element->data);
- kfree(element); //zwalnia pamiec przydzielona na element
- }
- pr_cont("\n");
- }
- module_init(program_init);
- module_exit(program_exit);
- MODULE_AUTHOR("Michal Ortyl, Piotr Putowski");
- MODULE_DESCRIPTION("3pkt, zadanie nr.3");
- MODULE_LICENSE("GPL");
Advertisement
Add Comment
Please, Sign In to add comment