• Home
  • Raw
  • Download

Lines Matching refs:gang

30 	struct spu_gang *gang;  in alloc_spu_gang()  local
32 gang = kzalloc(sizeof *gang, GFP_KERNEL); in alloc_spu_gang()
33 if (!gang) in alloc_spu_gang()
36 kref_init(&gang->kref); in alloc_spu_gang()
37 mutex_init(&gang->mutex); in alloc_spu_gang()
38 mutex_init(&gang->aff_mutex); in alloc_spu_gang()
39 INIT_LIST_HEAD(&gang->list); in alloc_spu_gang()
40 INIT_LIST_HEAD(&gang->aff_list_head); in alloc_spu_gang()
43 return gang; in alloc_spu_gang()
48 struct spu_gang *gang; in destroy_spu_gang() local
49 gang = container_of(kref, struct spu_gang, kref); in destroy_spu_gang()
50 WARN_ON(gang->contexts || !list_empty(&gang->list)); in destroy_spu_gang()
51 kfree(gang); in destroy_spu_gang()
54 struct spu_gang *get_spu_gang(struct spu_gang *gang) in get_spu_gang() argument
56 kref_get(&gang->kref); in get_spu_gang()
57 return gang; in get_spu_gang()
60 int put_spu_gang(struct spu_gang *gang) in put_spu_gang() argument
62 return kref_put(&gang->kref, &destroy_spu_gang); in put_spu_gang()
65 void spu_gang_add_ctx(struct spu_gang *gang, struct spu_context *ctx) in spu_gang_add_ctx() argument
67 mutex_lock(&gang->mutex); in spu_gang_add_ctx()
68 ctx->gang = get_spu_gang(gang); in spu_gang_add_ctx()
69 list_add(&ctx->gang_list, &gang->list); in spu_gang_add_ctx()
70 gang->contexts++; in spu_gang_add_ctx()
71 mutex_unlock(&gang->mutex); in spu_gang_add_ctx()
74 void spu_gang_remove_ctx(struct spu_gang *gang, struct spu_context *ctx) in spu_gang_remove_ctx() argument
76 mutex_lock(&gang->mutex); in spu_gang_remove_ctx()
77 WARN_ON(ctx->gang != gang); in spu_gang_remove_ctx()
80 gang->aff_flags &= ~AFF_OFFSETS_SET; in spu_gang_remove_ctx()
83 gang->contexts--; in spu_gang_remove_ctx()
84 mutex_unlock(&gang->mutex); in spu_gang_remove_ctx()
86 put_spu_gang(gang); in spu_gang_remove_ctx()