1 | /* SPDX-License-Identifier: GPL-2.0 OR MIT */ |
---|---|
2 | /* Copyright 2018-2019 Qiang Yu <yuq825@gmail.com> */ |
3 | |
4 | #ifndef __LIMA_CTX_H__ |
5 | #define __LIMA_CTX_H__ |
6 | |
7 | #include <linux/xarray.h> |
8 | #include <linux/sched.h> |
9 | |
10 | #include "lima_device.h" |
11 | |
12 | struct lima_ctx { |
13 | struct kref refcnt; |
14 | struct lima_device *dev; |
15 | struct lima_sched_context context[lima_pipe_num]; |
16 | atomic_t guilty; |
17 | |
18 | /* debug info */ |
19 | char pname[TASK_COMM_LEN]; |
20 | pid_t pid; |
21 | }; |
22 | |
23 | struct lima_ctx_mgr { |
24 | struct mutex lock; |
25 | struct xarray handles; |
26 | }; |
27 | |
28 | int lima_ctx_create(struct lima_device *dev, struct lima_ctx_mgr *mgr, u32 *id); |
29 | int lima_ctx_free(struct lima_ctx_mgr *mgr, u32 id); |
30 | struct lima_ctx *lima_ctx_get(struct lima_ctx_mgr *mgr, u32 id); |
31 | void lima_ctx_put(struct lima_ctx *ctx); |
32 | void lima_ctx_mgr_init(struct lima_ctx_mgr *mgr); |
33 | void lima_ctx_mgr_fini(struct lima_ctx_mgr *mgr); |
34 | |
35 | #endif |
36 |