/* SPDX-License-Identifier: GPL-2.0 OR MIT */ /* Copyright 2018-2019 Qiang Yu <yuq825@gmail.com> */ #ifndef __LIMA_CTX_H__ #define __LIMA_CTX_H__ #include <linux/xarray.h> #include <linux/sched.h> #include "lima_device.h" struct lima_ctx { struct kref refcnt; struct lima_device *dev; struct lima_sched_context context[lima_pipe_num]; /* debug info */ char pname[TASK_COMM_LEN]; pid_t pid; }; struct lima_ctx_mgr { struct mutex lock; struct xarray handles; }; int lima_ctx_create(struct lima_device *dev, struct lima_ctx_mgr *mgr, u32 *id); int lima_ctx_free(struct lima_ctx_mgr *mgr, u32 id); struct lima_ctx *lima_ctx_get(struct lima_ctx_mgr *mgr, u32 id); void lima_ctx_put(struct lima_ctx *ctx); void lima_ctx_mgr_init(struct lima_ctx_mgr *mgr); void lima_ctx_mgr_fini(struct lima_ctx_mgr *mgr); #endif