162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * DMA-BUF: dmabuf usage of all processes statistics. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __DMA_BUF_PROCESS_INFO_H 962306a36Sopenharmony_ci#define __DMA_BUF_PROCESS_INFO_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#ifdef CONFIG_DMABUF_PROCESS_INFO 1262306a36Sopenharmony_ci/** 1362306a36Sopenharmony_ci * init_dma_buf_task_info - init exp_pid and exp_task_comm of dma_buf 1462306a36Sopenharmony_ci * @buf: [in] pointer to struct dma_buf. If @buf IS_ERR_OR_NULL, 1562306a36Sopenharmony_ci * return with doing nothing. 1662306a36Sopenharmony_ci */ 1762306a36Sopenharmony_civoid init_dma_buf_task_info(struct dma_buf *buf); 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/** 2062306a36Sopenharmony_ci * dma_buf_exp_pid - return exp_pid of @buf 2162306a36Sopenharmony_ci * @buf: [in] pointer to struct dma_buf 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * Return 0 if @buf IS_ERR_OR_NULL, else return buf->exp_pid 2462306a36Sopenharmony_ci */ 2562306a36Sopenharmony_cipid_t dma_buf_exp_pid(const struct dma_buf *buf); 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/** 2862306a36Sopenharmony_ci * dma_buf_exp_task_comm - return exp_task_comm of @buf 2962306a36Sopenharmony_ci * @buf: [in] pointer to struct dma_buf 3062306a36Sopenharmony_ci * 3162306a36Sopenharmony_ci * Return NULL if @buf IS_ERR_OR_NULL, else return buf->exp_task_comm 3262306a36Sopenharmony_ci */ 3362306a36Sopenharmony_ciconst char *dma_buf_exp_task_comm(const struct dma_buf *buf); 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci/** 3662306a36Sopenharmony_ci * dma_buf_process_info_init_procfs - module init: create node in procfs 3762306a36Sopenharmony_ci */ 3862306a36Sopenharmony_civoid dma_buf_process_info_init_procfs(void); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/** 4162306a36Sopenharmony_ci * dma_buf_process_info_uninit_procfs - module exit: remove node in procfs 4262306a36Sopenharmony_ci */ 4362306a36Sopenharmony_civoid dma_buf_process_info_uninit_procfs(void); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci/** 4662306a36Sopenharmony_ci * dma_buf_process_info_init_debugfs - create debug node under @parent 4762306a36Sopenharmony_ci * in debugfs. 4862306a36Sopenharmony_ci * @parent: [in] pointer to struct dentry. If @parent IS_ERR_OR_NULL, 4962306a36Sopenharmony_ci * return -EINVAL 5062306a36Sopenharmony_ci * 5162306a36Sopenharmony_ci * Return 0 if success, otherwise return errno. 5262306a36Sopenharmony_ci * 5362306a36Sopenharmony_ci * Note that there is no related uninit function, since the debug node will 5462306a36Sopenharmony_ci * be removed in dma_buf_uninit_debugfs() when dma_buf_deinit() called. 5562306a36Sopenharmony_ci */ 5662306a36Sopenharmony_ciint dma_buf_process_info_init_debugfs(struct dentry *parent); 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#else /* CONFIG_DMABUF_PROCESS_INFO */ 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_cistatic inline void init_dma_buf_task_info(struct dma_buf *buf) {} 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cistatic inline pid_t dma_buf_exp_pid(const struct dma_buf *buf) 6362306a36Sopenharmony_ci{ 6462306a36Sopenharmony_ci return 0; 6562306a36Sopenharmony_ci} 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_cistatic inline const char *dma_buf_exp_task_comm(const struct dma_buf *buf) 6862306a36Sopenharmony_ci{ 6962306a36Sopenharmony_ci return NULL; 7062306a36Sopenharmony_ci} 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistatic inline void dma_buf_process_info_init_procfs(void) {} 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_cistatic inline void dma_buf_process_info_uninit_procfs(void) {} 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_cistatic inline int 7762306a36Sopenharmony_cidma_buf_process_info_init_debugfs(struct dentry *parent) 7862306a36Sopenharmony_ci{ 7962306a36Sopenharmony_ci return 0; 8062306a36Sopenharmony_ci} 8162306a36Sopenharmony_ci#endif /* CONFIG_DMABUF_PROCESS_INFO */ 8262306a36Sopenharmony_ci#endif /* __DMA_BUF_PROCESS_INFO_H */ 8362306a36Sopenharmony_ci 84