162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * access_tokenid.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2022-2023 Huawei Technologies Co., Ltd. All rights reserved. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef _ACCESS_TOKEN_ID_H 1062306a36Sopenharmony_ci#define _ACCESS_TOKEN_ID_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/ioctl.h> 1362306a36Sopenharmony_ci#include <linux/types.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define ACCESS_TOKEN_ID_IOCTL_BASE 'A' 1662306a36Sopenharmony_ci#define MAX_PERM_GROUP_NUM 64 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cienum { 1962306a36Sopenharmony_ci GET_TOKEN_ID = 1, 2062306a36Sopenharmony_ci SET_TOKEN_ID, 2162306a36Sopenharmony_ci GET_FTOKEN_ID, 2262306a36Sopenharmony_ci SET_FTOKEN_ID, 2362306a36Sopenharmony_ci ADD_PERMISSIONS, 2462306a36Sopenharmony_ci REMOVE_PERMISSIONS, 2562306a36Sopenharmony_ci GET_PERMISSION, 2662306a36Sopenharmony_ci SET_PERMISSION, 2762306a36Sopenharmony_ci ACCESS_TOKENID_MAX_NR 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_citypedef struct { 3162306a36Sopenharmony_ci unsigned int token_uniqueid : 20; 3262306a36Sopenharmony_ci unsigned int res : 5; 3362306a36Sopenharmony_ci unsigned int render_flag : 1; 3462306a36Sopenharmony_ci unsigned int dlp_flag : 1; 3562306a36Sopenharmony_ci unsigned int type : 2; 3662306a36Sopenharmony_ci unsigned int version : 3; 3762306a36Sopenharmony_ci} access_tokenid_inner; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_citypedef struct { 4062306a36Sopenharmony_ci uint32_t token; 4162306a36Sopenharmony_ci uint32_t op_code; 4262306a36Sopenharmony_ci bool is_granted; 4362306a36Sopenharmony_ci} ioctl_set_get_perm_data; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_citypedef struct { 4662306a36Sopenharmony_ci uint32_t token; 4762306a36Sopenharmony_ci uint32_t perm[MAX_PERM_GROUP_NUM]; 4862306a36Sopenharmony_ci} ioctl_add_perm_data; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cistruct token_perm_node { 5162306a36Sopenharmony_ci ioctl_add_perm_data perm_data; 5262306a36Sopenharmony_ci struct token_perm_node *left; 5362306a36Sopenharmony_ci struct token_perm_node *right; 5462306a36Sopenharmony_ci}; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci#define ACCESS_TOKENID_GET_TOKENID \ 5762306a36Sopenharmony_ci _IOR(ACCESS_TOKEN_ID_IOCTL_BASE, GET_TOKEN_ID, unsigned long long) 5862306a36Sopenharmony_ci#define ACCESS_TOKENID_SET_TOKENID \ 5962306a36Sopenharmony_ci _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_TOKEN_ID, unsigned long long) 6062306a36Sopenharmony_ci#define ACCESS_TOKENID_GET_FTOKENID \ 6162306a36Sopenharmony_ci _IOR(ACCESS_TOKEN_ID_IOCTL_BASE, GET_FTOKEN_ID, unsigned long long) 6262306a36Sopenharmony_ci#define ACCESS_TOKENID_SET_FTOKENID \ 6362306a36Sopenharmony_ci _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_FTOKEN_ID, unsigned long long) 6462306a36Sopenharmony_ci#define ACCESS_TOKENID_ADD_PERMISSIONS \ 6562306a36Sopenharmony_ci _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, ADD_PERMISSIONS, ioctl_add_perm_data) 6662306a36Sopenharmony_ci#define ACCESS_TOKENID_REMOVE_PERMISSIONS \ 6762306a36Sopenharmony_ci _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, REMOVE_PERMISSIONS, uint32_t) 6862306a36Sopenharmony_ci#define ACCESS_TOKENID_GET_PERMISSION \ 6962306a36Sopenharmony_ci _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, GET_PERMISSION, ioctl_set_get_perm_data) 7062306a36Sopenharmony_ci#define ACCESS_TOKENID_SET_PERMISSION \ 7162306a36Sopenharmony_ci _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_PERMISSION, ioctl_set_get_perm_data) 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci#endif /* _ACCESS_TOKEN_ID_H */ 74