Lines Matching defs:c2dev
42 int c2_pd_alloc(struct c2_dev *c2dev, int privileged, struct c2_pd *pd)
47 spin_lock(&c2dev->pd_table.lock);
48 obj = find_next_zero_bit(c2dev->pd_table.table, c2dev->pd_table.max,
49 c2dev->pd_table.last);
50 if (obj >= c2dev->pd_table.max)
51 obj = find_first_zero_bit(c2dev->pd_table.table,
52 c2dev->pd_table.max);
53 if (obj < c2dev->pd_table.max) {
55 __set_bit(obj, c2dev->pd_table.table);
56 c2dev->pd_table.last = obj+1;
57 if (c2dev->pd_table.last >= c2dev->pd_table.max)
58 c2dev->pd_table.last = 0;
61 spin_unlock(&c2dev->pd_table.lock);
65 void c2_pd_free(struct c2_dev *c2dev, struct c2_pd *pd)
67 spin_lock(&c2dev->pd_table.lock);
68 __clear_bit(pd->pd_id, c2dev->pd_table.table);
69 spin_unlock(&c2dev->pd_table.lock);
72 int __devinit c2_init_pd_table(struct c2_dev *c2dev)
75 c2dev->pd_table.last = 0;
76 c2dev->pd_table.max = c2dev->props.max_pd;
77 spin_lock_init(&c2dev->pd_table.lock);
78 c2dev->pd_table.table = kmalloc(BITS_TO_LONGS(c2dev->props.max_pd) *
80 if (!c2dev->pd_table.table)
82 bitmap_zero(c2dev->pd_table.table, c2dev->props.max_pd);
86 void __devexit c2_cleanup_pd_table(struct c2_dev *c2dev)
88 kfree(c2dev->pd_table.table);