![Thomas Gleixner](/assets/img/avatar_default.png)
Based on 1 normalized pattern(s): this software is licensed under the terms of the gnu general public license version 2 as published by the free software foundation and may be copied distributed and modified under those terms 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 extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 285 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190529141900.642774971@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
71 lines
1.8 KiB
C
71 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2015-2016, Linaro Limited
|
|
*/
|
|
#ifndef TEE_PRIVATE_H
|
|
#define TEE_PRIVATE_H
|
|
|
|
#include <linux/cdev.h>
|
|
#include <linux/completion.h>
|
|
#include <linux/device.h>
|
|
#include <linux/kref.h>
|
|
#include <linux/mutex.h>
|
|
#include <linux/types.h>
|
|
|
|
/**
|
|
* struct tee_shm_pool - shared memory pool
|
|
* @private_mgr: pool manager for shared memory only between kernel
|
|
* and secure world
|
|
* @dma_buf_mgr: pool manager for shared memory exported to user space
|
|
*/
|
|
struct tee_shm_pool {
|
|
struct tee_shm_pool_mgr *private_mgr;
|
|
struct tee_shm_pool_mgr *dma_buf_mgr;
|
|
};
|
|
|
|
#define TEE_DEVICE_FLAG_REGISTERED 0x1
|
|
#define TEE_MAX_DEV_NAME_LEN 32
|
|
|
|
/**
|
|
* struct tee_device - TEE Device representation
|
|
* @name: name of device
|
|
* @desc: description of device
|
|
* @id: unique id of device
|
|
* @flags: represented by TEE_DEVICE_FLAG_REGISTERED above
|
|
* @dev: embedded basic device structure
|
|
* @cdev: embedded cdev
|
|
* @num_users: number of active users of this device
|
|
* @c_no_user: completion used when unregistering the device
|
|
* @mutex: mutex protecting @num_users and @idr
|
|
* @idr: register of shared memory object allocated on this device
|
|
* @pool: shared memory pool
|
|
*/
|
|
struct tee_device {
|
|
char name[TEE_MAX_DEV_NAME_LEN];
|
|
const struct tee_desc *desc;
|
|
int id;
|
|
unsigned int flags;
|
|
|
|
struct device dev;
|
|
struct cdev cdev;
|
|
|
|
size_t num_users;
|
|
struct completion c_no_users;
|
|
struct mutex mutex; /* protects num_users and idr */
|
|
|
|
struct idr idr;
|
|
struct tee_shm_pool *pool;
|
|
};
|
|
|
|
int tee_shm_init(void);
|
|
|
|
int tee_shm_get_fd(struct tee_shm *shm);
|
|
|
|
bool tee_device_get(struct tee_device *teedev);
|
|
void tee_device_put(struct tee_device *teedev);
|
|
|
|
void teedev_ctx_get(struct tee_context *ctx);
|
|
void teedev_ctx_put(struct tee_context *ctx);
|
|
|
|
#endif /*TEE_PRIVATE_H*/
|