#ifndef BUFF_IOCTL_H
#define BUFF_IOCTL_H
#include <linux/ioctl.h>
#include "hal_pkg/buff_pkg.h"
struct xsm_reg_arg {
int algo;
unsigned int priv_flag;
unsigned long pool_size;
unsigned int block_size;
unsigned int key_len;
const char *key;
};
struct xsm_task_arg {
int pool_id;
int pid;
GroupShareAttr attr;
};
struct xsm_task_attach_arg {
int pool_id;
int timeout;
unsigned long long uid;
unsigned int cache_type;
};
struct xsm_block_alloc_arg {
unsigned long flag;
unsigned long size;
unsigned long offset;
unsigned int blkid;
};
struct xsm_block_free_arg {
unsigned long offset;
};
struct xsm_block_get_arg {
unsigned long offset;
unsigned long alloc_size;
unsigned long alloc_offset;
unsigned int blkid;
};
struct xsm_block_arg {
int pool_id;
union {
struct xsm_block_alloc_arg alloc;
struct xsm_block_free_arg free;
struct xsm_block_get_arg get;
};
};
struct xsm_pool_query_arg {
const char *key;
unsigned int key_len;
int pool_id;
};
struct xsm_query_pool_task_arg {
int pool_id;
int *pid;
int pid_num;
};
struct xsm_query_task_pool_arg {
union {
int type;
int query_num;
};
int pid;
int *pool_id;
int pool_num;
};
struct xsm_prop_op_arg {
const char *prop;
unsigned int prop_len;
int owner;
int pool_id;
int op;
unsigned long value;
};
struct xsm_poll_exit_task_arg {
int pool_id;
unsigned long long uid;
};
struct xsm_cache_create_arg {
int pool_id;
unsigned int dev_id;
unsigned int mem_flag;
unsigned long long mem_size;
unsigned long long alloc_max_size;
};
struct xsm_cache_destroy_arg {
int pool_id;
unsigned int dev_id;
};
struct xsm_query_cache_arg {
int pool_id;
unsigned int dev_id;
unsigned int cache_cnt;
GrpQueryGroupAddrInfo *cache_buff;
};
struct xsm_query_pool_flag_arg {
int pool_id;
unsigned int priv_flag;
};
struct xsm_check_va_arg {
unsigned long va;
int pool_id;
int result;
};
#define XSMEM_POOL_REGISTER _IOW('X', 1, struct xsm_reg_arg)
#define XSMEM_POOL_UNREGISTER _IO('X', 2)
#define XSMEM_POOL_TASK_ADD _IOW('X', 3, struct xsm_task_arg)
#define XSMEM_POOL_TASK_DEL _IOW('X', 4, struct xsm_task_arg)
#define XSMEM_POOL_ATTACH _IOWR('X', 5, struct xsm_task_attach_arg)
#define XSMEM_POOL_DETACH _IO('X', 6)
#define XSMEM_BLOCK_ALLOC _IOWR('X', 7, struct xsm_block_arg)
#define XSMEM_BLOCK_FREE _IOW('X', 8, struct xsm_block_arg)
#define XSMEM_BLOCK_GET _IOWR('X', 9, struct xsm_block_arg)
#define XSMEM_BLOCK_PUT _IOW('X', 10, struct xsm_block_arg)
#define XSMEM_POOL_ID_QUERY _IOWR('X', 11, struct xsm_pool_query_arg)
#define XSMEM_POOL_NAME_QUERY _IOWR('X', 12, struct xsm_pool_query_arg)
#define XSMEM_POOL_TASK_QUERY _IOWR('X', 13, struct xsm_query_pool_task_arg)
#define XSMEM_POOL_TASK_ATTR_QUERY _IOWR('X', 14, struct xsm_task_arg)
#define XSMEM_TASK_POOL_QUERY _IOWR('X', 15, struct xsm_query_task_pool_arg)
#define XSMEM_PROP_OP _IOWR('X', 16, struct xsm_prop_op_arg)
#define XSMEM_POLL_EXIT_TASK _IOWR('X', 17, struct xsm_poll_exit_task_arg)
#define XSMEM_CACHE_CREATE _IOW('X', 18, struct xsm_cache_create_arg)
#define XSMEM_CACHE_DESTROY _IOW('X', 19, struct xsm_cache_destroy_arg)
#define XSMEM_CACHE_QUERY _IOWR('X', 20, struct xsm_query_cache_arg)
#define XSMEM_POOL_FLAG_QUERY _IOWR('X', 21, struct xsm_query_pool_flag_arg)
#define XSMEM_VADDR_CHECK _IOWR('X', 22, struct xsm_check_va_arg)
#define XSMEM_BLOCK_MAX_NUM 262144
#define XSHM_KEY_SIZE 128U
#define BUFF_NOCACHE 0U
#define BUFF_CACHE 1U
#define XSMEM_TASK_IN_POOL 0
#define XSMEM_TASK_ADDING_TO_POOL 1
#define XSMEM_PROP_OP_SET 0
#define XSMEM_PROP_OP_GET 1
#define XSMEM_PROP_OP_DEL 2
#define XSMEM_PROP_OWNER_TASK 0
#define XSMEM_PROP_OWNER_TASK_GRP 1
#define XSMEM_MAX_CMD 23
#define XSMEM_ALGO_EMPTY (-1)
#define XSMEM_ALGO_VMA 0
#define XSMEM_ALGO_SP 1
#define XSMEM_ALGO_CACHE_VMA 2
#define XSMEM_ALGO_CACHE_SP 3
#define XSMEM_ALGO_MAX 4
#ifndef EMU_ST
#define TASK_BLK_MAX_GET_NUM (32 * 1024)
#else
#define TASK_BLK_MAX_GET_NUM (1024)
#endif
#define DAVINCI_XSMEM_SUB_MODULE_NAME "XSMEM"
#endif