* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef DEVMM_CHAN_HANDLERS_H
#define DEVMM_CHAN_HANDLERS_H
#include "devmm_proc_info.h"
#include "svm_kernel_msg.h"
struct devmm_chan_handlers_st {
int (*const chan_msg_processes)(struct devmm_svm_process *svm_proc, struct devmm_svm_heap *heap,
void *msg, u32 *ack_len);
u32 msg_size;
u32 extend_size;
u32 msg_bitmap;
};
extern struct devmm_chan_handlers_st devmm_channel_msg_processes[DEVMM_CHAN_MAX_ID];
extern struct devmm_chan_handlers_st devmm_channel_p2p_msg_processes[DEVMM_CHAN_MAX_ID];
int devmm_notify_device_close_process(struct devmm_svm_process *svm_pro,
u32 logical_devid, u32 phy_devid, u32 vfid);
int devmm_chan_send_msg_free_pages(struct devmm_chan_free_pages *free_info, struct devmm_svm_heap *heap,
struct devmm_svm_process *svm_proc, int shared_flag, u32 free_self);
void devmm_svm_free_share_page_msg(struct devmm_svm_process *svm_process, struct devmm_svm_heap *heap,
unsigned long start, u64 real_size, u32 *page_bitmap);
int devmm_dev_page_fault_get_vaflgs(struct devmm_svm_process *svm_process, struct devmm_svm_heap *heap,
struct devmm_chan_page_query *flg_msg);
int devmm_chan_update_msg_logic_id(struct devmm_svm_process *svm_proc, struct devmm_chan_msg_head *msg_head);
int devmm_chan_msg_dispatch(void *msg, u32 in_data_len, u32 out_data_len, u32 *ack_len,
const struct devmm_chan_handlers_st *msg_process);
#endif