Lines Matching defs:generator

10 	whenever someone messes with the generator.
12 Whenever a generator is searched for, generator_lock is held.
18 sGeneratorLock instead of a generator specific lock during
70 static mutex sLock = MUTEX_INITIALIZER("id generator");
73 /*! Create new generator.
81 id_generator* generator = new(std::nothrow) id_generator(name);
82 if (generator == NULL)
85 if (generator->name == NULL) {
86 delete generator;
90 sGenerators.Add(generator);
91 return generator;
97 create_id_internal(id_generator* generator)
101 TRACE(("create_id_internal(name: %s)\n", generator->name));
108 if ((generator->alloc_map[id / 8] & (1 << (id & 7))) == 0) {
111 generator->alloc_map[id / 8] |= 1 << (id & 7);
112 generator->num_ids++;
122 /*! Gets a generator by name, and acquires a reference to it.
132 id_generator* generator = iterator.Next();
134 if (!strcmp(generator->name, name)) {
136 generator->ref_count++;
137 return generator;
145 /*! Decrease ref_count, deleting generator if not used anymore */
147 release_generator(id_generator *generator)
149 TRACE(("release_generator(name: %s)\n", generator->name));
153 if (--generator->ref_count == 0) {
154 // no one messes with generator
155 if (generator->num_ids == 0) {
156 TRACE((" Destroy %s\n", generator->name));
157 // no IDs is allocated - destroy generator
158 sGenerators.Remove(generator);
159 delete generator;
183 // find generator, create new if not there
186 id_generator* generator = get_generator(name);
187 if (generator == NULL)
188 generator = create_generator(name);
192 if (generator == NULL)
196 int32 id = create_id_internal(generator);
198 release_generator(generator);
211 // find generator
214 id_generator* generator = get_generator(name);
218 if (generator == NULL) {
227 if ((generator->alloc_map[id / 8] & (1 << (id & 7))) == 0) {
228 dprintf("id %" B_PRIu32 " of generator %s wasn't allocated\n", id,
229 generator->name);
231 release_generator(generator);
235 generator->alloc_map[id / 8] &= ~(1 << (id & 7));
236 generator->num_ids--;
238 release_generator(generator);