idp 67 lib/util/idtree.c static struct idr_layer *alloc_layer(struct idr_context *idp) idp 71 lib/util/idtree.c if (!(p = idp->id_free)) idp 73 lib/util/idtree.c idp->id_free = p->ary[0]; idp 74 lib/util/idtree.c idp->id_free_cnt--; idp 85 lib/util/idtree.c static void free_layer(struct idr_context *idp, struct idr_layer *p) idp 87 lib/util/idtree.c p->ary[0] = idp->id_free; idp 88 lib/util/idtree.c idp->id_free = p; idp 89 lib/util/idtree.c idp->id_free_cnt++; idp 92 lib/util/idtree.c static int idr_pre_get(struct idr_context *idp) idp 94 lib/util/idtree.c while (idp->id_free_cnt < IDR_FREE_MAX) { idp 95 lib/util/idtree.c struct idr_layer *pn = talloc_zero(idp, struct idr_layer); idp 98 lib/util/idtree.c free_layer(idp, pn); idp 103 lib/util/idtree.c static int sub_alloc(struct idr_context *idp, void *ptr, int *starting_id) idp 115 lib/util/idtree.c p = idp->top; idp 116 lib/util/idtree.c l = idp->layers; idp 158 lib/util/idtree.c if (!(pn = alloc_layer(idp))) idp 189 lib/util/idtree.c static int idr_get_new_above_int(struct idr_context *idp, void *ptr, int starting_id) idp 194 lib/util/idtree.c idr_pre_get(idp); idp 198 lib/util/idtree.c p = idp->top; idp 199 lib/util/idtree.c layers = idp->layers; idp 201 lib/util/idtree.c if (!(p = alloc_layer(idp))) idp 213 lib/util/idtree.c if (!(pn = alloc_layer(idp))) { idp 218 lib/util/idtree.c for (pn = p; p && p != idp->top; pn = p) { idp 222 lib/util/idtree.c free_layer(idp, pn); idp 232 lib/util/idtree.c idp->top = p; idp 233 lib/util/idtree.c idp->layers = layers; idp 234 lib/util/idtree.c v = sub_alloc(idp, ptr, &id); idp 240 lib/util/idtree.c static int sub_remove(struct idr_context *idp, int shift, int id) idp 242 lib/util/idtree.c struct idr_layer *p = idp->top; idp 248 lib/util/idtree.c *++paa = &idp->top; idp 262 lib/util/idtree.c free_layer(idp, **paa); idp 266 lib/util/idtree.c idp->layers = 0; idp 272 lib/util/idtree.c static void *_idr_find(struct idr_context *idp, int id) idp 277 lib/util/idtree.c n = idp->layers * IDR_BITS; idp 278 lib/util/idtree.c p = idp->top; idp 296 lib/util/idtree.c static int _idr_remove(struct idr_context *idp, int id) idp 303 lib/util/idtree.c if (sub_remove(idp, (idp->layers - 1) * IDR_BITS, id) == -1) { idp 307 lib/util/idtree.c if ( idp->top && idp->top->count == 1 && idp 308 lib/util/idtree.c (idp->layers > 1) && idp 309 lib/util/idtree.c idp->top->ary[0]) { idp 311 lib/util/idtree.c p = idp->top->ary[0]; idp 312 lib/util/idtree.c idp->top->bitmap = idp->top->count = 0; idp 313 lib/util/idtree.c free_layer(idp, idp->top); idp 314 lib/util/idtree.c idp->top = p; idp 315 lib/util/idtree.c --idp->layers; idp 317 lib/util/idtree.c while (idp->id_free_cnt >= IDR_FREE_MAX) { idp 318 lib/util/idtree.c p = alloc_layer(idp); idp 342 lib/util/idtree.c _PUBLIC_ int idr_get_new(struct idr_context *idp, void *ptr, int limit) idp 344 lib/util/idtree.c int ret = idr_get_new_above_int(idp, ptr, 0); idp 346 lib/util/idtree.c idr_remove(idp, ret); idp 356 lib/util/idtree.c _PUBLIC_ int idr_get_new_above(struct idr_context *idp, void *ptr, int starting_id, int limit) idp 358 lib/util/idtree.c int ret = idr_get_new_above_int(idp, ptr, starting_id); idp 360 lib/util/idtree.c idr_remove(idp, ret); idp 369 lib/util/idtree.c _PUBLIC_ int idr_get_new_random(struct idr_context *idp, void *ptr, int limit) idp 376 lib/util/idtree.c id = idr_get_new_above(idp, ptr, 1+(generate_random() % limit), limit); idp 378 lib/util/idtree.c id = idr_get_new_above(idp, ptr, 1+(generate_random()%(limit/2)), limit); idp 387 lib/util/idtree.c _PUBLIC_ void *idr_find(struct idr_context *idp, int id) idp 389 lib/util/idtree.c return _idr_find(idp, id); idp 395 lib/util/idtree.c _PUBLIC_ int idr_remove(struct idr_context *idp, int id) idp 398 lib/util/idtree.c ret = _idr_remove((struct idr_context *)idp, id); idp 727 lib/util/util.h _PUBLIC_ int idr_get_new(struct idr_context *idp, void *ptr, int limit); idp 733 lib/util/util.h _PUBLIC_ int idr_get_new_above(struct idr_context *idp, void *ptr, int starting_id, int limit); idp 738 lib/util/util.h _PUBLIC_ int idr_get_new_random(struct idr_context *idp, void *ptr, int limit); idp 743 lib/util/util.h _PUBLIC_ void *idr_find(struct idr_context *idp, int id); idp 748 lib/util/util.h _PUBLIC_ int idr_remove(struct idr_context *idp, int id); idp 25 source3/modules/vfs_aixacl_util.c struct ace_id *idp; idp 54 source3/modules/vfs_aixacl_util.c idp = id_nxt(acl_entry->ace_id); idp 56 source3/modules/vfs_aixacl_util.c (acl_entry->ace_type == ACC_PERMIT)) && (idp != id_last(acl_entry))) { idp 61 source3/modules/vfs_aixacl_util.c idp = acl_entry->ace_id; idp 62 source3/modules/vfs_aixacl_util.c DEBUG(10,("idp->id_data is %d\n",idp->id_data[0])); idp 74 source3/modules/vfs_aixacl_util.c DEBUG(10,("idp->id_type is %d\n",idp->id_type)); idp 77 source3/modules/vfs_aixacl_util.c ace->a_type = idp->id_type; idp 81 source3/modules/vfs_aixacl_util.c ace->uid = idp->id_data[0]; idp 88 source3/modules/vfs_aixacl_util.c ace->gid = idp->id_data[0];