Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.35 KB | None | 0 0
  1. obj-m := zad4.o
  2. KERNELDIR = /lib/modules/$(shell uname -r)/build
  3.  
  4. default:
  5.     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
  6.  
  7. clean:
  8.     $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
  9.  
  10. zad4.c
  11. #include<linux/module.h>
  12. #include<linux/sysfs.h>
  13. #include<linux/kobject.h>
  14.  
  15. static struct kobject kernel_object;
  16. static int number;
  17. static const char attribute_name[] = "number";
  18.  
  19. static ssize_t number_show(struct kobject *kernel_object, struct attribute *attribute, char *buffer)
  20. {
  21.         return sprintf(buffer,"%d\n",number);
  22. }
  23.  
  24. static ssize_t number_store(struct kobject *kernel_object, struct attribute *attribute, const char *buffer, size_t count)
  25. {
  26.         sscanf(buffer,"%d",&number);
  27.         return count;
  28. }
  29.  
  30. static struct sysfs_ops operations = {
  31.         .show = number_show,
  32.         .store = number_store,
  33. };
  34.  
  35. static void number_release(struct kobject *kernel_object)
  36. {
  37.         pr_notice("Release function activated!\n");
  38. }
  39.  
  40. static struct attribute number_attribute = {
  41.         .name = attribute_name,
  42.         .mode = 0600
  43. };
  44.  
  45. static struct attribute *attributes[] = {
  46.         &number_attribute,
  47.         NULL
  48. };
  49.  
  50. static struct kobj_type ktype =
  51. {
  52.         .release = number_release,
  53.         .sysfs_ops = &operations,
  54.         .default_attrs = attributes,
  55. };
  56.  
  57. static int __init sysfs_test_init(void)
  58. {
  59.         kobject_init(&kernel_object,&ktype);
  60.         if(kobject_add(&kernel_object,&THIS_MODULE->mkobj.kobj,"test%d",2)) {
  61.             pr_alert("Error adding a kobject\n");
  62.             return -ENOMEM;
  63.         }
  64.         return 0;  
  65. }
  66.  
  67. static void __exit sysfs_test_exit(void)
  68. {
  69.         kobject_put(&kernel_object);
  70. }
  71.  
  72. module_init(sysfs_test_init);
  73. module_exit(sysfs_test_exit);
  74. MODULE_DESCRIPTION("A second kernel module demonstrating the usage of sysfs.");
  75. MODULE_LICENSE("GPL");
  76.  
  77.  
  78. //zad5
  79. #include<linux/module.h>
  80. #include<linux/sysfs.h>
  81. #include<linux/kobject.h>
  82.  
  83. static struct kobject kernel_object;
  84. static int number;
  85. static const char attribute_name[] = "number";
  86.  
  87. static ssize_t number_show(struct kobject *kernel_object, struct attribute *attribute, char *buffer)
  88. {
  89.         return sprintf(buffer,"%d\n",number);
  90. }
  91.  
  92. static ssize_t number_store(struct kobject *kernel_object, struct attribute *attribute, const char *buffer, size_t count)
  93. {
  94.         sscanf(buffer,"%d",&number);
  95.         return count;
  96. }
  97.  
  98. static struct sysfs_ops operations = {
  99.         .show = number_show,
  100.         .store = number_store,
  101. };
  102.  
  103. static void number_release(struct kobject *kernel_object)
  104. {
  105.         pr_notice("Release function activated!\n");
  106. }
  107.  
  108. static struct attribute number_attribute = {
  109.         .name = attribute_name,
  110.         .mode = 0600
  111. };
  112.  
  113. static struct attribute *attributes[] = {
  114.         &number_attribute,
  115.         NULL
  116. };
  117.  
  118. static struct kobj_type ktype =
  119. {
  120.         .release = number_release,
  121.         .sysfs_ops = &operations,
  122.         .default_attrs = attributes,
  123. };
  124.  
  125. static int __init sysfs_test_init(void)
  126. {
  127.         if(kobject_add(&kernel_object,NULL,"test%d",2))
  128.                 goto err;
  129.  
  130.         return 0;
  131.  
  132. err:
  133.         pr_alert("Error adding a kobject\n");
  134.         return -ENOMEM;
  135. }
  136.  
  137. static void __exit sysfs_test_exit(void)
  138. {
  139.         kobject_put(&kernel_object);
  140. }
  141.  
  142. module_init(sysfs_test_init);
  143. module_exit(sysfs_test_exit);
  144. MODULE_DESCRIPTION("A second kernel module demonstrating the usage of sysfs.");
  145. MODULE_LICENSE("GPL");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement