[procps] vm.min_free_kbytes is removed in sysctl.conf"
[vuplus_openvuplus_3.0] / meta-openvuplus / recipes-core / udev / udev-124 / udevtrigger_add_devname_filtering.patch
1 diff -pru udev-124.orig/udevtrigger.c udev-124/udevtrigger.c
2 --- udev-124.orig/udevtrigger.c 2008-06-12 06:24:30.000000000 +0100
3 +++ udev-124/udevtrigger.c      2008-07-07 15:10:09.000000000 +0100
4 @@ -42,6 +42,8 @@ static int dry_run;
5  LIST_HEAD(device_list);
6  LIST_HEAD(filter_subsystem_match_list);
7  LIST_HEAD(filter_subsystem_nomatch_list);
8 +LIST_HEAD(filter_kernel_match_list);
9 +LIST_HEAD(filter_kernel_nomatch_list);
10  LIST_HEAD(filter_attr_match_list);
11  LIST_HEAD(filter_attr_nomatch_list);
12  static int sock = -1;
13 @@ -331,6 +333,26 @@ static int attr_match(const char *path, 
14         return 0;
15  }
16  
17 +static int kernel_filtered(const char *kernel)
18 +{
19 +       struct name_entry *loop_name;
20 +
21 +       /* skip devices matching the prohibited kernel device names */
22 +       list_for_each_entry(loop_name, &filter_kernel_nomatch_list, node)
23 +               if (fnmatch(loop_name->name, kernel, 0) == 0)
24 +                       return 1;
25 +
26 +       /* skip devices not matching the listed kernel device names */
27 +       if (!list_empty(&filter_kernel_match_list)) {
28 +               list_for_each_entry(loop_name, &filter_kernel_match_list, node)
29 +                       if (fnmatch(loop_name->name, kernel, 0) == 0)
30 +                               return 0;
31 +               return 1;
32 +       }
33 +
34 +       return 0;
35 +}
36 +
37  static int attr_filtered(const char *path)
38  {
39         struct name_entry *loop_name;
40 @@ -409,6 +431,9 @@ static void scan_subsystem(const char *s
41                                         if (dent2->d_name[0] == '.')
42                                                 continue;
43  
44 +                                       if (kernel_filtered(dent2->d_name))
45 +                                               continue;
46 +
47                                         strlcpy(dirname2, dirname, sizeof(dirname2));
48                                         strlcat(dirname2, "/", sizeof(dirname2));
49                                         strlcat(dirname2, dent2->d_name, sizeof(dirname2));
50 @@ -465,6 +490,9 @@ static void scan_block(void)
51                                         if (!strcmp(dent2->d_name,"device"))
52                                                 continue;
53  
54 +                                       if (kernel_filtered(dent2->d_name))
55 +                                               continue;
56 +
57                                         strlcpy(dirname2, dirname, sizeof(dirname2));
58                                         strlcat(dirname2, "/", sizeof(dirname2));
59                                         strlcat(dirname2, dent2->d_name, sizeof(dirname2));
60 @@ -576,6 +604,8 @@ int udevtrigger(int argc, char *argv[], 
61                 { "subsystem-nomatch", 1, NULL, 'S' },
62                 { "attr-match", 1, NULL, 'a' },
63                 { "attr-nomatch", 1, NULL, 'A' },
64 +               { "kernel-match", 1, NULL, 'k' },
65 +               { "kernel-nomatch", 1, NULL, 'K' },
66                 { "env", 1, NULL, 'e' },
67                 {}
68         };
69 @@ -622,6 +652,12 @@ int udevtrigger(int argc, char *argv[], 
70                 case 'A':
71                         name_list_add(&filter_attr_nomatch_list, optarg, 0);
72                         break;
73 +               case 'k':
74 +                       name_list_add(&filter_kernel_match_list, optarg, 0);
75 +                       break;
76 +               case 'K':
77 +                       name_list_add(&filter_kernel_nomatch_list, optarg, 0);
78 +                       break;
79                 case 'h':
80                         printf("Usage: udevadm trigger OPTIONS\n"
81                                "  --verbose                       print the list of devices while running\n"
82 @@ -632,6 +668,8 @@ int udevtrigger(int argc, char *argv[], 
83                                "  --env=<KEY>=<value>             pass an additional key (works only with --socket=)\n"
84                                "  --subsystem-match=<subsystem>   trigger devices from a matching subystem\n"
85                                "  --subsystem-nomatch=<subsystem> exclude devices from a matching subystem\n"
86 +                              "  --kernel-match=<subsystem>      trigger devices from a matching kernel device name\n"
87 +                              "  --kernel-nomatch=<subsystem>    exclude devices from a matching kernel device name\n"
88                                "  --attr-match=<file[=<value>]>   trigger devices with a matching sysfs\n"
89                                "                                  attribute\n"
90                                "  --attr-nomatch=<file[=<value>]> exclude devices with a matching sysfs\n"
91 @@ -701,6 +739,8 @@ int udevtrigger(int argc, char *argv[], 
92  exit:
93         name_list_cleanup(&filter_subsystem_match_list);
94         name_list_cleanup(&filter_subsystem_nomatch_list);
95 +       name_list_cleanup(&filter_kernel_match_list);
96 +       name_list_cleanup(&filter_kernel_nomatch_list);
97         name_list_cleanup(&filter_attr_match_list);
98         name_list_cleanup(&filter_attr_nomatch_list);
99