Lines Matching refs:c2dev

43 int c2_pd_alloc(struct c2_dev *c2dev, int privileged, struct c2_pd *pd)  in c2_pd_alloc()  argument
48 spin_lock(&c2dev->pd_table.lock); in c2_pd_alloc()
49 obj = find_next_zero_bit(c2dev->pd_table.table, c2dev->pd_table.max, in c2_pd_alloc()
50 c2dev->pd_table.last); in c2_pd_alloc()
51 if (obj >= c2dev->pd_table.max) in c2_pd_alloc()
52 obj = find_first_zero_bit(c2dev->pd_table.table, in c2_pd_alloc()
53 c2dev->pd_table.max); in c2_pd_alloc()
54 if (obj < c2dev->pd_table.max) { in c2_pd_alloc()
56 __set_bit(obj, c2dev->pd_table.table); in c2_pd_alloc()
57 c2dev->pd_table.last = obj+1; in c2_pd_alloc()
58 if (c2dev->pd_table.last >= c2dev->pd_table.max) in c2_pd_alloc()
59 c2dev->pd_table.last = 0; in c2_pd_alloc()
62 spin_unlock(&c2dev->pd_table.lock); in c2_pd_alloc()
66 void c2_pd_free(struct c2_dev *c2dev, struct c2_pd *pd) in c2_pd_free() argument
68 spin_lock(&c2dev->pd_table.lock); in c2_pd_free()
69 __clear_bit(pd->pd_id, c2dev->pd_table.table); in c2_pd_free()
70 spin_unlock(&c2dev->pd_table.lock); in c2_pd_free()
73 int c2_init_pd_table(struct c2_dev *c2dev) in c2_init_pd_table() argument
76 c2dev->pd_table.last = 0; in c2_init_pd_table()
77 c2dev->pd_table.max = c2dev->props.max_pd; in c2_init_pd_table()
78 spin_lock_init(&c2dev->pd_table.lock); in c2_init_pd_table()
79 c2dev->pd_table.table = kmalloc(BITS_TO_LONGS(c2dev->props.max_pd) * in c2_init_pd_table()
81 if (!c2dev->pd_table.table) in c2_init_pd_table()
83 bitmap_zero(c2dev->pd_table.table, c2dev->props.max_pd); in c2_init_pd_table()
87 void c2_cleanup_pd_table(struct c2_dev *c2dev) in c2_cleanup_pd_table() argument
89 kfree(c2dev->pd_table.table); in c2_cleanup_pd_table()