Lines Matching +full:1 +full:- +full:255

1 // SPDX-License-Identifier: GPL-2.0
28 } *probes[255];
36 unsigned int n = MAJOR(dev + range - 1) - MAJOR(dev) + 1; in kobj_map()
41 if (n > 255) in kobj_map()
42 n = 255; in kobj_map()
46 return -ENOMEM; in kobj_map()
49 p->owner = module; in kobj_map()
50 p->get = probe; in kobj_map()
51 p->lock = lock; in kobj_map()
52 p->dev = dev; in kobj_map()
53 p->range = range; in kobj_map()
54 p->data = data; in kobj_map()
56 mutex_lock(domain->lock); in kobj_map()
57 for (i = 0, p -= n; i < n; i++, p++, index++) { in kobj_map()
58 struct probe **s = &domain->probes[index % 255]; in kobj_map()
59 while (*s && (*s)->range < range) in kobj_map()
60 s = &(*s)->next; in kobj_map()
61 p->next = *s; in kobj_map()
64 mutex_unlock(domain->lock); in kobj_map()
70 unsigned int n = MAJOR(dev + range - 1) - MAJOR(dev) + 1; in kobj_unmap()
75 if (n > 255) in kobj_unmap()
76 n = 255; in kobj_unmap()
78 mutex_lock(domain->lock); in kobj_unmap()
81 for (s = &domain->probes[index % 255]; *s; s = &(*s)->next) { in kobj_unmap()
83 if (p->dev == dev && p->range == range) { in kobj_unmap()
84 *s = p->next; in kobj_unmap()
91 mutex_unlock(domain->lock); in kobj_unmap()
102 mutex_lock(domain->lock); in kobj_lookup()
103 for (p = domain->probes[MAJOR(dev) % 255]; p; p = p->next) { in kobj_lookup()
108 if (p->dev > dev || p->dev + p->range - 1 < dev) in kobj_lookup()
110 if (p->range - 1 >= best) in kobj_lookup()
112 if (!try_module_get(p->owner)) in kobj_lookup()
114 owner = p->owner; in kobj_lookup()
115 data = p->data; in kobj_lookup()
116 probe = p->get; in kobj_lookup()
117 best = p->range - 1; in kobj_lookup()
118 *index = dev - p->dev; in kobj_lookup()
119 if (p->lock && p->lock(dev, data) < 0) { in kobj_lookup()
123 mutex_unlock(domain->lock); in kobj_lookup()
125 /* Currently ->owner protects _only_ ->probe() itself. */ in kobj_lookup()
131 mutex_unlock(domain->lock); in kobj_lookup()
147 base->dev = 1; in kobj_map_init()
148 base->range = ~0; in kobj_map_init()
149 base->get = base_probe; in kobj_map_init()
150 for (i = 0; i < 255; i++) in kobj_map_init()
151 p->probes[i] = base; in kobj_map_init()
152 p->lock = lock; in kobj_map_init()